From: ShadowNinja Date: Tue, 24 Sep 2013 21:09:20 +0000 (-0400) Subject: Don't consume items or drain power when there isn't room for the results X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=bd3cc74d0576250af06a367369b7ea709d5581f4;p=zefram%2Fminetest%2Ftechnic.git Don't consume items or drain power when there isn't room for the results --- diff --git a/technic/machines/register/alloy_furnace.lua b/technic/machines/register/alloy_furnace.lua index b771134..bbae151 100644 --- a/technic/machines/register/alloy_furnace.lua +++ b/technic/machines/register/alloy_furnace.lua @@ -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") diff --git a/technic/machines/register/common.lua b/technic/machines/register/common.lua index 475e35b..664f43b 100644 --- a/technic/machines/register/common.lua +++ b/technic/machines/register/common.lua @@ -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) diff --git a/technic/machines/register/electric_furnace.lua b/technic/machines/register/electric_furnace.lua index 2a7642f..7d57a59 100644 --- a/technic/machines/register/electric_furnace.lua +++ b/technic/machines/register/electric_furnace.lua @@ -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")