From 4c5cb106c36e2fbd908ee55c6f55f0e4138904bb Mon Sep 17 00:00:00 2001
From: PilzAdam <PilzAdam@gmx.de>
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 cb56181a..a481d37e 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)
-- 
GitLab