修复部分移植问题

This commit is contained in:
Light_Quanta 2025-07-13 00:06:39 +08:00
parent ddf9bc1e2c
commit d9ed8195b1
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
7 changed files with 27 additions and 6 deletions

View file

@ -725,4 +725,9 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
public boolean canCrushEntities() {
return false;
}
@Override
public boolean hasEnergyStorage() {
return false;
}
}

View file

@ -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;
}
}

View file

@ -79,4 +79,8 @@ public abstract class EnergyVehicleEntity extends VehicleEntity {
return data().maxEnergy();
}
//
public boolean hasEnergyStorage() {
return true;
}
}

View file

@ -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
);
}

View file

@ -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();

View file

@ -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()

View file

@ -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)