Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local modem=peripheral.wrap("monitor_1")
- local reactor=peripheral.wrap("BigReactors-Reactor_1")
- local mon=peripheral.wrap("monitor_1")
- local net=peripheral.wrap("back")
- net.open(156)
- local maxEnergy=10000000
- local pad=0
- local bufferSwitch=93 -- above which energy capacity percent the power production will halt.
- mon.setBackgroundColor(colors.black)
- mon.clear()
- while true do
- -- retrieve data from reactor
- local energyPercent=(reactor.getEnergyStored()/maxEnergy)*100
- local fuelPercent=reactor.getFuelAmount()/reactor.getFuelAmountMax()
- local energyRateTick=reactor.getEnergyProducedLastTick()
- local fuelPerHour=(reactor.getFuelConsumedLastTick()*20*3600)/1000 -- ingots/buckets per hour
- local active=reactor.getActive()
- -- reactor auto management
- reactor.setActive(energyPercent<bufferSwitch)
- reactor.setAllControlRodLevels(math.floor(energyPercent))
- -- Clear screen
- mon.setBackgroundColor(colors.black)
- mon.clear()
- -- Title
- mon.setCursorPos(2,2)
- mon.setBackgroundColor(colors.purple)
- mon.setTextColor(colors.yellow)
- mon.setTextScale(0.5)
- mon.write("NMDanny's Reactor Control v1")
- -- Informative text
- mon.setCursorPos(2,5)
- mon.setBackgroundColor(colors.black)
- mon.setTextColor(colors.white)
- mon.setTextScale(0.5)
- mon.write("Reactor is ")
- if(active) then
- mon.setTextColor(colors.green)
- mon.write("ACTIVE")
- else
- mon.setTextColor(colors.red)
- mon.write("INACTIVE")
- end
- info={"Current energy capacity","Maximum energy capacity","Energy buffer percent","Energy production rate","Fuel usage","Fuel rod level"}
- values={math.modf(reactor.getEnergyStored()),maxEnergy,math.floor(energyPercent),math.ceil(energyRateTick),math.ceil(fuelPerHour),reactor.getControlRodLevel(1)}
- units={" RF"," RF","% RF"," RF/t"," buckets per hour","%"}
- -- Send information
- net.transmit(156,156,textutils.serialize(values))
- -- On program first run, check for padding
- if(pad==0) then
- for i=1,#info,1 do
- pad=math.max(pad,#(info[i]..": "..values[i]..units[i]))
- end
- end
- -- Print data
- mon.setTextColor(colors.white)
- for i=1,#info,1 do
- mon.setCursorPos(2,5+i)
- local tempPad=pad-#(info[i]..": "..values[i]..units[i])
- mon.write(info[i]..": "..string.rep(" ",tempPad)..values[i]..units[i])
- end
- sleep(2)
- end
Advertisement
Add Comment
Please, Sign In to add comment