Advertisement
thezer0th

Untitled

Feb 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local component = require("component")
  2. local sides = require("sides")
  3. local os = require("os")
  4.  
  5. local in_side = sides.south
  6. local out_side = sides.up
  7. local sleep_t = 0.1
  8. local tp = component.transposer
  9.  
  10. local function is_empty(tp, side)
  11.     local max = tp.getInventorySize(side)
  12.     for idx = 1, max do
  13.         if tp.getStackInSlot(side, idx) ~= nil then return false end
  14.     end
  15.     return true
  16. end
  17.  
  18. local function transfer_single(tp, in_, in_slot, out_, out_slot)
  19.     tp.transferItem(in_, out_, tp.getStackInSlot(in_, in_slot).count, in_slot, out_slot)
  20. end
  21.  
  22. local function transfer_all(tp, in_, out_)
  23.     local out_slot = 1
  24.     local max = tp.getInventorySize(in_)
  25.     for idx = 1, max do
  26.         while tp.getStackInSlot(out_, out_slot) ~= nil do out_slot = out_slot + 1 end
  27.         transfer_single(tp, in_, idx, out_, out_slot)            
  28.     end
  29. end
  30.  
  31. local function main()    
  32.     while true do
  33.         while tp.getStackInSlot(in_side, 1) == nil do os.sleep(sleep_t) end    
  34.         local prev = tp.getStackInSlot(in_side, 1)
  35.         local function is_same(lstack, rstack)
  36.             return lstack ~= nil and lstack.label == rstack.label and lstack.count == rstack.count
  37.         end
  38.         while is_same(tp.getStackInSlot(in_side, 1), prev) do os.sleep(sleep_t) end
  39.         while not is_empty(tp, in_side) do transfer_all(tp, in_side, out_side) end
  40.         os.sleep(sleep_t)
  41.     end
  42. end
  43.  
  44. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement