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.
This commit is contained in:
Auke Kok 2016-12-14 23:45:48 -08:00 committed by paramat
parent 55a16cd2c6
commit e5c5c2637e

View File

@ -116,6 +116,7 @@ local function furnace_node_timer(pos, elapsed)
local srclist, fuellist local srclist, fuellist
local cookable, cooked local cookable, cooked
local fuel
local update = true local update = true
while update do while update do
@ -154,7 +155,8 @@ local function furnace_node_timer(pos, elapsed)
-- Furnace ran out of fuel -- Furnace ran out of fuel
if cookable then if cookable then
-- We need to get new fuel -- 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 if fuel.time == 0 then
-- No valid fuel in fuel list -- No valid fuel in fuel list
@ -164,7 +166,6 @@ local function furnace_node_timer(pos, elapsed)
-- Take fuel from fuel list -- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1]) inv:set_stack("fuel", 1, afterfuel.items[1])
update = true update = true
fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime)
src_time = src_time + elapsed src_time = src_time + elapsed
end end
@ -179,6 +180,13 @@ local function furnace_node_timer(pos, elapsed)
elapsed = 0 elapsed = 0
end 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 -- Update formspec, infotext and node
-- --