diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AircraftOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AircraftOverlay.java index d45194db2..66bb0aa7d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AircraftOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AircraftOverlay.java @@ -232,12 +232,14 @@ public class AircraftOverlay implements LayeredDraw.Layer { poseStack.popPose(); // 能量警告 - if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), - (int) x - 144, (int) y + 14, -65536, false); - } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), - (int) x - 144, (int) y + 14, 0xFF6B00, false); + if (mobileVehicle.hasEnergyStorage()) { + if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), + (int) x - 144, (int) y + 14, -65536, false); + } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), + (int) x - 144, (int) y + 14, 0xFF6B00, false); + } } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java index f869448de..1a869f91b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java @@ -138,12 +138,14 @@ public class HelicopterHudOverlay implements LayeredDraw.Layer { w / 2 - 42, h / 2 + 24, -65536, false); } - if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), - w / 2 - 144, h / 2 + 14, -65536, false); - } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), - w / 2 - 144, h / 2 + 14, 0xFF6B00, false); + if (mobileVehicle.hasEnergyStorage()) { + if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), + w / 2 - 144, h / 2 + 14, -65536, false); + } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), + w / 2 - 144, h / 2 + 14, 0xFF6B00, false); + } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java index d6179d24f..ae722cf39 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java @@ -251,12 +251,14 @@ public class VehicleHudOverlay implements LayeredDraw.Layer { w / 2 + 160, h / 2 - 48, 0x66FF00, false); // 低电量警告 - if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(mc.font, Component.literal("NO POWER!"), - w / 2 - 144, h / 2 + 14, -65536, false); - } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { - guiGraphics.drawString(mc.font, Component.literal("LOW POWER"), - w / 2 - 144, h / 2 + 14, 0xFF6B00, false); + if (mobileVehicle.hasEnergyStorage()) { + if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(mc.font, Component.literal("NO POWER!"), + w / 2 - 144, h / 2 + 14, -65536, false); + } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { + guiGraphics.drawString(mc.font, Component.literal("LOW POWER"), + w / 2 - 144, h / 2 + 14, 0xFF6B00, false); + } } // 测距 diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/ContainerMobileVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/ContainerMobileVehicleEntity.java index 60067b4cb..f91f37ea8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/ContainerMobileVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/ContainerMobileVehicleEntity.java @@ -74,19 +74,21 @@ public abstract class ContainerMobileVehicleEntity extends MobileVehicleEntity i public void baseTick() { super.baseTick(); - for (var stack : this.getItemStacks()) { - int neededEnergy = this.getMaxEnergy() - this.getEnergy(); - if (neededEnergy <= 0) break; + if (this.hasEnergyStorage() && this.tickCount % 20 == 0) { + for (var stack : this.getItemStacks()) { + int neededEnergy = this.getMaxEnergy() - this.getEnergy(); + if (neededEnergy <= 0) break; - var energyCap = stack.getCapability(Capabilities.EnergyStorage.ITEM); - if (energyCap == null) continue; + var energyCap = stack.getCapability(Capabilities.EnergyStorage.ITEM); + if (energyCap == null) continue; - var stored = energyCap.getEnergyStored(); - if (stored <= 0) continue; + var stored = energyCap.getEnergyStored(); + if (stored <= 0) continue; - int energyToExtract = Math.min(stored, neededEnergy); - energyCap.extractEnergy(energyToExtract, false); - this.setEnergy(this.getEnergy() + energyToExtract); + int energyToExtract = Math.min(stored, neededEnergy); + energyCap.extractEnergy(energyToExtract, false); + this.setEnergy(this.getEnergy() + energyToExtract); + } } this.refreshDimensions(); }