-default.furnace_inactive_formspec =
- "size[8,9]"..
- "image[2,2;1,1;default_furnace_fire_bg.png]"..
- "list[current_name;fuel;2,3;1,1;]"..
- "list[current_name;src;2,1;1,1;]"..
- "list[current_name;dst;5,1;2,2;]"..
- "list[current_player;main;0,5;8,4;]"
-minetest.register_node(":default:furnace", {
- description = "Furnace",
- tiles = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
- "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front.png"},
- paramtype2 = "facedir",
- groups = {cracky=2,tubedevice=1,tubedevice_receiver=1},
- tube={insert_object=function(pos,node,stack,direction)
+function clone_node(name)
+ node2={}
+ node=minetest.registered_nodes[name]
+ for k,v in pairs(node) do
+ node2[k]=v
+ end
+ return node2
+end
+
+furnace=clone_node("default:furnace")
+furnace.groups.tubedevice=1
+furnace.groups.tubedevice_receiver=1
+furnace.tube={insert_object=function(pos,node,stack,direction)
local meta=minetest.env:get_meta(pos)
local inv=meta:get_inventory()
if direction.y==1 then
return 0
end
end,
- input_inventory="dst"},
- legacy_facedir_simple = true,
- sounds = default.node_sound_stone_defaults(),
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_string("formspec", default.furnace_inactive_formspec)
- meta:set_string("infotext", "Furnace")
- local inv = meta:get_inventory()
- inv:set_size("fuel", 1)
- inv:set_size("src", 1)
- inv:set_size("dst", 4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.env:get_meta(pos);
- local inv = meta:get_inventory()
- if not inv:is_empty("fuel") then
- return false
- elseif not inv:is_empty("dst") then
- return false
- elseif not inv:is_empty("src") then
- return false
- end
- return true
- end,
- after_place_node = function(pos)
- tube_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- tube_scanforobjects(pos)
- end
-})
+ input_inventory="dst"}
+furnace.after_place_node= function(pos)
+ tube_scanforobjects(pos)
+ end
+furnace.after_dig_node = function(pos)
+ tube_scanforobjects(pos)
+ end
+minetest.register_node(":default:furnace",furnace)
+
-minetest.register_node(":default:furnace_active", {
- description = "Furnace",
- tiles = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
- "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front_active.png"},
- paramtype2 = "facedir",
- light_source = 8,
- drop = "default:furnace",
- groups = {cracky=2, not_in_creative_inventory=1,tubedevice=1,tubedevice_receiver=1},
- tube={insert_object=function(pos,node,stack,direction)
+furnace=clone_node("default:furnace_active")
+furnace.groups.tubedevice=1
+furnace.groups.tubedevice_receiver=1
+furnace.tube={insert_object=function(pos,node,stack,direction)
local meta=minetest.env:get_meta(pos)
local inv=meta:get_inventory()
if direction.y==1 then
return 0
end
end,
- input_inventory="dst"},
- legacy_facedir_simple = true,
- sounds = default.node_sound_stone_defaults(),
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_string("formspec", default.furnace_inactive_formspec)
- meta:set_string("infotext", "Furnace");
- local inv = meta:get_inventory()
- inv:set_size("fuel", 1)
- inv:set_size("src", 1)
- inv:set_size("dst", 4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.env:get_meta(pos);
- local inv = meta:get_inventory()
- if not inv:is_empty("fuel") then
- return false
- elseif not inv:is_empty("dst") then
- return false
- elseif not inv:is_empty("src") then
- return false
- end
- return true
- end,
- after_place_node = function(pos)
- tube_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- tube_scanforobjects(pos)
- end
-})
+ input_inventory="dst"}
+furnace.after_place_node= function(pos)
+ tube_scanforobjects(pos)
+ end
+furnace.after_dig_node = function(pos)
+ tube_scanforobjects(pos)
+ end
+minetest.register_node(":default:furnace_active",furnace)
-minetest.register_node(":default:chest", {
- description = "Chest",
- tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
- "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
- paramtype2 = "facedir",
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1},
- tube={insert_object=function(pos,node,stack,direction)
+chest=clone_node("default:chest")
+chest.groups.tubedevice=1
+chest.groups.tubedevice_receiver=1
+chest.tube={insert_object=function(pos,node,stack,direction)
local meta=minetest.env:get_meta(pos)
local inv=meta:get_inventory()
return inv:add_item("main",stack)
local inv=meta:get_inventory()
return inv:room_for_item("main",stack)
end,
- input_inventory="main"},
- legacy_facedir_simple = true,
- sounds = default.node_sound_wood_defaults(),
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_string("formspec",
- "size[8,9]"..
- "list[current_name;main;0,0;8,4;]"..
- "list[current_player;main;0,5;8,4;]")
- meta:set_string("infotext", "Chest")
- local inv = meta:get_inventory()
- inv:set_size("main", 8*4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.env:get_meta(pos);
- local inv = meta:get_inventory()
- return inv:is_empty("main")
- end,
- on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
- minetest.log("action", player:get_player_name()..
- " moves stuff in chest at "..minetest.pos_to_string(pos))
- end,
- on_metadata_inventory_put = function(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " moves stuff to chest at "..minetest.pos_to_string(pos))
- end,
- on_metadata_inventory_take = function(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " takes stuff from chest at "..minetest.pos_to_string(pos))
- end,
- after_place_node = function(pos)
- tube_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- tube_scanforobjects(pos)
- end
-})
+ input_inventory="main"}
+chest.after_place_node = function(pos)
+ tube_scanforobjects(pos)
+ end
+chest.after_dig_node = function(pos)
+ tube_scanforobjects(pos)
+ end
+minetest.register_node(":default:chest",chest)