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