From 4c5cb106c36e2fbd908ee55c6f55f0e4138904bb Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Thu, 10 Jan 2013 19:28:50 +0100 Subject: [PATCH] Dont allow to place not-fuel items in the fuel field in the furnace and dont allow to place any item in the dst field --- mods/default/init.lua | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/mods/default/init.lua b/mods/default/init.lua index cb56181..a481d37 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -1491,6 +1491,33 @@ minetest.register_node("default:furnace", { end return true end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname == "fuel" then + if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then + return stack:get_count() + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local stack = ItemStack(minetest.env:get_meta(pos):get_inventory():get_stack(from_list, from_index)) + if to_list == "fuel" then + if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then + return count + else + return 0 + end + elseif to_list == "src" then + return count + elseif to_list == "dst" then + return 0 + end + end, }) minetest.register_node("default:furnace_active", { @@ -1524,6 +1551,33 @@ minetest.register_node("default:furnace_active", { end return true end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname == "fuel" then + if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then + return stack:get_count() + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local stack = ItemStack(minetest.env:get_meta(pos):get_inventory():get_stack(from_list, from_index)) + if to_list == "fuel" then + if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then + return count + else + return 0 + end + elseif to_list == "src" then + return count + elseif to_list == "dst" then + return 0 + end + end, }) function hacky_swap_node(pos,name)