firex20

detect_energy_level

Nov 10th, 2025 (edited)
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.80 KB | Gaming | 0 0
  1. -- detect_energy_level.lua
  2. -- Muestra el nivel de energía (FE) de un bloque detrás del ordenador
  3.  
  4. local side = "back" -- bloque que contiene energía (detrás del ordenador)
  5.  
  6. -- función para obtener energía actual y capacidad
  7. local function getEnergy(side)
  8.     local methods = {
  9.         {"getEnergyStored", "getEnergyCapacity"},
  10.         {"getEnergy", "getMaxEnergy"},
  11.         {"getEnergyStored", "getMaxEnergyStored"},
  12.         {"getEnergy", "getEnergyCapacity"},
  13.         {"getEnergyStats"} -- algunos mods devuelven una tabla {energy, capacity}
  14.     }
  15.  
  16.     for _, pair in ipairs(methods) do
  17.         local curMeth, capMeth = pair[1], pair[2]
  18.         local ok1, cur = pcall(peripheral.call, side, curMeth)
  19.         local ok2, cap = pcall(peripheral.call, side, capMeth)
  20.  
  21.         -- caso donde ambos devuelven números
  22.         if ok1 and ok2 and type(cur) == "number" and type(cap) == "number" then
  23.             return cur, cap
  24.         end
  25.  
  26.         -- caso especial: devuelve una tabla con energy y capacity
  27.         if ok1 and type(cur) == "table" and cur.energy and cur.capacity then
  28.             return cur.energy, cur.capacity
  29.         end
  30.     end
  31.  
  32.     return nil, nil
  33. end
  34.  
  35. -- bucle principal
  36. while true do
  37.     term.clear()
  38.     term.setCursorPos(1, 1)
  39.  
  40.     if not peripheral.isPresent(side) then
  41.         print("No hay periférico en el lado: " .. side)
  42.     else
  43.         local energy, capacity = getEnergy(side)
  44.         if energy and capacity then
  45.             local percent = (energy / capacity) * 100
  46.             print(("Energía: %d / %d FE (%.1f%%)"):format(energy, capacity, percent))
  47.         else
  48.             print("No se pudo leer energía del bloque en " .. side)
  49.             print("Asegúrate de que el bloque expone su energía como periférico.")
  50.         end
  51.     end
  52.  
  53.     sleep(1)
  54. end
  55.  
Advertisement
Add Comment
Please, Sign In to add comment