Advertisement
Keridos

Untitled

Jun 6th, 2015
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.43 KB | None | 0 0
  1. local comp = require("component")
  2. local term = require("term")
  3. local event = require("event")
  4.  
  5. local gpu = comp.gpu
  6.  
  7. local ae = comp.getPrimary("me_controller")
  8.  
  9. local craftingList = {}
  10. local craftingLog = {}
  11. local crafting = {}
  12. local toCraft = {
  13.                     ["Stick"] = 1000,
  14.                     ["Oak Wood Planks"] = 512,
  15.                     ["Piston"] = 100 ,
  16.                     ["Sticky Piston"] = 100,
  17.                     ["Chest"] = 128,
  18.                     ["Blaze Powder"] = 64,
  19.                     ["Gold Nugget"] = 400,
  20.                     ["Cryo-Stabilized Fluxduct"] = 128,
  21.                     ["Conduit Binder"] = 64,   
  22.                     ["Electrical Steel"] = 64,
  23.                     ["Energetic Alloy"] = 64,
  24.                     ["Vibrant Alloy"] = 64,
  25.                     ["Redstone Alloy"] = 64,
  26.                     ["Pulsating Iron"] = 64,
  27.                     ["Ender Energy Conduit"] = 64,
  28.                     ["Item Conduit"] = 64,
  29.                     ["Ender Fluid Conduit"] = 64,
  30.                     ["Insulated Redstone Conduit"] = 64,
  31.                     ["Enriched Alloy"] = 64,
  32.                     ["Reinforced Alloy"] = 64,
  33.                     ["Atomic Alloy"] = 32,
  34.                     ["Basic Control Circuit"] = 64,
  35.                     ["Advanced Control Circuit"] = 16,
  36.                     ["Elite Control Circuit"] = 16,
  37.                     ["Ultimate Control Circuit"] = 2,
  38.                     ["Pure Certus Quartz Crystal"] = 64,
  39.                     ["Pure Nether Quartz Crystal"] = 64,
  40.                     ["Pure Fluix Crystal"] = 64,   
  41.                     ["Certus Quartz Dust"] = 64,
  42.                     ["Fluix Dust"] = 64,
  43.                     ["Cable Anchor"] = 64,
  44.                     ["Quartz Fiber"] = 64,
  45.                     ["ME Glass Cable - Fluix"] = 64,
  46.                     ["ME Dense Cable - Fluix"] = 64,
  47.                     ["ME Smart Cable - Fluix"] = 64,
  48.                     ["Logic Processor"] = 64,
  49.                     ["Calculation Processor"] = 64,
  50.                     ["Engineering Processor"] = 64,            
  51.                     ["Formation Core"] = 32,
  52.                     ["Annihilation Core"] = 32,
  53.                     ["ME Interface"] = 32,
  54.                     ["Hardened Glass"] = 64,
  55.                     ["Electrum Ingot"] = 64,
  56.                     ["Invar Ingot"] = 64,
  57.                     ["Signalum Ingot"] = 64,
  58.                     ["Lumium Ingot"] = 64,
  59.                     ["Enderium Ingot"] = 64,
  60.                     ["Bronze Ingot"] = 64,
  61.                     ["Steel Ingot"] = 64
  62.                 }
  63.  
  64.  
  65. function printLog(text)
  66.     term.setCursor(1,5)
  67.     term.write("                                       ")
  68.     term.setCursor(1,5)
  69.     term.write(text)
  70. end
  71.  
  72. function printJobs()
  73.     local i = 5
  74.     for k,v in pairs(craftingList) do
  75.         term.setCursor(40,i)
  76.         term.write("                                ")
  77.         term.setCursor(40,i)
  78.         term.write(k.." x "..v)
  79.         i = i + 1
  80.     end
  81.     for j=i,25 do
  82.         term.setCursor(40,j)
  83.         term.write("                                ")
  84.     end
  85. end
  86.  
  87. function addCraftingToList(name, number)
  88.     craftingList[name] = number
  89.     printJobs()
  90. end
  91.  
  92. function removeCraftingFromList(name)
  93.     for k,v in pairs(craftingList) do
  94.         if k == name then craftingList[k] = nil end
  95.     end
  96.     printJobs()
  97. end
  98.  
  99.  
  100. function checkCrafting(label)
  101.     if crafting[label] == nil then
  102.         removeCraftingFromList(label)
  103.         return true
  104.     elseif crafting[label].isDone() then
  105.         printLog(label.." done")
  106.         crafting[label] = nil
  107.         removeCraftingFromList(label)
  108.         return false
  109.     elseif crafting[label].isCanceled() then
  110.         printLog(label.." canceled")
  111.         crafting[label] = nil
  112.         removeCraftingFromList(label)
  113.         return false
  114.     else
  115.         return false
  116.     end
  117. end
  118.  
  119. function craftingManager()
  120.     for labelString,number in pairs(toCraft) do
  121.         local craft = nil
  122.         local itemInAE = nil
  123.         local skip = false
  124.         filter = { label = labelString }
  125.         if ae.getCraftables(filter)[1] ~= nil then
  126.             craft = ae.getCraftables(filter)[1]
  127.         else
  128.             skip = true
  129.         end
  130.         if not skip then
  131.             if ae.getItemsInNetwork(filter)[1] ~= nil then
  132.                 itemsInAE = ae.getItemsInNetwork(filter)[1]
  133.             else
  134.                 itemsInAE= { size = 0 }
  135.             end
  136.             if number-itemsInAE.size > 0 then
  137.                 if checkCrafting(labelString) and craft ~= nil then
  138.                     crafting[labelString] = craft.request(number-itemsInAE.size)
  139.                     if crafting[labelString] == nil or crafting[labelString].isCanceled() == true then
  140.                         printLog("fail "..number-itemsInAE.size .. " x " .. labelString)
  141.                         crafting[labelString] = nil
  142.                     else
  143.                         printLog("success "..number-itemsInAE.size .. " x " .. labelString)
  144.                         addCraftingToList(labelString,number-itemsInAE.size)
  145.                     end
  146.                 end
  147.             end
  148.         end
  149.     end
  150. end
  151.  
  152.  
  153. function main()
  154.     gpu.setResolution(80,25)
  155.     term.clear()
  156.     term.write("CraftingManager by Keridos")
  157.     term.setCursor(1,4)
  158.     term.write("Last Log:")
  159.     term.setCursor(40,4)
  160.     term.write("Current Jobs:")
  161.     while true do
  162.         craftingManager()
  163.         for k,v in pairs(craftingList) do
  164.             checkCrafting(k)
  165.         end
  166.         term.setCursor(1,3)
  167.         term.write(" ")
  168.         os.sleep(1)
  169.     end
  170. end
  171.  
  172. while true do
  173.     pcall(main)
  174. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement