diff --git a/tubelib/states.lua b/tubelib/states.lua index bae0b9a..1b9ec19 100644 --- a/tubelib/states.lua +++ b/tubelib/states.lua @@ -30,7 +30,7 @@ tubelib.StatesImg = { "tubelib_inv_button_on.png", "tubelib_inv_button_standby.png", "tubelib_inv_button_error.png", - "tubelib_inv_button_error.png", + "tubelib_inv_button_warning.png", "tubelib_inv_button_off.png", } @@ -86,4 +86,4 @@ function tubelib.statestring(running) else return "fault" end -end \ No newline at end of file +end diff --git a/tubelib/textures/tubelib_inv_button_warning.png b/tubelib/textures/tubelib_inv_button_warning.png new file mode 100644 index 0000000..33ec686 Binary files /dev/null and b/tubelib/textures/tubelib_inv_button_warning.png differ diff --git a/tubelib_addons1/fermenter.lua b/tubelib_addons1/fermenter.lua index 0ccfa8d..06d38f6 100644 --- a/tubelib_addons1/fermenter.lua +++ b/tubelib_addons1/fermenter.lua @@ -116,11 +116,13 @@ local function convert_leaves_to_biogas(pos, meta) -- take NUM_LEAVES items local items = {} - local fault = false for i = 1, NUM_LEAVES do items[i] = tubelib.get_num_items(meta, "src", 1) if items[i] then -- input available? if not is_leaves(items[i]:get_name()) then + for j = 1, #items do + inv:add_item("src", items[j]) + end State:fault(pos, meta) return end diff --git a/tubelib_addons1/reformer.lua b/tubelib_addons1/reformer.lua index 9ebc61d..0f02ab6 100644 --- a/tubelib_addons1/reformer.lua +++ b/tubelib_addons1/reformer.lua @@ -23,6 +23,7 @@ local M = minetest.get_meta local STANDBY_TICKS = 4 local COUNTDOWN_TICKS = 4 local CYCLE_TIME = 2 +local NUM_BIOGAS = 4 -- to produce on biofuel local function formspec(self, pos, meta) return "size[8,8]".. @@ -100,26 +101,40 @@ end local function convert_biogas_to_biofuel(pos, meta) local inv = meta:get_inventory() local biofuel = ItemStack("tubelib_addons1:biofuel") - if inv:room_for_item("dst", biofuel) then -- enough output space? - local items = tubelib.get_num_items(meta, "src", 4) - if items then -- input available? - if items:get_name() == "tubelib_addons1:biogas" then -- valid input? - inv:add_item("dst", biofuel) - State:keep_running(pos, meta, COUNTDOWN_TICKS) - return - else - inv:add_item("src", items) - State:fault(pos, meta) - return - end - else - State:idle(pos, meta) - return - end - else + + -- Not enough output space? + if not inv:room_for_item("dst", biofuel) then State:blocked(pos, meta) return end + + -- take NUM_BIOGAS items + local items = {} + for i = 1, NUM_BIOGAS do + items[i] = tubelib.get_num_items(meta, "src", 1) + if items[i] then -- input available? + if items[i]:get_name() ~= "tubelib_addons1:biogas" then + for j = 1, #items do + inv:add_item("src", items[j]) + end + State:fault(pos, meta) + return + end + end + end + + -- put result into dst inventory + if #items == NUM_BIOGAS then + inv:add_item("dst", biofuel) + State:keep_running(pos, meta, COUNTDOWN_TICKS) + return + end + + -- put biogas back to src inventory + for i = 1, #items do + inv:add_item("src", items[i]) + end + State:idle(pos, meta) end