View difference between Paste ID: xeABqMUp and Cjrm5FWc
SHOW: | | - or go back to the newest paste.
1
2
local trashListChest = peripheral.wrap("back")
3
local aeNetwork = peripheral.wrap("right")
4
local craftListChest = peripheral.wrap("top")
5-
   trashList = {}
5+
local loopCounter = 0
6-
   for i,data in pairs(trashListChest.getAllStacks()) do
6+
local delayCrafting = {}
7-
      while aeNetwork.countOfItemType(data["id"], data["dmg"]) > ( data["qty"] * 1000 ) do
7+
8-
         if trashList[data["name"]] == nil then
8+
9-
            trashList[data["name"]] = aeNetwork.extractItem({ ["id"] = data["id"], ["dmg"] = data["dmg"], ["qty"] = math.min(aeNetwork.countOfItemType(data["id"], data["dmg"]) - ( data["qty"] * 1000 ), data["maxSize"]) }, "up")
9+
   for i,data in pairs(craftListChest.getAllStacks()) do
10-
         else
10+
      if delayCrafting[tostring(data["id"]..data["dmg"])] ~= nil then
11-
            trashList[data["name"]] = trashList[data["name"]] + aeNetwork.extractItem({ ["id"] = data["id"], ["dmg"] = data["dmg"], ["qty"] = math.min(aeNetwork.countOfItemType(data["id"], data["dmg"]) - ( data["qty"] * 1000 ), data["maxSize"])}, "up")
11+
         delayCrafting[tostring(data["id"]..data["dmg"])] = delayCrafting[tostring(data["id"]..data["dmg"])] - 1
12
         if delayCrafting[tostring(data["id"]..data["dmg"])] < 0 then
13-
         sleep(.05)
13+
            delayCrafting[tostring(data["id"]..data["dmg"])] = nil
14
         end
15
      else
16-
   print("Cleaned out:")
16+
         if data["maxSize"] == 1 then
17-
   for name,i in pairs(trashList) do
17+
            data["maxSize"] = 5
18-
      print(name.." - "..i)
18+
19
         if ( ( data["qty"] * data["maxSize"] ) - aeNetwork.countOfItemType(data["id"], data["dmg"]) ) > 0 then
20-
   sleep(30)
20+
            print("Crafting:"..data["maxSize"].." x "..data["id"])
21
            aeNetwork.requestCrafting({ ["id"] = data["id"], ["dmg"] = data["dmg"], ["qty"] = ( ( data["qty"] * data["maxSize"] ) - aeNetwork.countOfItemType(data["id"], data["dmg"]) ) })
22
            sleep(1)
23
            loopCounter = loopCounter + 1
24
            if data["id"] > 400 then
25
               delayCrafting[tostring(data["id"]..data["dmg"])] = 300
26
               print("Delaying future crafting due to complexity")
27
            end
28
         end
29
      end
30
   end
31
   loopCounter = loopCounter + 1
32
   if loopCounter > 30 then
33
      trashList = {}
34
      for i,data in pairs(trashListChest.getAllStacks()) do
35
         while aeNetwork.countOfItemType(data["id"], data["dmg"]) > ( data["qty"] * 1000 ) do
36
            print("trying to delete item:"..data["name"])
37
            local status, outputData = pcall( function () return aeNetwork.extractItem({ ["id"] = data["id"], ["dmg"] = data["dmg"], ["qty"] = math.min(aeNetwork.countOfItemType(data["id"], data["dmg"]) - ( data["qty"] * 1000 ), data["maxSize"]) }, "up") end )
38
            if not status then
39
               print("Error")
40
               break
41
            end
42
            if trashList[data["name"]] == nil then
43
               trashList[data["name"]] = outputData
44
            else
45
               trashList[data["name"]] = trashList[data["name"]] + outputData
46
            end
47
            print("success")
48
            sleep(.05)
49
         end
50
      end
51
      print("Cleaned out:")
52
      for name,i in pairs(trashList) do
53
         print(name.." - "..i)
54
      end
55
      loopCounter = 0
56
   end
57
   print("sleep then loop")
58
   sleep(1)
59
end