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.
此提交包含在:
Auke Kok
2016-12-14 23:45:48 -08:00
提交者 paramat
父節點 55a16cd2c6
當前提交 e5c5c2637e

查看文件

@@ -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
--