From 2767c3ab212a2d6903953e55bc66cabc054eecfc Mon Sep 17 00:00:00 2001
From: Wuzzy <almikes@aol.com>
Date: Wed, 8 Mar 2017 17:22:56 +0100
Subject: [PATCH] Reset cooking progress when changing src item

---
 mods/ITEMS/mcl_furnaces/init.lua | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua
index 501346ba..ab9e9244 100644
--- a/mods/ITEMS/mcl_furnaces/init.lua
+++ b/mods/ITEMS/mcl_furnaces/init.lua
@@ -140,6 +140,7 @@ local function furnace_node_timer(pos, elapsed)
 	local meta = minetest.get_meta(pos)
 	local fuel_time = meta:get_float("fuel_time") or 0
 	local src_time = meta:get_float("src_time") or 0
+	local src_item = meta:get_string("src_item") or ""
 	local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
 
 	local inv = meta:get_inventory()
@@ -164,8 +165,13 @@ local function furnace_node_timer(pos, elapsed)
 		cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
 		cookable = cooked.time ~= 0
 
+		-- Check if src item has been changed
+		if srclist[1]:get_name() ~= src_item then
+			-- Reset cooking progress in this case
+			src_time = 0
+
 		-- Check if we have enough fuel to burn
-		if fuel_time < fuel_totaltime then
+		elseif fuel_time < fuel_totaltime then
 			-- The furnace is currently active and has enough fuel
 			fuel_time = fuel_time + elapsed
 			-- If there is a cookable item then check if it is ready yet
@@ -254,6 +260,7 @@ local function furnace_node_timer(pos, elapsed)
 	meta:set_float("fuel_totaltime", fuel_totaltime)
 	meta:set_float("fuel_time", fuel_time)
 	meta:set_float("src_time", src_time)
+	meta:set_string("src_item", srclist[1]:get_name())
 	meta:set_string("formspec", formspec)
 
 	return result