forked from minetest-mods/technic
Don't consume items or drain power when there isn't room for the results
This commit is contained in:
parent
3107618c9e
commit
bd3cc74d05
|
@ -240,7 +240,8 @@ function technic.register_alloy_furnace(data)
|
|||
srcstack = src2stack
|
||||
src2stack = temp
|
||||
end
|
||||
if not result then
|
||||
if not result or
|
||||
not inv:room_for_item("dst", result) then
|
||||
hacky_swap_node(pos, machine_node)
|
||||
meta:set_string("infotext", machine_name.." Idle")
|
||||
meta:set_int(data.tier.."_EU_demand", 0)
|
||||
|
@ -251,7 +252,6 @@ function technic.register_alloy_furnace(data)
|
|||
-- Unpowered - go idle
|
||||
hacky_swap_node(pos, machine_node)
|
||||
meta:set_string("infotext", machine_name.." Unpowered")
|
||||
next_state = 1
|
||||
elseif eu_input >= machine_demand[EU_upgrade+1] then
|
||||
-- Powered
|
||||
hacky_swap_node(pos, machine_node.."_active")
|
||||
|
|
|
@ -70,7 +70,7 @@ function technic.smelt_item(meta, result, speed)
|
|||
if result and result.item then
|
||||
meta:set_int("cook_time", 0)
|
||||
-- check if there's room for output in "dst" list
|
||||
if inv:room_for_item("dst", result) then
|
||||
if inv:room_for_item("dst", result.item) then
|
||||
srcstack = inv:get_stack("src", 1)
|
||||
srcstack:take_item()
|
||||
inv:set_stack("src", 1, srcstack)
|
||||
|
|
|
@ -152,12 +152,6 @@ function technic.register_electric_furnace(data)
|
|||
local machine_node = "technic:"..string.lower(data.tier).."_electric_furnace"
|
||||
local machine_demand = data.demand
|
||||
|
||||
-- Setup meta data if it does not exist. state is used as an indicator of this
|
||||
if not eu_input then
|
||||
meta:set_int(data.tier.."_EU_demand", machine_demand[1])
|
||||
meta:set_int(data.tier.."_EU_input", 0)
|
||||
end
|
||||
|
||||
-- Power off automatically if no longer connected to a switching station
|
||||
technic.switching_station_timeout_count(pos, data.tier)
|
||||
|
||||
|
@ -174,7 +168,8 @@ function technic.register_electric_furnace(data)
|
|||
method = "cooking",
|
||||
width = 1,
|
||||
items = inv:get_list("src")})
|
||||
if not result or result.time == 0 then
|
||||
if not result or result.time == 0 or
|
||||
not inv:room_for_item("dst", result.item) then
|
||||
meta:set_int(data.tier.."_EU_demand", 0)
|
||||
hacky_swap_node(pos, machine_node)
|
||||
meta:set_string("infotext", machine_name.." Idle")
|
||||
|
|
Loading…
Reference in New Issue
Block a user