View difference between Paste ID: ayVFNZJm and VNfaSSCh
SHOW: | | - or go back to the newest paste.
1
-- configuration ---------
2
local princessSlot = 26
3
local droneSlot = 27
4
local otherSlot = 1
5
local chestDir = "up"
6
local redstoneSide = "top"
7
local wait = 5
8
--------------------------
9
10
local apiaries = {}
11
local stats = {["Generations"] = 0}
12
13
function printStats()
14
  term.clear()
15
  term.setCursorPos(1, 1)
16
  print(string.format("Watching %d apiaries", #apiaries))
17
  print()
18
  for stat, value in pairs(stats) do
19
    print(string.format("%s : %d", stat, value))
20
  end
21
end
22
23
-- find apiaries
24
local sides = peripheral.getNames()
25
for _, side in ipairs(sides) do
26
  if peripheral.getType(side):sub(1,10) == "apiculture" then
27
    table.insert(apiaries, peripheral.wrap(side))
28
  end
29
end
30
if #apiaries == 0 then
31
  error("No apiaries")
32
else
33
  printStats()
34
end
35
36
while true do
37
  local statChange = false
38
  rs.setOutput(redstoneSide, true)
39
  for i, apiary in ipairs(apiaries) do
40
    -- look for outputs
41
    local inv = apiary.getAllStacks()
42
    local foundDrone = false
43
    local foundPrincess = false
44
    for slot, bee in pairs(inv) do
45
      if slot >= 3 and slot <= 9 then
46
        if bee["raw_name"] == "item.for.beeprincessge" then
47
          apiary.pushItemIntoSlot(chestDir, slot, 1, princessSlot)
48
          foundPrincess = true
49
        elseif foundDrone == false and bee["raw_name"] == "item.for.beedronege" then
50
          apiary.pushItemIntoSlot(chestDir, slot, 1, droneSlot)
51
          apiary.pushItemIntoSlot(chestDir, slot, 64)
52
          foundDrone = true
53
        else
54
          apiary.pushItemIntoSlot(chestDir, slot, 64)
55
          if bee["raw_name"] ~= "item.for.beedronege" then
56
            statChange = true
57
            if stats[bee["name"]] ~= nil then
58
              stats[bee["name"]] = stats[bee["name"]] + bee["qty"]
59
            else
60-
              stats[bee] = bee["qty"]
60+
              stats[bee["name"]] = bee["qty"]
61
            end
62
          end
63
        end
64
      end
65
    end
66
    -- breed princess and 1 drone
67
    if apiary.getStackInSlot(1) == nil then
68
      if apiary.pullItem(chestDir, princessSlot, 1, 1) > 0 then
69
        stats["Generations"] = stats["Generations"] + 1
70
      end
71
      apiary.pullItem(chestDir, droneSlot, 1, 2)
72
    end
73
  end
74
  rs.setOutput(redstoneSide, false)
75
  if statChange then
76
    printStats()
77
  end
78
  sleep(wait)
79
end