Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- energyMonitor.lua
- -- Zeigt den Energieinhalt eines Speichers (rechts) auf einem Monitor (oben) an.
- -- Entwickelt für Advanced Computer (CC: Tweaked)
- -- Peripheriegeräte abrufen
- local battery = peripheral.wrap("right")
- local monitor = peripheral.wrap("top")
- if not battery then
- error("❌ Kein Energiespeicher rechts gefunden!")
- end
- if not monitor then
- error("❌ Kein Monitor oben gefunden!")
- end
- -- Monitor vorbereiten
- monitor.setTextScale(1)
- monitor.setBackgroundColor(colors.black)
- monitor.clear()
- monitor.setCursorPos(1,1)
- -- Funktion zum Zeichnen des Fortschrittsbalkens
- local function drawBar(x, y, width, percent)
- local filled = math.floor(width * percent)
- monitor.setCursorPos(x, y)
- monitor.setBackgroundColor(colors.green)
- monitor.write(string.rep(" ", filled))
- monitor.setBackgroundColor(colors.gray)
- monitor.write(string.rep(" ", width - filled))
- monitor.setBackgroundColor(colors.black)
- end
- -- Funktion, um Energie aus verschiedenen Mods zu lesen
- local function getEnergyData(periph)
- local stored, max = 0, 0
- if periph.getEnergyStored and periph.getMaxEnergyStored then
- stored = periph.getEnergyStored()
- max = periph.getMaxEnergyStored()
- elseif periph.getEnergy and periph.getMaxEnergy then
- stored = periph.getEnergy()
- max = periph.getMaxEnergy()
- elseif periph.getStored and periph.getCapacity then
- stored = periph.getStored()
- max = periph.getCapacity()
- else
- error("⚠️ Unbekannte Energie-API – Block unterstützt keine Energieabfrage.")
- end
- return stored, max
- end
- -- Hauptschleife
- while true do
- monitor.clear()
- monitor.setCursorPos(1,1)
- monitor.setTextColor(colors.white)
- local ok, energyStored, energyCapacity = pcall(function()
- local s, m = getEnergyData(battery)
- return s, m
- end)
- if not ok then
- monitor.setTextColor(colors.red)
- monitor.write("Fehler beim Lesen der Energie!")
- sleep(2)
- else
- local percent = (energyCapacity > 0) and (energyStored / energyCapacity) or 0
- local percentText = string.format("%.1f%%", percent * 100)
- monitor.setTextColor(colors.cyan)
- monitor.write("Energie-Speicher")
- monitor.setCursorPos(1,2)
- monitor.setTextColor(colors.white)
- monitor.write(string.format("%d / %d RF", energyStored, energyCapacity))
- monitor.setCursorPos(1,3)
- drawBar(1, 3, 25, percent)
- monitor.setCursorPos(1,5)
- monitor.setTextColor(colors.yellow)
- monitor.write("Fuellstand: " .. percentText)
- end
- sleep(2)
- end
Advertisement
Add Comment
Please, Sign In to add comment