From: Auke Kok Date: Thu, 15 Dec 2016 07:45:48 +0000 (-0800) Subject: Furnace: Attempt to fix exploits X-Git-Tag: 0.4.15~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e5c5c2637e6fba63c724096d4591d45c4c2cacc9;p=oweals%2Fminetest_game.git Furnace: Attempt to fix exploits The fuel would remain active even if source went empty, giving free cook time to newly inserted items. This patch is supposed to stop this. --- diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index fed7cf2e..4b822058 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -116,6 +116,7 @@ local function furnace_node_timer(pos, elapsed) local srclist, fuellist local cookable, cooked + local fuel local update = true while update do @@ -154,7 +155,8 @@ local function furnace_node_timer(pos, elapsed) -- Furnace ran out of fuel if cookable then -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) if fuel.time == 0 then -- No valid fuel in fuel list @@ -164,7 +166,6 @@ local function furnace_node_timer(pos, elapsed) -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) update = true - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) src_time = src_time + elapsed end @@ -179,6 +180,13 @@ local function furnace_node_timer(pos, elapsed) elapsed = 0 end + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist[1]:is_empty() then + src_time = 0 + end + -- -- Update formspec, infotext and node --