Labyrinthia

ME_Display

Jan 18th, 2021
918
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Display for specific, user chosen items in a AE2 ME Network.
  2. -- Still very spaghetti, will fix stuff later, it should still work as is though.
  3.  
  4. term.clear()
  5. term.setCursorPos(1,1)
  6. print("Checking if utils.lua is present on this directory...")
  7. sleep(2)
  8. if shell.run("utils.lua") then
  9.     print("utils.lua was sucessfully found, proceeding...")
  10. else
  11.     print("\nutils.lua wasn't found. Attempting to pull it from Pastebin...\n")
  12.     shell.run("pastebin", "get", "p2EdwJ4A", "utils.lua")
  13.     if shell.run("utils.lua") then
  14.         print("\nutils.lua sucessfully obtained. Proceeding...")
  15.     else
  16.         print("\nIt was not possible to obtain the file. Coming back to the command line.")
  17.         sleep(10)
  18.         term.clear()
  19.         term.setCursorPos(1,1)
  20.         return
  21.     end
  22. end
  23. sleep(2)
  24. term.clear()
  25. term.setCursorPos(1,1)
  26.  
  27. os.loadAPI("utils.lua")
  28. ME = peripheral.wrap("left")
  29. MON = peripheral.wrap("right")
  30.  
  31. low = 64 --Threshold for when the quantity text becomes red
  32. high = 1000 --Threshold for when the quantity text becomes red
  33.  
  34. --[[ Table that will be compared to and iterated over, only items on this list will be displayed on the screen.
  35.         To add (as of now, you can only do it manually), more items, please follow the following format (P.S. vanilla items don't need a damage number):
  36.         ["abr:itemnameid_damagevalue"] = {
  37.             name = "Name you want here",
  38.             bookmark = true/false
  39.         } ]]
  40. tracklist = {
  41.     ["minecraft"] = {
  42.  
  43.         abr = "mc",
  44.         color = colors.lightGray,
  45.  
  46.         ["mc:stone"] = {
  47.             name = "Stone",
  48.             bookmark = false
  49.         },
  50.  
  51.         ["mc:iron_ingot"] = {
  52.             name = "Iron Ingot",
  53.             bookmark = false
  54.         },
  55.  
  56.         ["mc:gold_ingot"] = {
  57.             name = "Gold Ingot",
  58.             bookmark = false
  59.         },
  60.  
  61.         ["mc:ender_pearl"] = {
  62.             name = "Ender Pearl",
  63.             bookmark = false
  64.         }
  65.     },
  66.  
  67.     ["draconicevolution"] = {
  68.  
  69.         abr = "drac",
  70.         color = colors.purple,
  71.  
  72.         ["drac:draconium_ingot_0"] = {
  73.             name = "Draconium Ingot",
  74.             bookmark = false
  75.         },
  76.  
  77.         ["drac:draconic_ingot_0"] = {
  78.             name = "Awak. Draconium Ingot",
  79.             bookmark = false
  80.         }
  81.     },
  82.    
  83.     ["mekanism"] = {
  84.  
  85.         abr = "mek",
  86.         color = colors.gray,
  87.  
  88.         ["mek:ingot_0"] = {
  89.             name = "Ref. Obsidian Ingot",
  90.             bookmark = false
  91.         },
  92.  
  93.         ["mek:ingot_1"] = {
  94.             name = "Osmium Ingot",
  95.             bookmark = false
  96.         },
  97.  
  98.         --[[ ["mek:ingot_2"] = {
  99.             name = "Bronze Ingot",
  100.             bookmark = false
  101.         },]]
  102.  
  103.         --[[ ["mek:ingot_3"] = {
  104.             name = "Glowstone Ingot",
  105.             bookmark = false
  106.         },]]
  107.  
  108.         ["mek:ingot_4"] = {
  109.             name = "Steel Ingot",
  110.             bookmark = false
  111.         },
  112.  
  113.         ["mek:ingot_5"] = {
  114.             name = "Copper Ingot",
  115.             bookmark = false
  116.         },
  117.  
  118.         ["mek:ingot_6"] = {
  119.             name = "Tin Ingot",
  120.             bookmark = false
  121.         }
  122.     },
  123.  
  124.     ["techreborn"] = {
  125.  
  126.         abr = "tr",
  127.         color = colors.yellow,
  128.  
  129.         ["tr:ingot_9"] = {
  130.             name = "Nickel Ingot",
  131.             bookmark = false
  132.         }
  133.     },
  134.  
  135.     ["botania"] = {
  136.  
  137.         abr = "bot",
  138.         color = colors.green,
  139.  
  140.         ["bot:manaresource_0"] = {
  141.             name = "Manasteel Ingot",
  142.             bookmark = false
  143.         },
  144.  
  145.         ["bot:manaresource_4"] = {
  146.             name ="Terrasteel Ingot",
  147.             bookmark = false
  148.         },
  149.  
  150.         ["bot:manaresource_7"] = {
  151.             name = "Elementium Ingot",
  152.             bookmark = false
  153.         }
  154.     }
  155. }
  156.  
  157. local function sparkles(yn)
  158.     if tracklist[mod][og_name].bookmark == true then
  159.         term.setTextColor(tracklist[mod].color)
  160.         if yn == true then
  161.             write("\3")
  162.         end
  163.     end
  164. end
  165.  
  166. local function dottedline()
  167.     local head = "-----+"
  168.     local tail = "+------"
  169.     local w, _ = term.getSize()
  170.     write(head)
  171.     for i = (w - (#head + #tail)), 1, -1 do
  172.         write("-")
  173.     end
  174.     print(tail)
  175. end
  176.  
  177. MON.setTextScale(0.5)
  178. while true do
  179.     items = 0
  180.     itemtable = ME.listAvailableItems()
  181.  
  182.     if itemtable ~= old_table then
  183.  
  184.         term.clear()
  185.         write("MOD")
  186.         utils.printSpecificX(" | ", 5)
  187.         utils.printCenter("ITEM")
  188.         utils.printFarRight("|QUANT")
  189.         dottedline()
  190.         analysis_table = {}
  191.  
  192.         for i, j in pairs(itemtable) do
  193.  
  194.             mod, itemname = string.match(j.name, "([^,]+):([^,]+)")
  195.             _, yValue = term.getCursorPos()
  196.  
  197.             if utils.has_key(tracklist, mod) then
  198.                 if mod ~= "minecraft" then
  199.                     itemname = string.format("%s:%s_%s", tracklist[mod].abr, itemname, j.damage)
  200.                 else
  201.                     itemname = string.format("%s:%s", tracklist[mod].abr, itemname)
  202.                 end
  203.             end
  204.            
  205.  
  206.             if utils.has_key(tracklist[mod], itemname) then
  207.        
  208.                 og_name = itemname
  209.                 itemname = tracklist[mod][itemname].name
  210.                 term.setTextColor(tracklist[mod].color)
  211.                 write(string.upper(tracklist[mod].abr))
  212.                 term.setTextColor(colors.white)
  213.                 utils.printSpecificX(" | ", 5)
  214.                 sparkles(false)
  215.                 write(itemname)
  216.                 sparkles(false)
  217.                 term.setTextColor(colors.white)
  218.                 local w, _ = term.getSize()
  219.                 utils.printSpecificX("|", w - 6)
  220.                 sparkles(true)
  221.  
  222.                 if j.count < low then
  223.                     term.setTextColor(colors.red)
  224.                 elseif j.count >= high then
  225.                     term.setTextColor(colors.green)
  226.                 else
  227.                     term.setTextColor(colors.white)
  228.                 end
  229.  
  230.                 if j.count > 999 then
  231.                     qText = string.format("%dK", j.count/1000)
  232.  
  233.                     utils.printFarRight(qText)
  234.                 elseif j.count > 999999 then
  235.                     qText = string.format("%dM", j.count/1000000)
  236.  
  237.                     utils.printFarRight(qText)
  238.                 elseif j.count > 999999999 then
  239.                     qText = string.format("%dB", j.count/1000000000)
  240.  
  241.                     utils.printFarRight(qText)
  242.                 else
  243.                     qText = string.format("%d", j.count)
  244.  
  245.                     utils.printFarRight(qText)
  246.                 end
  247.                 term.setTextColor(colors.white)
  248.                 items = items + 1
  249.  
  250.                 analysis_table[tostring(yValue)] = {["name"] = og_name, ["mod"] = mod}
  251.             end
  252.  
  253.         end
  254.  
  255.         if items == 0 then
  256.             term.setTextColor(colors.red)
  257.             print("No trackable items in the ME System.")
  258.             term.setTextColor(colors.white)
  259.         else
  260.             dottedline()
  261.         end
  262.  
  263.         os.startTimer(2.5)
  264.         event, __, ___, yPos = os.pullEvent()
  265.         if event == "monitor_touch" then
  266.             if utils.has_key(analysis_table, tostring(yPos)) then
  267.                 if tracklist[analysis_table[tostring(yPos)]["mod"]][analysis_table[tostring(yPos)]["name"]].bookmark == true then
  268.                     tracklist[analysis_table[tostring(yPos)]["mod"]][analysis_table[tostring(yPos)]["name"]].bookmark = false
  269.                 else
  270.                     tracklist[analysis_table[tostring(yPos)]["mod"]][analysis_table[tostring(yPos)]["name"]].bookmark = true
  271.                 end
  272.             end
  273.         end
  274.  
  275.     end
  276.  
  277.     term.setCursorPos(1,1)
  278.     old_table = itemtable
  279.     sleep(0)
  280. end
RAW Paste Data