View difference between Paste ID: pq5SVRLH and x9BREmWw
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