diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java index 455917c0f..c4c1716a4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java @@ -725,4 +725,9 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { public boolean canCrushEntities() { return false; } + + @Override + public boolean hasEnergyStorage() { + return false; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java index 14f55b829..f1b94e6c7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java @@ -204,4 +204,9 @@ public class Type63Entity extends MobileVehicleEntity implements GeoEntity, OBBE public void updateOBB() { Matrix4f transform = getVehicleTransform(1); } + + @Override + public boolean hasEnergyStorage() { + return false; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/EnergyVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/EnergyVehicleEntity.java index 8bbeb4f88..8384fa6aa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/EnergyVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/EnergyVehicleEntity.java @@ -79,4 +79,8 @@ public abstract class EnergyVehicleEntity extends VehicleEntity { return data().maxEnergy(); } + // 屎 + public boolean hasEnergyStorage() { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModCapabilities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModCapabilities.java index db987db75..23abeb663 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModCapabilities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModCapabilities.java @@ -83,7 +83,7 @@ public class ModCapabilities { if (entity.get().getBaseClass().isAssignableFrom(EnergyVehicleEntity.class)) { event.registerEntity(Capabilities.EnergyStorage.ENTITY, entity.get(), - (obj, ctx) -> (obj instanceof EnergyVehicleEntity vehicle) ? vehicle.getEnergyStorage() : null + (obj, ctx) -> (obj instanceof EnergyVehicleEntity vehicle && vehicle.hasEnergyStorage()) ? vehicle.getEnergyStorage() : null ); } diff --git a/src/main/java/com/atsuishio/superbwarfare/menu/FuMO25Menu.java b/src/main/java/com/atsuishio/superbwarfare/menu/FuMO25Menu.java index be41b5e3a..526aa7dc3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/menu/FuMO25Menu.java +++ b/src/main/java/com/atsuishio/superbwarfare/menu/FuMO25Menu.java @@ -83,8 +83,9 @@ public class FuMO25Menu extends EnergyMenu { var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); var isDepressed = parameters != null && parameters.isDepressed(); + var radius = parameters != null ? parameters.radius() : 0; - stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos(this.posX, this.posY, this.posZ), isDepressed)); + stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos(this.posX, this.posY, this.posZ), radius, isDepressed)); this.resetPos(); this.container.setChanged(); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java index 4df0f6cbe..e4153cff9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java @@ -46,11 +46,13 @@ public record DroneFireMessage(Vector3f pos) implements CustomPacketPayload { var parameters = offStack.get(ModDataComponents.FIRING_PARAMETERS); var isDepressed = false; + var radius = 0; if (parameters != null) { isDepressed = parameters.isDepressed(); + radius = parameters.radius(); } - offStack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos((int) message.pos.x, (int) message.pos.y, (int) message.pos.z), isDepressed)); + offStack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos((int) message.pos.x, (int) message.pos.y, (int) message.pos.z), radius, isDepressed)); player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.target_pos").withStyle(ChatFormatting.GRAY) .append(Component.literal("[" + message.pos.x() diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java index a23bbc659..ecb64dc63 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java @@ -49,11 +49,12 @@ public enum SetFiringParametersMessage implements CustomPacketPayload { var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); var isDepressed = parameters != null && parameters.isDepressed(); + var radius = parameters != null ? parameters.radius() : 0; if (lookAtEntity) { - stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(lookingEntity.blockPosition(), isDepressed)); + stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(lookingEntity.blockPosition(), radius, isDepressed)); } else { - stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos((int) hitPos.x, (int) hitPos.y, (int) hitPos.z), isDepressed)); + stack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(new BlockPos((int) hitPos.x, (int) hitPos.y, (int) hitPos.z), radius, isDepressed)); } var pos = Objects.requireNonNull(stack.get(ModDataComponents.FIRING_PARAMETERS)).pos(); @@ -73,7 +74,10 @@ public enum SetFiringParametersMessage implements CustomPacketPayload { } else { pos = new BlockPos((int) hitPos.x, (int) hitPos.y, (int) hitPos.z); } - mainStack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(pos, false)); + var parameters = mainStack.get(ModDataComponents.FIRING_PARAMETERS); + var isDepressed = parameters != null && parameters.isDepressed(); + var radius = parameters != null ? parameters.radius() : 0; + mainStack.set(ModDataComponents.FIRING_PARAMETERS, new FiringParameters.Parameters(pos, radius, isDepressed)); player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.target_pos") .withStyle(ChatFormatting.GRAY)