From fd6b95095b47fa8a02b6ac93792de1a3f8621672 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Thu, 8 Aug 2019 13:31:17 -0400 Subject: [PATCH] furnace: Improve fuel item replacement support The output returned by `get_craft_result` has a replacements table that contains any replacement items that could not be placed in the input (due to the input stack having a count > 1). Put these replacements in the dst list or drop them on the furnace. --- mods/default/furnace.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index a06f3b23..53bc5811 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -98,7 +98,7 @@ end local function furnace_node_timer(pos, elapsed) -- - -- Inizialize metadata + -- Initialize metadata -- local meta = minetest.get_meta(pos) local fuel_time = meta:get_float("fuel_time") or 0 @@ -166,6 +166,16 @@ local function furnace_node_timer(pos, elapsed) else -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) + -- Put replacements in dst list or drop them on the furnace. + local replacements = fuel.replacements + if replacements[1] then + local leftover = inv:add_item("dst", replacements[1]) + if not leftover:is_empty() then + local above = vector.new(pos.x, pos.y + 1, pos.z) + local drop_pos = minetest.find_node_near(above, 1, {"air"}) or above + minetest.item_drop(replacements[1], nil, drop_pos) + end + end update = true fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time) end