Make charger an RPC device, getter for whether currently charging.

This commit is contained in:
Florian Nücke
2021-08-03 01:59:58 +02:00
parent 343941b0f0
commit e481c42f82

View File

@@ -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<String> 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;
}
}
}