megakiller19961

Untitled

Oct 6th, 2025
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.66 KB | None | 0 0
  1. -- energyMonitor.lua
  2. -- Zeigt den Energieinhalt eines Speichers (rechts) auf einem Monitor (oben) an.
  3. -- Entwickelt für Advanced Computer (CC: Tweaked)
  4.  
  5. -- Peripheriegeräte abrufen
  6. local battery = peripheral.wrap("right")
  7. local monitor = peripheral.wrap("top")
  8.  
  9. if not battery then
  10.     error("❌ Kein Energiespeicher rechts gefunden!")
  11. end
  12.  
  13. if not monitor then
  14.     error("❌ Kein Monitor oben gefunden!")
  15. end
  16.  
  17. -- Monitor vorbereiten
  18. monitor.setTextScale(1)
  19. monitor.setBackgroundColor(colors.black)
  20. monitor.clear()
  21. monitor.setCursorPos(1,1)
  22.  
  23. -- Funktion zum Zeichnen des Fortschrittsbalkens
  24. local function drawBar(x, y, width, percent)
  25.     local filled = math.floor(width * percent)
  26.     monitor.setCursorPos(x, y)
  27.     monitor.setBackgroundColor(colors.green)
  28.     monitor.write(string.rep(" ", filled))
  29.     monitor.setBackgroundColor(colors.gray)
  30.     monitor.write(string.rep(" ", width - filled))
  31.     monitor.setBackgroundColor(colors.black)
  32. end
  33.  
  34. -- Funktion, um Energie aus verschiedenen Mods zu lesen
  35. local function getEnergyData(periph)
  36.     local stored, max = 0, 0
  37.  
  38.     if periph.getEnergyStored and periph.getMaxEnergyStored then
  39.         stored = periph.getEnergyStored()
  40.         max = periph.getMaxEnergyStored()
  41.     elseif periph.getEnergy and periph.getMaxEnergy then
  42.         stored = periph.getEnergy()
  43.         max = periph.getMaxEnergy()
  44.     elseif periph.getStored and periph.getCapacity then
  45.         stored = periph.getStored()
  46.         max = periph.getCapacity()
  47.     else
  48.         error("⚠️ Unbekannte Energie-API – Block unterstützt keine Energieabfrage.")
  49.     end
  50.  
  51.     return stored, max
  52. end
  53.  
  54. -- Hauptschleife
  55. while true do
  56.     monitor.clear()
  57.     monitor.setCursorPos(1,1)
  58.     monitor.setTextColor(colors.white)
  59.  
  60.     local ok, energyStored, energyCapacity = pcall(function()
  61.         local s, m = getEnergyData(battery)
  62.         return s, m
  63.     end)
  64.  
  65.     if not ok then
  66.         monitor.setTextColor(colors.red)
  67.         monitor.write("Fehler beim Lesen der Energie!")
  68.         sleep(2)
  69.     else
  70.         local percent = (energyCapacity > 0) and (energyStored / energyCapacity) or 0
  71.         local percentText = string.format("%.1f%%", percent * 100)
  72.  
  73.         monitor.setTextColor(colors.cyan)
  74.         monitor.write("Energie-Speicher")
  75.         monitor.setCursorPos(1,2)
  76.         monitor.setTextColor(colors.white)
  77.         monitor.write(string.format("%d / %d RF", energyStored, energyCapacity))
  78.         monitor.setCursorPos(1,3)
  79.         drawBar(1, 3, 25, percent)
  80.         monitor.setCursorPos(1,5)
  81.         monitor.setTextColor(colors.yellow)
  82.         monitor.write("Fuellstand: " .. percentText)
  83.     end
  84.  
  85.     sleep(2)
  86. end
  87.  
Advertisement
Add Comment
Please, Sign In to add comment