1
0
mirror of https://github.com/minetest/minetest_game.git synced 2024-12-23 07:10:19 +01:00

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.
This commit is contained in:
Paul Ouellette 2019-08-20 15:15:28 -04:00 committed by SmallJoker
parent 3a3f71aa50
commit 7269711911

View File

@ -98,7 +98,7 @@ end
local function furnace_node_timer(pos, elapsed) local function furnace_node_timer(pos, elapsed)
-- --
-- Inizialize metadata -- Initialize metadata
-- --
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0 local fuel_time = meta:get_float("fuel_time") or 0
@ -169,6 +169,16 @@ local function furnace_node_timer(pos, elapsed)
else else
-- 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])
-- 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 update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time) fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end end