From e481c42f82a988c39eddbe7a5e36bdd1065c34ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 3 Aug 2021 01:59:58 +0200 Subject: [PATCH] Make charger an RPC device, getter for whether currently charging. --- .../common/tileentity/ChargerTileEntity.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/tileentity/ChargerTileEntity.java b/src/main/java/li/cil/oc2/common/tileentity/ChargerTileEntity.java index dfd5a881..2e3ca7df 100644 --- a/src/main/java/li/cil/oc2/common/tileentity/ChargerTileEntity.java +++ b/src/main/java/li/cil/oc2/common/tileentity/ChargerTileEntity.java @@ -1,5 +1,7 @@ package li.cil.oc2.common.tileentity; +import li.cil.oc2.api.bus.device.object.Callback; +import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.common.Config; import li.cil.oc2.common.Constants; import li.cil.oc2.common.capabilities.Capabilities; @@ -17,10 +19,14 @@ import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.items.IItemHandler; import javax.annotation.Nullable; +import java.util.Collection; import java.util.List; -public final class ChargerTileEntity extends AbstractTileEntity implements ITickableTileEntity { +import static java.util.Collections.singletonList; + +public final class ChargerTileEntity extends AbstractTileEntity implements ITickableTileEntity, NamedDevice { private final FixedEnergyStorage energy = new FixedEnergyStorage(Config.chargerEnergyStorage); + private boolean isCharging; /////////////////////////////////////////////////////////////////// @@ -32,6 +38,7 @@ public final class ChargerTileEntity extends AbstractTileEntity implements ITick @Override public void tick() { + isCharging = false; chargeBlock(); chargeEntities(); } @@ -52,6 +59,16 @@ public final class ChargerTileEntity extends AbstractTileEntity implements ITick energy.deserializeNBT(tag.getCompound(Constants.ENERGY_TAG_NAME)); } + @Callback + public boolean isCharging() { + return isCharging; + } + + @Override + public Collection getDeviceTypeNames() { + return singletonList("charger"); + } + /////////////////////////////////////////////////////////////////// @Override @@ -99,6 +116,8 @@ public final class ChargerTileEntity extends AbstractTileEntity implements ITick private void charge(final IEnergyStorage energyStorage) { final int amount = Math.min(energy.getEnergyStored(), Config.chargerEnergyPerTick); - energy.extractEnergy(energyStorage.receiveEnergy(amount, false), false); + if (energy.extractEnergy(energyStorage.receiveEnergy(amount, false), false) > 0) { + isCharging = true; + } } }