正确检查载具EnergyStorage

This commit is contained in:
Light_Quanta 2025-07-16 02:14:52 +08:00
parent 8bbeff2e7a
commit c39cb62469
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
4 changed files with 36 additions and 28 deletions

View file

@ -232,12 +232,14 @@ public class AircraftOverlay implements LayeredDraw.Layer {
poseStack.popPose(); poseStack.popPose();
// 能量警告 // 能量警告
if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { if (mobileVehicle.hasEnergyStorage()) {
guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) {
(int) x - 144, (int) y + 14, -65536, false); guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"),
} else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { (int) x - 144, (int) y + 14, -65536, false);
guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) {
(int) x - 144, (int) y + 14, 0xFF6B00, false); guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"),
(int) x - 144, (int) y + 14, 0xFF6B00, false);
}
} }
} }
} }

View file

@ -138,12 +138,14 @@ public class HelicopterHudOverlay implements LayeredDraw.Layer {
w / 2 - 42, h / 2 + 24, -65536, false); w / 2 - 42, h / 2 + 24, -65536, false);
} }
if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { if (mobileVehicle.hasEnergyStorage()) {
guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) {
w / 2 - 144, h / 2 + 14, -65536, false); guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"),
} else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { w / 2 - 144, h / 2 + 14, -65536, false);
guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"), } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) {
w / 2 - 144, h / 2 + 14, 0xFF6B00, false); guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("LOW POWER"),
w / 2 - 144, h / 2 + 14, 0xFF6B00, false);
}
} }
} }

View file

@ -251,12 +251,14 @@ public class VehicleHudOverlay implements LayeredDraw.Layer {
w / 2 + 160, h / 2 - 48, 0x66FF00, false); w / 2 + 160, h / 2 - 48, 0x66FF00, false);
// 低电量警告 // 低电量警告
if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) { if (mobileVehicle.hasEnergyStorage()) {
guiGraphics.drawString(mc.font, Component.literal("NO POWER!"), if (mobileVehicle.getEnergy() < 0.02 * mobileVehicle.getMaxEnergy()) {
w / 2 - 144, h / 2 + 14, -65536, false); guiGraphics.drawString(mc.font, Component.literal("NO POWER!"),
} else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) { w / 2 - 144, h / 2 + 14, -65536, false);
guiGraphics.drawString(mc.font, Component.literal("LOW POWER"), } else if (mobileVehicle.getEnergy() < 0.2 * mobileVehicle.getMaxEnergy()) {
w / 2 - 144, h / 2 + 14, 0xFF6B00, false); guiGraphics.drawString(mc.font, Component.literal("LOW POWER"),
w / 2 - 144, h / 2 + 14, 0xFF6B00, false);
}
} }
// 测距 // 测距

View file

@ -74,19 +74,21 @@ public abstract class ContainerMobileVehicleEntity extends MobileVehicleEntity i
public void baseTick() { public void baseTick() {
super.baseTick(); super.baseTick();
for (var stack : this.getItemStacks()) { if (this.hasEnergyStorage() && this.tickCount % 20 == 0) {
int neededEnergy = this.getMaxEnergy() - this.getEnergy(); for (var stack : this.getItemStacks()) {
if (neededEnergy <= 0) break; int neededEnergy = this.getMaxEnergy() - this.getEnergy();
if (neededEnergy <= 0) break;
var energyCap = stack.getCapability(Capabilities.EnergyStorage.ITEM); var energyCap = stack.getCapability(Capabilities.EnergyStorage.ITEM);
if (energyCap == null) continue; if (energyCap == null) continue;
var stored = energyCap.getEnergyStored(); var stored = energyCap.getEnergyStored();
if (stored <= 0) continue; if (stored <= 0) continue;
int energyToExtract = Math.min(stored, neededEnergy); int energyToExtract = Math.min(stored, neededEnergy);
energyCap.extractEnergy(energyToExtract, false); energyCap.extractEnergy(energyToExtract, false);
this.setEnergy(this.getEnergy() + energyToExtract); this.setEnergy(this.getEnergy() + energyToExtract);
}
} }
this.refreshDimensions(); this.refreshDimensions();
} }