Don't consume items or drain power when there isn't room for the results
authorShadowNinja <noreply@gmail.com>
Tue, 24 Sep 2013 21:09:20 +0000 (17:09 -0400)
committerShadowNinja <noreply@gmail.com>
Tue, 24 Sep 2013 21:09:20 +0000 (17:09 -0400)
technic/machines/register/alloy_furnace.lua
technic/machines/register/common.lua
technic/machines/register/electric_furnace.lua

index b77113400ace1d6deaeafe6e29a919bd673ec0b5..bbae151f9801eef44c2d7a2b6e8c3f8f4f114d90 100644 (file)
@@ -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")
index 475e35bb297a6aa64636de9b72b9b8436cb76819..664f43bbca045cf8f1d0a45e0ea31f0ed9e5feef 100644 (file)
@@ -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)
index 2a7642fb63afc8d17727df30a6e6552bcfaa1c8c..7d57a5958317e898a84c9023ed1403f22788ff21 100644 (file)
@@ -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")