SHOW:
|
|
- or go back to the newest paste.
| 1 | --nb of item per packet (1 for simple conversion, 4 for 2*2 grid crafting, 9 for 3*3 grid crafting) | |
| 2 | psize=9 | |
| 3 | --packager side | |
| 4 | side="bottom" | |
| 5 | ||
| 6 | function compactInv() | |
| 7 | for i = 1,16 do | |
| 8 | if turtle.getItemCount(i) > 0 and turtle.getItemCount(i) < 64 then | |
| 9 | turtle.select(i) | |
| 10 | for j = i+1,16 do | |
| 11 | if turtle.compareTo(j) then | |
| 12 | turtle.select(j) | |
| 13 | turtle.transferTo(i) | |
| 14 | turtle.select(i) | |
| 15 | end | |
| 16 | end | |
| 17 | end | |
| 18 | end | |
| 19 | ||
| 20 | for i = 1,16 do | |
| 21 | if turtle.getItemCount(i) > 0 then | |
| 22 | for j = 1,i do | |
| 23 | if turtle.getItemCount(j) == 0 then | |
| 24 | turtle.select(i) | |
| 25 | turtle.transferTo(j) | |
| 26 | break | |
| 27 | end | |
| 28 | end | |
| 29 | end | |
| 30 | end | |
| 31 | end | |
| 32 | ||
| 33 | function nextSlot(slot) | |
| 34 | if slot == 16 then | |
| 35 | return 1 | |
| 36 | else | |
| 37 | return slot + 1 | |
| 38 | end | |
| 39 | end | |
| 40 | ||
| 41 | function sendStackToPackager(packager,slot,packetSize) | |
| 42 | print("Sending slot "..slot.. " to packager in packets of "..packetSize.." items.")
| |
| 43 | waitBeforeNextSlot = not turtle.compareTo(nextSlot(slot)) | |
| 44 | ||
| 45 | while turtle.getItemCount(slot) >= packetSize do | |
| 46 | --print(" enough items left to package ("..turtle.getItemCount(slot)..").")
| |
| 47 | buffer = packager.getStackInSlot(1) | |
| 48 | while buffer ~= null and buffer["qty"] >= (64-packetSize) do | |
| 49 | print("--Packager Overflow : Waiting 3s ("..buffer["qty"].." items left).")
| |
| 50 | sleep(3) | |
| 51 | buffer = packager.getStackInSlot(1) | |
| 52 | end | |
| 53 | print("--Packager OK : dropping down "..packetSize.." items from slot "..slot..".")
| |
| 54 | turtle.dropDown(packetSize) | |
| 55 | sleep(0.2) | |
| 56 | end | |
| 57 | ||
| 58 | if waitBeforeNextSlot then | |
| 59 | buffer = packager.getStackInSlot(1) | |
| 60 | while buffer ~= null and buffer["qty"] > 0 do | |
| 61 | if bak == buffer["qty"] then | |
| 62 | print("There seems to be a problem with the packager : buffer size("..bak..") doesn't change.")
| |
| 63 | end | |
| 64 | bak = buffer["qty"] | |
| 65 | ||
| 66 | print("--Slot Transiton : waiting ...")
| |
| 67 | sleep(1.2) | |
| 68 | ||
| 69 | buffer = packager.getStackInSlot(1) | |
| 70 | end | |
| 71 | end | |
| 72 | end | |
| 73 | ||
| 74 | ||
| 75 | local packager = peripheral.wrap(side) | |
| 76 | while true do | |
| 77 | print("Compacting ...")
| |
| 78 | compactInv() | |
| 79 | for i=1,16 do | |
| 80 | turtle.select(i) | |
| 81 | sendStackToPackager(packager,i,psize) | |
| 82 | sleep(0.2) | |
| 83 | end | |
| 84 | sleep(2) | |
| 85 | end |