Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Monitors stuff
- local monitors
- monitors = peripheral.wrap("left")
- function resetColors()
- monitors.setTextColor(colors.white)
- monitors.setBackgroundColor(colors.black)
- end
- local timeSteps = 10
- local counter = 0
- --Matrix (?)
- function matrix(M,N)
- local mt
- mt = {}
- for i=1,M do
- mt[i] = {}
- for j=1,N do
- mt[i][j] = 0
- end
- end
- return mt
- end
- function vector(N)
- local mt
- mt = {}
- for i=1,N do
- mt[i] = 0
- end
- return mt
- end
- function vectorMinus(vec1,vec2)
- tempVec = vector(#vec1)
- for i = 1, #vec1, 1 do
- tempVec[i]= vec1[i] - vec2[i]
- end
- return tempVec
- end
- --Loading screen
- monitors.clear()
- monitors.setCursorPos(1,1)
- monitors.write("Loading....")
- local AE2
- AE2 = peripheral.wrap("tileinterface_4")
- local items
- local numberOfItems
- local coalSpeed = 0
- local coalSpeedValuesTable = {0,0,0,0,0,0,0,0,0,0}
- local averageTenMinuteMiningSpeed
- --Items to be monitored
- --SET THESE YOURSELF
- local itemsToBeMonitored = {"minecraft:coal", "appliedenergistics2:item.ItemMultiMaterial:1", "DraconicEvolution:draconiumIngot", "minecraft:cobblestone","minecraft:redstone"}
- local labels = {"coal", "charged certus", "draconium", "cobblestone", "redstone"}
- local itemObjects = vector(#itemsToBeMonitored)
- --The matrices that track the speed differences
- local speeds = vector(#itemsToBeMonitored)
- local pastSpeeds = matrix(#itemsToBeMonitored, timeSteps)
- local averageSpeeds = vector(#itemsToBeMonitored)
- function regetItems()
- items = AE2.getAvailableItems(1)
- numberOfItems = #items
- end
- function newLine()
- local x
- local y
- x, y = monitors.getCursorPos()
- y = y + 1
- monitors.setCursorPos(1,y)
- end
- function getAverages()
- local sum
- for i = 1, #itemsToBeMonitored, 1 do
- sum = 0
- for j = 1, #pastSpeeds[i], 1 do
- sum = sum + pastSpeeds[i][j]
- end
- averageSpeeds[i] = sum / #pastSpeeds[i]
- end
- end
- function addToList(table, number)
- for i = 1, #table - 1, 1 do
- j = i + 1
- table[i] = table[j]
- end
- table[#table] = number
- return table
- end
- function printColoredNumber(number)
- if number < 0 then
- monitors.setTextColor(colors.red)
- elseif number < 10 then
- monitors.setTextColor(colors.yellow)
- elseif number < 40 then
- monitors.setTextColor(colors.green)
- else
- monitors.setTextColor(colors.lime)
- end
- monitors.write(number)
- resetColors()
- end
- function writeToScreen(text)
- --Resetting screen
- monitors.clear()
- monitors.setCursorPos(1,1)
- --Header
- monitors.setBackgroundColor(colors.red)
- monitors.write("********************************")
- newLine()
- monitors.write(" AE2 Monitoring program ")
- newLine()
- monitors.write("********************************")
- newLine()
- monitors.setBackgroundColor(colors.black)
- monitors.setTextColor(colors.magenta)
- monitors.write("Written by Merlione404")
- resetColors()
- --Real information
- newLine()
- newLine()
- --Write something for each item to be monitored
- for i = 1, #itemsToBeMonitored, 1 do
- monitors.write("Current "..labels[i].." rate: ")
- printColoredNumber(speeds[i])
- monitors.write("/minute")
- newLine()
- if counter < timeSteps then
- monitors.write("Time average not yet available.")
- else
- monitors.write("Average of the last 10 minutes: "..averageSpeeds[i].." per minute")
- end
- newLine()
- end
- monitors.write(text)
- end
- function getNBTHash(itemname)
- regetItems()
- for i = 1, numberOfItems, 1 do
- if items[i].fingerprint.id == itemname then
- return items[i].fingerprint.nbt_hash
- end
- end
- end
- regetItems()
- -- Get hashes for all the items and create the item objects
- for i = 1, #itemsToBeMonitored, 1 do
- --Gets the hash for each items
- hash = getNBTHash(itemsToBeMonitored[i])
- local tempItem = {id = itemsToBeMonitored[i], dmg = 0, nbt_hash = hash}
- itemObjects[i] = tempItem
- end
- local oldAmount = vector(#itemsToBeMonitored)
- function getAmounts()
- tempVec = vector(#itemsToBeMonitored)
- for i = 1, #itemsToBeMonitored, 1 do
- tempVec[i]= AE2.getItemDetail(itemObjects[i] , false).qty
- end
- return tempVec
- end
- while true do
- oldAmount = getAmounts()
- sleep(60)
- newAmount = getAmounts()
- speeds = vectorMinus(newAmount,oldAmount)
- for i = 1, #itemsToBeMonitored, 1 do
- pastSpeeds[i] = addToList(pastSpeeds[i], speeds[i])
- end
- getAverages()
- counter = counter + 1
- writeToScreen(".....")
- end
Advertisement
Add Comment
Please, Sign In to add comment