mirror of
https://github.com/joe7575/techpack.git
synced 2024-11-30 02:54:12 +01:00
reformer: fix taking items from source inventory.
Ported production function from fermenter code. Take items one by one instead of 4 at once to prevent many stacks of 1-3 Biogas items to be left unprocessed. Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
This commit is contained in:
parent
fe3ff47bd2
commit
b7bdd9783e
@ -23,6 +23,7 @@ local M = minetest.get_meta
|
|||||||
local STANDBY_TICKS = 4
|
local STANDBY_TICKS = 4
|
||||||
local COUNTDOWN_TICKS = 4
|
local COUNTDOWN_TICKS = 4
|
||||||
local CYCLE_TIME = 2
|
local CYCLE_TIME = 2
|
||||||
|
local NUM_BIOGAS = 4 -- to produce on biofuel
|
||||||
|
|
||||||
local function formspec(self, pos, meta)
|
local function formspec(self, pos, meta)
|
||||||
return "size[8,8]"..
|
return "size[8,8]"..
|
||||||
@ -100,26 +101,40 @@ end
|
|||||||
local function convert_biogas_to_biofuel(pos, meta)
|
local function convert_biogas_to_biofuel(pos, meta)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
local biofuel = ItemStack("tubelib_addons1:biofuel")
|
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)
|
-- Not enough output space?
|
||||||
if items then -- input available?
|
if not inv:room_for_item("dst", biofuel) then
|
||||||
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
|
|
||||||
State:blocked(pos, meta)
|
State:blocked(pos, meta)
|
||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user