Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ore_list = {
- {id = 14,dmg = 0}, -- Gold Ore
- {id = 15,dmg = 0}, -- Iron Ore
- {id = 16,dmg = 0}, -- Coal Ore
- {id = 21,dmg = 0}, -- Lapis Lazuli Ore
- {id = 56,dmg = 0}, -- Diamond Ore
- {id = 73,dmg = 0}, -- Redstone Ore
- {id = 129,dmg = 0}, -- Emerald Ore
- {id = 458,dmg = 0}, -- Sulfur
- {id = 458,dmg = 1}, -- Saltpeter
- {id = 722,dmg = 5}, -- Platinum Ore
- {id = 854,dmg = 0}, -- Certus Quartz Ore
- {id = 1398,dmg = 0}, -- Apatite Ore
- {id = 1475,dmg = 5}, -- Aluminium Ore
- {id = 1607,dmg = 2}, -- Cadmium
- {id = 1607,dmg = 3}, -- Indium
- {id = 1607,dmg = 4}, -- Silvera
- {id = 1607,dmg = 7}, -- Calcite
- {id = 1607,dmg = 8}, -- Magnetite
- --leaving out Fluorite id = 1609 dmg = 1..7
- {id = 2001,dmg = 0}, -- Copper Ore
- {id = 2001,dmg = 1}, -- Tin Ore
- {id = 2001,dmg = 2}, -- Silver
- {id = 2001,dmg = 3}, -- Lead
- {id = 2001,dmg = 4}, -- Ferrous
- {id = 2148,dmg = 0}, -- Yellorite
- {id = 2403,dmg = 0}, -- Cinnabar
- {id = 2403,dmg = 1}, -- Air Infused
- {id = 2403,dmg = 2}, -- Fire Infused
- {id = 2403,dmg = 3}, -- Water Infused
- {id = 2403,dmg = 4}, -- Earth Infused
- {id = 2403,dmg = 5}, -- Order Infused
- {id = 2403,dmg = 6}, -- Enthropy Infused
- {id = 2403,dmg = 7}, -- Amber Bearing Stone
- {id = 2431,dmg = 0}, -- Mimichite
- {id = 2483,dmg = 0}, -- Uranium
- {id = 0,dmg = 16 }, -- Not an item, but in here because weird off by one error
- }
- -- init
- ae = peripheral.wrap("back")
- monitor = peripheral.wrap("top")
- chest_dir = "west"
- redstone_output = "right"
- redstone_input = "left"
- function isMatch(item)
- for i = 1, #ore_list do
- if ore_list[i]["id"] == item["id"] and ore_list[i]["dmg"] == item["dmg"] then
- return true
- end
- end
- return false
- end
- function trimList(list)
- local returnlist = {}
- for i = 1,#list do
- if isMatch(list[i]) then
- table.insert(returnlist,list[i])
- end
- end
- return returnlist
- end
- function getLargest(item_list,largest_item)
- if next(item_list) == nil then
- return largest_item
- end
- tail = table.remove(item_list,#item_list)
- if tail["qty"] <= largest_item["qty"] then
- return getLargest(item_list,largest_item)
- else
- return getLargest(item_list,tail)
- end
- end
- function getQty(id,dmg)
- local items = ae.getAvailableItems()
- for i = 1,#items do
- if items[i]["id"]==id and items[i]["dmg"]==dmg then
- return items[i]["qty"]
- end
- end
- return 0
- end
- function depleteItems(_id,_dmg)
- local _qty = getQty(_id,_dmg)
- while _qty > 0
- _qty = getQty(_id,_dmg)
- if _qty >= 64 then
- ae.extractItem({id = _id, qty = 64,dmg = _dmg},chest_dir)
- else
- ae.extractItem({id = _id,qty = _qty,dmg = _dmg},chest_dir)
- end
- end
- end
- rs.setOutput(redstone_output,true) -- turn on computer checking extractor contents
- while next(trimList(ae.getAvailableItems())) ~= nil do
- while rs.getInput(redstone_input) do
- sleep(0.2)
- end
- local processed_item = getLargest(trimList(ae.getAvailableItems()),{qty=0})
- -- output currently processed ore to monitor
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.write(processed_item["name"])
- depleteItems(processed_item["id"],processed_item["dmg"])
- end
- rs.setOutput(redstone_output,false)
- monitor.clear()
- monitor.setCursorPos(1,1)
- montior.write("finished")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement