From fed3dcca79f3b377d9202a61fea45152ef73c21d Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Mon, 16 Dec 2024 16:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=85=85=E7=94=B5=E7=AB=99?= =?UTF-8?q?=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/entity/ChargingStationBlockEntity.java | 2 +- .../atsuishio/superbwarfare/entity/AnnihilatorEntity.java | 5 +++++ .../com/atsuishio/superbwarfare/entity/IChargeEntity.java | 2 ++ .../com/atsuishio/superbwarfare/entity/SpeedboatEntity.java | 5 +++++ 4 files changed, 13 insertions(+), 1 deletion(-) 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();