Advertisement
colhaydutu

emcfarmauto

Oct 20th, 2024 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. local modem = peripheral.wrap("back")
  2. local monitor = peripheral.wrap("top")
  3. modem.open(1)
  4.  
  5. local source = peripheral.getNames()
  6. local last = nil
  7.  
  8. local itemAliases = {
  9. ["projecte:item.pe_matter"] = "Red Matter",
  10. ["projecte:rm_furnace"] = "RM Furnace",
  11. ["projecte:matter_block"] = "RM Block",
  12. ["projecte:item.pe_fuel"] = "Mobius Fuel"
  13. }
  14.  
  15. local function getItemAlias(itemName)
  16. return itemAliases[itemName] or itemName
  17. end
  18.  
  19. local function formatEMCValue(emc)
  20. return string.format("%.2fB", emc / 1000000000)
  21. end
  22.  
  23. local function getEMCValue(itemName, itemCount)
  24. local emcValues = {
  25. ["Red Matter"] = 466944,
  26. ["RM Furnace"] = 10059784,
  27. ["RM Block"] = 1867776,
  28. ["Mobius Fuel"] = 2048
  29. }
  30. return emcValues[itemName] and itemCount * emcValues[itemName] or 0
  31. end
  32.  
  33. local function getItemsWithPrefix(prefix, items)
  34. local filteredItems = {}
  35.  
  36. for _, item in pairs(items) do
  37. local itemName = item.name
  38. if string.sub(itemName, 1, #prefix) == prefix then
  39. local alias = getItemAlias(itemName)
  40. local emc = getEMCValue(alias, item.count)
  41. table.insert(filteredItems, { name = alias, count = item.count, emc = emc })
  42. end
  43. end
  44.  
  45. return filteredItems
  46. end
  47.  
  48. while true do
  49. local items = last and last.list() or {}
  50. local filteredItems = getItemsWithPrefix("projecte:", items)
  51.  
  52.  
  53. monitor.clear()
  54. monitor.setBackgroundColor(colors.black)
  55. monitor.setTextColor(colors.red)
  56. monitor.setCursorPos(1, 1)
  57. monitor.write("Chest Contents")
  58.  
  59. local cursorPos = 3
  60. for _, item in ipairs(filteredItems) do
  61. monitor.setCursorPos(1, cursorPos)
  62. monitor.write(item.name .. ": " .. item.count)
  63. monitor.setCursorPos(1, cursorPos + 1)
  64. monitor.write("EMC: " .. formatEMCValue(item.emc))
  65. cursorPos = cursorPos + 2
  66. end
  67.  
  68. local targetChests = {}
  69. local sourceChests = {}
  70.  
  71. for _, name in ipairs(source) do
  72. if string.match(name, "projecte:condenser_mk2") then
  73. table.insert(targetChests, peripheral.wrap(name))
  74. elseif string.match(name, "projecte:condenser") and not string.match(name, "projecte:condenser_mk2") then
  75. table.insert(sourceChests, peripheral.wrap(name))
  76. elseif string.match(name, "black_hole_unit") then
  77. last = peripheral.wrap(name)
  78. end
  79. end
  80.  
  81.  
  82. for _, targetChest in ipairs(targetChests) do
  83. for _, sourceChest in ipairs(sourceChests) do
  84. for slot = 1, 5 do
  85. sourceChest.pushItems(peripheral.getName(targetChest), slot)
  86. end
  87. end
  88.  
  89. if last then
  90. for slot = 42, 46 do
  91. targetChest.pushItems(peripheral.getName(last), slot)
  92. end
  93. end
  94. end
  95.  
  96. sleep(0.01)
  97. end
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement