Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local sides = require("sides")
- local os = require("os")
- local in_side = sides.south
- local out_side = sides.up
- local sleep_t = 0.1
- local tp = component.transposer
- local function is_empty(tp, side)
- local max = tp.getInventorySize(side)
- for idx = 1, max do
- if tp.getStackInSlot(side, idx) ~= nil then return false end
- end
- return true
- end
- local function transfer_single(tp, in_, in_slot, out_, out_slot)
- tp.transferItem(in_, out_, tp.getStackInSlot(in_, in_slot).count, in_slot, out_slot)
- end
- local function transfer_all(tp, in_, out_)
- local out_slot = 1
- local max = tp.getInventorySize(in_)
- for idx = 1, max do
- while tp.getStackInSlot(out_, out_slot) ~= nil do out_slot = out_slot + 1 end
- transfer_single(tp, in_, idx, out_, out_slot)
- end
- end
- local function main()
- while true do
- while tp.getStackInSlot(in_side, 1) == nil do os.sleep(sleep_t) end
- local prev = tp.getStackInSlot(in_side, 1)
- local function is_same(lstack, rstack)
- return lstack ~= nil and lstack.label == rstack.label and lstack.count == rstack.count
- end
- while is_same(tp.getStackInSlot(in_side, 1), prev) do os.sleep(sleep_t) end
- while not is_empty(tp, in_side) do transfer_all(tp, in_side, out_side) end
- os.sleep(sleep_t)
- end
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement