2017-03-01 19:48:01 +03:00
-- Cauldron mod, adds cauldrons.
-- TODO: Extinguish fire of burning entities
-- Convenience function because the cauldron nodeboxes are very similar
local create_cauldron_nodebox = function ( water_level )
local floor_y
if water_level == 0 then -- empty
floor_y = - 0.1875
elseif water_level == 1 then -- 1/3 filled
floor_y = 1 / 16
elseif water_level == 2 then -- 2/3 filled
floor_y = 4 / 16
elseif water_level == 3 then -- full
floor_y = 7 / 16
end
return {
2017-03-01 19:26:33 +03:00
type = " fixed " ,
fixed = {
{ - 0.5 , - 0.1875 , - 0.5 , - 0.375 , 0.5 , 0.5 } , -- Left wall
{ 0.375 , - 0.1875 , - 0.5 , 0.5 , 0.5 , 0.5 } , -- Right wall
{ - 0.375 , - 0.1875 , 0.375 , 0.375 , 0.5 , 0.5 } , -- Back wall
{ - 0.375 , - 0.1875 , - 0.5 , 0.375 , 0.5 , - 0.375 } , -- Front wall
2017-03-01 19:48:01 +03:00
{ - 0.5 , - 0.3125 , - 0.5 , 0.5 , floor_y , 0.5 } , -- Floor
2017-03-01 19:26:33 +03:00
{ - 0.5 , - 0.5 , - 0.5 , - 0.375 , - 0.3125 , - 0.25 } , -- Left front foot, part 1
{ - 0.375 , - 0.5 , - 0.5 , - 0.25 , - 0.3125 , - 0.375 } , -- Left front foot, part 2
{ - 0.5 , - 0.5 , 0.25 , - 0.375 , - 0.3125 , 0.5 } , -- Left back foot, part 1
{ - 0.375 , - 0.5 , 0.375 , - 0.25 , - 0.3125 , 0.5 } , -- Left back foot, part 2
{ 0.375 , - 0.5 , 0.25 , 0.5 , - 0.3125 , 0.5 } , -- Right back foot, part 1
{ 0.25 , - 0.5 , 0.375 , 0.375 , - 0.3125 , 0.5 } , -- Right back foot, part 2
{ 0.375 , - 0.5 , - 0.5 , 0.5 , - 0.3125 , - 0.25 } , -- Right front foot, part 1
{ 0.25 , - 0.5 , - 0.5 , 0.375 , - 0.3125 , - 0.375 } , -- Right front foot, part 2
}
2017-03-01 19:48:01 +03:00
}
end
local cauldron_nodeboxes = { }
for w = 0 , 3 do
cauldron_nodeboxes [ w ] = create_cauldron_nodebox ( w )
end
-- Empty cauldron
minetest.register_node ( " mcl_cauldrons:cauldron " , {
description = " Cauldron " ,
2017-03-02 23:55:25 +03:00
_doc_items_longdesc = " Cauldrons are used to store water and slowly fill up under rain. " ,
_doc_items_usagehelp = " Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. " ,
2017-03-01 19:48:01 +03:00
wield_image = " mcl_cauldrons_cauldron.png " ,
inventory_image = " mcl_cauldrons_cauldron.png " ,
drawtype = " nodebox " ,
paramtype = " light " ,
sunlight_propagates = true ,
groups = { pickaxey = 1 , deco_block = 1 } ,
node_box = cauldron_nodeboxes [ 0 ] ,
2017-03-01 19:26:33 +03:00
selection_box = { type = " regular " } ,
tiles = {
" mcl_cauldrons_cauldron_inner.png^mcl_cauldrons_cauldron_top.png " ,
" mcl_cauldrons_cauldron_inner.png^mcl_cauldrons_cauldron_bottom.png " ,
" mcl_cauldrons_cauldron_side.png "
} ,
sounds = mcl_sounds.node_sound_metal_defaults ( ) ,
_mcl_hardness = 2 ,
_mcl_blast_resistance = 10 ,
} )
2017-03-01 19:48:01 +03:00
-- Template function for cauldrons with water
local register_filled_cauldron = function ( water_level , description )
minetest.register_node ( " mcl_cauldrons:cauldron_ " .. water_level , {
description = description ,
2017-03-02 21:53:53 +03:00
_doc_items_create_entry = false ,
2017-03-01 19:48:01 +03:00
drawtype = " nodebox " ,
paramtype = " light " ,
sunlight_propagates = true ,
groups = { pickaxey = 1 , not_in_creative_inventory = 1 } ,
node_box = cauldron_nodeboxes [ water_level ] ,
collision_box = cauldron_nodeboxes [ 0 ] ,
selection_box = { type = " regular " } ,
tiles = {
" default_water.png^mcl_cauldrons_cauldron_top.png " ,
" mcl_cauldrons_cauldron_inner.png^mcl_cauldrons_cauldron_bottom.png " ,
" mcl_cauldrons_cauldron_side.png "
} ,
sounds = mcl_sounds.node_sound_metal_defaults ( ) ,
2017-03-01 21:07:50 +03:00
drop = " mcl_cauldrons:cauldron " ,
2017-03-01 19:48:01 +03:00
_mcl_hardness = 2 ,
_mcl_blast_resistance = 10 ,
} )
end
-- Filled crauldrons (3 levels)
2017-03-01 20:06:26 +03:00
register_filled_cauldron ( 1 , " Cauldron (One Third Full) " )
register_filled_cauldron ( 2 , " Cauldron (Two Thirds Full) " )
register_filled_cauldron ( 3 , " Cauldron (Full) " )
2017-03-01 19:48:01 +03:00
2017-03-01 19:26:33 +03:00
minetest.register_craft ( {
output = " mcl_cauldrons:cauldron " ,
recipe = {
{ " mcl_core:iron_ingot " , " " , " mcl_core:iron_ingot " } ,
{ " mcl_core:iron_ingot " , " " , " mcl_core:iron_ingot " } ,
{ " mcl_core:iron_ingot " , " mcl_core:iron_ingot " , " mcl_core:iron_ingot " } ,
}
} )