-- energia.lua
-- Muestra el nivel de energía (FE) de un bloque detrás del ordenador
local side = "back" -- bloque que contiene energía (detrás del ordenador)
-- función para obtener energía actual y capacidad
local function getEnergy(side)
local methods = {
{"getEnergyStored", "getEnergyCapacity"},
{"getEnergy", "getMaxEnergy"},
{"getEnergyStored", "getMaxEnergyStored"},
{"getEnergy", "getEnergyCapacity"},
{"getEnergyStats"} -- algunos mods devuelven tabla {energy, capacity}
}
for _, pair in ipairs(methods) do
local curMeth, capMeth = pair[1], pair[2]
if peripheral.hasType(side) or peripheral.getType(side) then
local ok1, cur = pcall(peripheral.call, side, curMeth)
local ok2, cap = pcall(peripheral.call, side, capMeth)
if ok1 and ok2 and type(cur) == "number" and type(cap) == "number" then
return cur, cap
elseif ok1 and type(cur) == "table" and cur.energy and cur.capacity then
return cur.energy, cur.capacity
end
end
end
return nil, nil
end
while true do
local energy, capacity = getEnergy(side)
term.clear()
term.setCursorPos(1,1)
if energy and capacity then
local percent = (energy / capacity) * 100
print(("Energía: %d / %d FE (%.1f%%)"):format(energy, capacity, percent))
else
print("No se pudo leer energía del bloque en "..side)
print("Asegúrate de que el bloque está conectado como periférico.")
end
sleep(1)
end