Changed the code so that we do not overwrite the default code anymore.
authorNovatux <nathanael.courant@laposte.net>
Sat, 2 Feb 2013 07:21:48 +0000 (08:21 +0100)
committerNovatux <nathanael.courant@laposte.net>
Sat, 2 Feb 2013 07:21:48 +0000 (08:21 +0100)
compat.lua

index 04dcadd2c528f9af99ff3539f7ac9f9deb7a92eb..9caee895e8497292eafdbda02ad64764fbe6cb23 100644 (file)
@@ -1,19 +1,18 @@
 
-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
@@ -33,47 +32,20 @@ minetest.register_node(":default:furnace", {
                                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
@@ -93,45 +65,19 @@ minetest.register_node(":default:furnace_active", {
                                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)
@@ -141,40 +87,11 @@ minetest.register_node(":default:chest", {
                        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)