forked from minetest/minetest_game
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:
parent
3a3f71aa50
commit
7269711911
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user