Margresse404

AE2_V2

Jun 15th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. --Monitors stuff
  2. local monitors
  3. monitors = peripheral.wrap("left")
  4. function resetColors()
  5. monitors.setTextColor(colors.white)
  6. monitors.setBackgroundColor(colors.black)
  7. end
  8.  
  9. local timeSteps = 10
  10. local counter = 0
  11.  
  12. --Matrix (?)
  13. function matrix(M,N)
  14. local mt
  15. mt = {}
  16. for i=1,M do
  17. mt[i] = {}
  18. for j=1,N do
  19. mt[i][j] = 0
  20. end
  21. end
  22. return mt
  23. end
  24.  
  25.  
  26. function vector(N)
  27. local mt
  28. mt = {}
  29. for i=1,N do
  30. mt[i] = 0
  31. end
  32. return mt
  33. end
  34.  
  35. function vectorMinus(vec1,vec2)
  36. tempVec = vector(#vec1)
  37. for i = 1, #vec1, 1 do
  38. tempVec[i]= vec1[i] - vec2[i]
  39. end
  40. return tempVec
  41. end
  42.  
  43.  
  44.  
  45. --Loading screen
  46. monitors.clear()
  47. monitors.setCursorPos(1,1)
  48. monitors.write("Loading....")
  49.  
  50.  
  51. local AE2
  52. AE2 = peripheral.wrap("tileinterface_4")
  53. local items
  54. local numberOfItems
  55. local coalSpeed = 0
  56. local coalSpeedValuesTable = {0,0,0,0,0,0,0,0,0,0}
  57. local averageTenMinuteMiningSpeed
  58.  
  59. --Items to be monitored
  60. --SET THESE YOURSELF
  61. local itemsToBeMonitored = {"minecraft:coal", "appliedenergistics2:item.ItemMultiMaterial:1", "DraconicEvolution:draconiumIngot", "minecraft:cobblestone","minecraft:redstone"}
  62. local labels = {"coal", "charged certus", "draconium", "cobblestone", "redstone"}
  63. local itemObjects = vector(#itemsToBeMonitored)
  64.  
  65. --The matrices that track the speed differences
  66. local speeds = vector(#itemsToBeMonitored)
  67. local pastSpeeds = matrix(#itemsToBeMonitored, timeSteps)
  68. local averageSpeeds = vector(#itemsToBeMonitored)
  69.  
  70.  
  71. function regetItems()
  72. items = AE2.getAvailableItems(1)
  73. numberOfItems = #items
  74. end
  75.  
  76. function newLine()
  77. local x
  78. local y
  79. x, y = monitors.getCursorPos()
  80. y = y + 1
  81. monitors.setCursorPos(1,y)
  82. end
  83.  
  84.  
  85. function getAverages()
  86. local sum
  87. for i = 1, #itemsToBeMonitored, 1 do
  88. sum = 0
  89. for j = 1, #pastSpeeds[i], 1 do
  90. sum = sum + pastSpeeds[i][j]
  91. end
  92. averageSpeeds[i] = sum / #pastSpeeds[i]
  93. end
  94.  
  95. end
  96.  
  97. function addToList(table, number)
  98. for i = 1, #table - 1, 1 do
  99. j = i + 1
  100. table[i] = table[j]
  101. end
  102. table[#table] = number
  103. return table
  104. end
  105.  
  106. function printColoredNumber(number)
  107.  
  108. if number < 0 then
  109. monitors.setTextColor(colors.red)
  110. elseif number < 10 then
  111. monitors.setTextColor(colors.yellow)
  112. elseif number < 40 then
  113. monitors.setTextColor(colors.green)
  114. else
  115. monitors.setTextColor(colors.lime)
  116. end
  117. monitors.write(number)
  118. resetColors()
  119. end
  120.  
  121. function writeToScreen(text)
  122. --Resetting screen
  123. monitors.clear()
  124. monitors.setCursorPos(1,1)
  125. --Header
  126. monitors.setBackgroundColor(colors.red)
  127. monitors.write("********************************")
  128. newLine()
  129. monitors.write(" AE2 Monitoring program ")
  130. newLine()
  131. monitors.write("********************************")
  132. newLine()
  133. monitors.setBackgroundColor(colors.black)
  134. monitors.setTextColor(colors.magenta)
  135. monitors.write("Written by Merlione404")
  136. resetColors()
  137. --Real information
  138. newLine()
  139. newLine()
  140.  
  141. --Write something for each item to be monitored
  142. for i = 1, #itemsToBeMonitored, 1 do
  143. monitors.write("Current "..labels[i].." rate: ")
  144. printColoredNumber(speeds[i])
  145. monitors.write("/minute")
  146. newLine()
  147. if counter < timeSteps then
  148. monitors.write("Time average not yet available.")
  149. else
  150. monitors.write("Average of the last 10 minutes: "..averageSpeeds[i].." per minute")
  151. end
  152. newLine()
  153. end
  154.  
  155. monitors.write(text)
  156. end
  157.  
  158. function getNBTHash(itemname)
  159. regetItems()
  160. for i = 1, numberOfItems, 1 do
  161. if items[i].fingerprint.id == itemname then
  162. return items[i].fingerprint.nbt_hash
  163. end
  164. end
  165. end
  166.  
  167. regetItems()
  168.  
  169.  
  170.  
  171. -- Get hashes for all the items and create the item objects
  172. for i = 1, #itemsToBeMonitored, 1 do
  173. --Gets the hash for each items
  174. hash = getNBTHash(itemsToBeMonitored[i])
  175.  
  176. local tempItem = {id = itemsToBeMonitored[i], dmg = 0, nbt_hash = hash}
  177. itemObjects[i] = tempItem
  178. end
  179.  
  180. local oldAmount = vector(#itemsToBeMonitored)
  181.  
  182. function getAmounts()
  183. tempVec = vector(#itemsToBeMonitored)
  184. for i = 1, #itemsToBeMonitored, 1 do
  185. tempVec[i]= AE2.getItemDetail(itemObjects[i] , false).qty
  186. end
  187. return tempVec
  188. end
  189.  
  190. while true do
  191.  
  192.  
  193.  
  194. oldAmount = getAmounts()
  195. sleep(60)
  196. newAmount = getAmounts()
  197. speeds = vectorMinus(newAmount,oldAmount)
  198.  
  199. for i = 1, #itemsToBeMonitored, 1 do
  200. pastSpeeds[i] = addToList(pastSpeeds[i], speeds[i])
  201. end
  202. getAverages()
  203. counter = counter + 1
  204. writeToScreen(".....")
  205.  
  206. end
Advertisement
Add Comment
Please, Sign In to add comment