From 6980e692d006de5a026e7255c76e6debd89a575f Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Thu, 30 Jan 2025 12:06:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=B9=E5=99=A8=E8=BD=BD?= =?UTF-8?q?=E5=85=B7=E6=8F=90=E5=8F=96=E7=89=A9=E5=93=81=E8=83=BD=E9=87=8F?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/ContainerMobileEntity.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java index 8f8da6454..faf21f65d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java @@ -22,7 +22,6 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.Nullable; import org.joml.Math; @@ -82,17 +81,21 @@ public class ContainerMobileEntity extends MobileVehicleEntity implements HasCus super.baseTick(); // pickUpItem(); - this.getItemStacks().stream().filter(stack -> stack.is(ModItems.CELL.get()) && stack.getCapability(ForgeCapabilities.ENERGY).map(IEnergyStorage::getEnergyStored).orElse(0) > 0) - .forEach(stack -> - stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(energyStorage -> { - if (this.getEnergy() < this.getMaxEnergy()) { - int energy = this.getMaxEnergy() - this.getEnergy(); - int stackEnergyNeed = Math.min(energyStorage.getEnergyStored(), energy); - energyStorage.extractEnergy(stackEnergyNeed, false); - this.setEnergy(this.getEnergy() + stackEnergyNeed); - } - }) - ); + for (var stack : this.getItemStacks()) { + int neededEnergy = this.getMaxEnergy() - this.getEnergy(); + if (neededEnergy <= 0) break; + + var energyCap = stack.getCapability(ForgeCapabilities.ENERGY).resolve(); + if (energyCap.isEmpty()) continue; + + var energyStorage = energyCap.get(); + var stored = energyStorage.getEnergyStored(); + if (stored <= 0) continue; + + int energyToExtract = Math.min(stored, neededEnergy); + energyStorage.extractEnergy(energyToExtract, false); + this.setEnergy(this.getEnergy() + energyToExtract); + } this.refreshDimensions(); }