Advertisement
eytixis

Rev Reactor Program (Computercraft Mod)

Nov 2nd, 2020 (edited)
2,228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.42 KB | None | 0 0
  1. -- Settings
  2. local interface_enabled = true
  3. local reactor_auto_enable = false
  4. local reactor_minimumbuffer = 75
  5. local reactor_maximumbuffer = 90
  6. local reactor_adjustrods = true
  7. local repeat_interval = 0.5
  8.  
  9.  
  10. local reactor = peripheral.wrap("back")
  11. local term = term
  12.  
  13. local reactor_data = {}
  14.  
  15. local function clearData()
  16.     reactor_data = {}
  17. end
  18. local function termClear()
  19.     term.clear()
  20.     term.setCursorPos(1,1)
  21. end
  22.  
  23. local function readReactor()
  24.     reactor_data.active = reactor.getActive()
  25.     local energystats = reactor.getEnergyStats()
  26.     reactor_data.generation = math.floor(energystats.energyProducedLastTick)
  27.     reactor_data.capacity = energystats.energyCapacity
  28.     reactor_data.energy = energystats.energyStored
  29.     local temp = 100*reactor_data.energy/reactor_data.capacity
  30.     if (temp - math.floor(temp) > 0.5) then
  31.         reactor_data.energyPercentage = math.floor(temp)+1
  32.     else
  33.         reactor_data.energyPercentage = math.floor(temp)
  34.     end
  35. end
  36.  
  37. local function interface()
  38.     termClear()
  39.     print("Active: "..tostring(reactor_data.active))
  40.     print("Energy: "..reactor_data.energyPercentage.."%")
  41.     print("")
  42.     print("Settings")
  43.     print("Buffer Limits: "..tostring(reactor_minimumbuffer).."/"..reactor_maximumbuffer)
  44.     if (reactor_auto_enable) then
  45.         print("Reactor Disables over the Upper Limit")
  46.         print("Reactor Enables under the Lower Limit")
  47.     end
  48.     if (reactor_adjustrods) then
  49.         print("Reactor will adjust Rods")
  50.     end
  51. end
  52.  
  53. local function adjust()
  54.     if (reactor_adjustrods) then
  55.         if (reactor_data.energyPercentage < reactor_minimumbuffer) then
  56.             reactor.setAllControlRodLevels(0)
  57.         elseif (reactor_data.energyPercentage > reactor_maximumbuffer) then
  58.             reactor.setAllControlRodLevels(100)
  59.         else
  60.             reactor.setAllControlRodLevels(reactor_data.energyPercentage)
  61.         end
  62.     end
  63.     if (reactor_auto_enable) then
  64.         if (reactor_data.energyPercentage < reactor_minimumbuffer) then
  65.             reactor.setActive(true)
  66.         elseif (reactor_data.energyPercentage > reactor_maximumbuffer) then
  67.             reactor.setActive(false)
  68.         end
  69.     end
  70. end
  71.  
  72. local function loop()
  73.     while true do
  74.         clearData()
  75.         readReactor()
  76.         adjust()
  77.         if (interface_enabled) then
  78.             interface()
  79.         end
  80.         sleep(repeat_interval)
  81.     end
  82. end
  83.  
  84. loop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement