diff --git a/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java b/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java index 7f56f6dd2..24fb72f46 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java @@ -163,7 +163,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo List entities = this.level.getEntitiesOfClass(Entity.class, new AABB(this.getBlockPos()).inflate(CHARGE_RADIUS)); entities.forEach(entity -> { - if (entity instanceof IChargeEntity chargeEntity && handler.getEnergyStored() > 0) { + if (entity instanceof IChargeEntity chargeEntity && handler.getEnergyStored() > 0 && chargeEntity.canCharge()) { chargeEntity.charge(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored())); handler.extractEnergy(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored()), false); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java index 1657771e1..5733b1fb7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java @@ -524,4 +524,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit public void charge(int amount) { this.entityData.set(ENERGY, Math.min(this.entityData.get(ENERGY) + amount, CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue())); } + + @Override + public boolean canCharge() { + return this.entityData.get(ENERGY) < CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/IChargeEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/IChargeEntity.java index e99933610..526aff3ea 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/IChargeEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/IChargeEntity.java @@ -3,4 +3,6 @@ package com.atsuishio.superbwarfare.entity; public interface IChargeEntity { void charge(int amount); + + boolean canCharge(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java index 2c36cc6ba..90eebbae9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java @@ -713,6 +713,11 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, this.entityData.set(ENERGY, Math.min(this.entityData.get(ENERGY) + amount, MAX_ENERGY)); } + @Override + public boolean canCharge() { + return this.entityData.get(ENERGY) < MAX_ENERGY; + } + @Override protected boolean canAddPassenger(Entity pPassenger) { return this.getPassengers().size() < this.getMaxPassengers();