Advertisement
JOBGG

Untitled

Sep 21st, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.18 KB | None | 0 0
  1. ore_list = {
  2. {id = 14,dmg = 0}, -- Gold Ore
  3. {id = 15,dmg = 0}, -- Iron Ore
  4. {id = 16,dmg = 0}, -- Coal Ore
  5. {id = 21,dmg = 0}, -- Lapis Lazuli Ore
  6. {id = 56,dmg = 0}, -- Diamond Ore
  7. {id = 73,dmg = 0}, -- Redstone Ore
  8. {id = 129,dmg = 0}, -- Emerald Ore
  9. {id = 458,dmg = 0}, -- Sulfur
  10. {id = 458,dmg = 1}, -- Saltpeter
  11. {id = 722,dmg = 5}, -- Platinum Ore
  12. {id = 854,dmg = 0}, -- Certus Quartz Ore
  13. {id = 1398,dmg = 0}, -- Apatite Ore
  14. {id = 1475,dmg = 5}, -- Aluminium Ore
  15. {id = 1607,dmg = 2}, -- Cadmium
  16. {id = 1607,dmg = 3}, -- Indium
  17. {id = 1607,dmg = 4}, -- Silvera
  18. {id = 1607,dmg = 7}, -- Calcite
  19. {id = 1607,dmg = 8}, -- Magnetite
  20. --leaving out Fluorite id = 1609 dmg = 1..7
  21. {id = 2001,dmg = 0}, -- Copper Ore
  22. {id = 2001,dmg = 1}, -- Tin Ore
  23. {id = 2001,dmg = 2}, -- Silver
  24. {id = 2001,dmg = 3}, -- Lead
  25. {id = 2001,dmg = 4}, -- Ferrous
  26. {id = 2148,dmg = 0}, -- Yellorite
  27. {id = 2403,dmg = 0}, -- Cinnabar
  28. {id = 2403,dmg = 1}, -- Air Infused
  29. {id = 2403,dmg = 2}, -- Fire Infused
  30. {id = 2403,dmg = 3}, -- Water Infused
  31. {id = 2403,dmg = 4}, -- Earth Infused
  32. {id = 2403,dmg = 5}, -- Order Infused
  33. {id = 2403,dmg = 6}, -- Enthropy Infused
  34. {id = 2403,dmg = 7}, -- Amber Bearing Stone
  35. {id = 2431,dmg = 0}, -- Mimichite
  36. {id = 2483,dmg = 0}, -- Uranium
  37. {id = 0,dmg = 16 }, -- Not an item, but in here because weird off by one error
  38. }
  39.  
  40. -- init
  41. ae = peripheral.wrap("back")
  42. monitor = peripheral.wrap("top")
  43. chest_dir = "west"
  44. redstone_output = "right"
  45. redstone_input = "left"
  46.  
  47.  
  48. function isMatch(item)
  49.     for i = 1, #ore_list do
  50.         if ore_list[i]["id"] == item["id"] and ore_list[i]["dmg"] == item["dmg"] then
  51.             return true
  52.         end
  53.     end
  54.     return false
  55. end
  56.  
  57. function trimList(list)
  58.     local returnlist = {}
  59.     for i = 1,#list do
  60.         if isMatch(list[i]) then
  61.             table.insert(returnlist,list[i])
  62.         end
  63.     end
  64.     return returnlist
  65. end
  66.  
  67. function getLargest(item_list,largest_item)
  68.     if next(item_list) == nil then
  69.         return largest_item
  70.     end
  71.     tail = table.remove(item_list,#item_list)
  72.     if tail["qty"] <= largest_item["qty"] then
  73.         return getLargest(item_list,largest_item)
  74.     else
  75.         return getLargest(item_list,tail)
  76.     end
  77. end
  78.  
  79. function getQty(id,dmg)
  80.     local items = ae.getAvailableItems()
  81.     for i = 1,#items do
  82.         if items[i]["id"]==id and items[i]["dmg"]==dmg then
  83.             return items[i]["qty"]
  84.         end
  85.    
  86.     end
  87.     return 0
  88. end
  89.  
  90. function depleteItems(_id,_dmg)
  91.     local _qty = getQty(_id,_dmg)
  92.     while _qty > 0
  93.         _qty = getQty(_id,_dmg)
  94.         if _qty >= 64 then
  95.             ae.extractItem({id = _id, qty = 64,dmg = _dmg},chest_dir)
  96.         else
  97.             ae.extractItem({id = _id,qty = _qty,dmg = _dmg},chest_dir)
  98.         end
  99.     end
  100. end
  101.  
  102. rs.setOutput(redstone_output,true) -- turn on computer checking extractor contents
  103.  
  104. while next(trimList(ae.getAvailableItems())) ~= nil do
  105.     while rs.getInput(redstone_input) do
  106.         sleep(0.2)
  107.     end
  108.     local processed_item = getLargest(trimList(ae.getAvailableItems()),{qty=0})  
  109.    
  110.     -- output currently processed ore to monitor
  111.     monitor.clear()
  112.     monitor.setCursorPos(1,1)
  113.     monitor.write(processed_item["name"])
  114.    
  115.     depleteItems(processed_item["id"],processed_item["dmg"])
  116. end
  117.  
  118. rs.setOutput(redstone_output,false)
  119. monitor.clear()
  120. monitor.setCursorPos(1,1)
  121. montior.write("finished")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement