From fd555460ddcf61ed6dd6640811c69ef073c29452 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Wed, 12 Mar 2025 21:06:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E8=AF=BB=E5=8F=96SELECTED=5F?= =?UTF-8?q?WEAPON=EF=BC=8C=E9=81=BF=E5=85=8D=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/base/VehicleEntity.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java index 03e4f9ee3..19e326c22 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java @@ -235,21 +235,26 @@ public abstract class VehicleEntity extends Entity { this.entityData.define(LAST_DRIVER_UUID, "undefined"); if (this instanceof WeaponVehicleEntity weaponVehicle && weaponVehicle.getAllWeapons().length > 0) { - this.availableWeapons = new VehicleWeapon[this.getMaxPassengers()][]; - - var weapons = weaponVehicle.getAllWeapons(); - for (int i = 0; i < weapons.length && i < this.getMaxPassengers(); i++) { - this.availableWeapons[i] = weapons[i]; - } - - var selected = new int[this.getMaxPassengers()]; - for (int i = 0; i < this.getMaxPassengers(); i++) { - selected[i] = weaponVehicle.hasWeapon(i) ? 0 : -1; - } - this.entityData.define(SELECTED_WEAPON, IntList.of(selected)); + this.entityData.define(SELECTED_WEAPON, IntList.of(initSelectedWeaponArray(weaponVehicle))); } } + private int[] initSelectedWeaponArray(WeaponVehicleEntity weaponVehicle) { + this.availableWeapons = new VehicleWeapon[this.getMaxPassengers()][]; + + var weapons = weaponVehicle.getAllWeapons(); + for (int i = 0; i < weapons.length && i < this.getMaxPassengers(); i++) { + this.availableWeapons[i] = weapons[i]; + } + + var selected = new int[this.getMaxPassengers()]; + for (int i = 0; i < this.getMaxPassengers(); i++) { + selected[i] = weaponVehicle.hasWeapon(i) ? 0 : -1; + } + + return selected; + } + @Override protected void readAdditionalSaveData(CompoundTag compound) { this.entityData.set(LAST_ATTACKER_UUID, compound.getString("LastAttacker")); @@ -258,7 +263,12 @@ public abstract class VehicleEntity extends Entity { if (this instanceof WeaponVehicleEntity weaponVehicle && weaponVehicle.getAllWeapons().length > 0) { var selected = compound.getIntArray("SelectedWeapon"); - this.entityData.set(SELECTED_WEAPON, IntList.of(selected)); + + if (selected.length != this.getMaxPassengers()) { + this.entityData.set(SELECTED_WEAPON, IntList.of(initSelectedWeaponArray(weaponVehicle))); + } else { + this.entityData.set(SELECTED_WEAPON, IntList.of(selected)); + } } }