diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java index 8a138f794..5ef66f0e0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java @@ -264,8 +264,8 @@ public class MortarEntity extends VehicleEntity implements GeoEntity { ItemEntity mortar = new ItemEntity(level, x, (y + 1), z, new ItemStack(ModItems.MORTAR_DEPLOYER.get())); mortar.setPickUpDelay(10); level.addFreshEntity(mortar); - this.discard(); } + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java index 407805d39..05f40d594 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java @@ -603,7 +603,7 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity explosion.finalizeExplosion(false); ParticleTool.spawnHugeExplosionParticles(this.level(), this.position()); } - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java index 43b91bcc6..014eaf32e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java @@ -491,7 +491,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity explosion.finalizeExplosion(false); ParticleTool.spawnHugeExplosionParticles(this.level(), this.position()); } - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java index e5c779238..302c7f3ac 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java @@ -452,7 +452,7 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity, } explodePassengers(); - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java index 2622dd006..8b78eb88c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java @@ -616,7 +616,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit } explodePassengers(); - this.discard(); + super.destroy(); } protected void clampRotation(Entity entity) { 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 02ab0be0f..f42a92b14 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java @@ -576,7 +576,7 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { }); } - this.discard(); + super.destroy(); } private void kamikazeExplosion(int mode) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java index 0d630cc90..da35c951c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java @@ -429,7 +429,7 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti } explodePassengers(); - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java index f16e0be44..918199705 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java @@ -231,7 +231,7 @@ public class LaserTowerEntity extends EnergyVehicleEntity implements GeoEntity, ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); } - this.discard(); + super.destroy(); } public void autoAim() { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index 9b9520f30..adc350593 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -488,7 +488,7 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt } explodePassengers(); - this.discard(); + super.destroy(); } protected void clampRotation(Entity entity) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java index 09284e416..a7eead5c2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java @@ -264,7 +264,7 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity } explodePassengers(); - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java index 111e40f8f..494b0b1ac 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java @@ -291,7 +291,7 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt } explodePassengers(); - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java index bcb9f9a69..2d016120b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java @@ -664,7 +664,7 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo } explodePassengers(); - this.discard(); + super.destroy(); } protected void clampRotation(Entity entity) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java index 3d473e479..285c03e45 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/SpeedboatEntity.java @@ -390,7 +390,7 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo } explodePassengers(); - this.discard(); + super.destroy(); } protected void clampRotation(Entity entity) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java index bfd716b79..cdf59f75a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java @@ -308,7 +308,6 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity { @Override public void destroy() { - if (this.crash) { crashPassengers(); } else { @@ -335,7 +334,7 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity { } } - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java index c75c6a09c..58dd5ee68 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/WheelChairEntity.java @@ -290,7 +290,7 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity { ParticleTool.spawnSmallExplosionParticles(this.level(), this.position()); } - this.discard(); + super.destroy(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index 0ea1a1059..7de1f79e3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -942,7 +942,7 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti } explodePassengers(); - this.discard(); + super.destroy(); } protected void clampRotation(Entity entity) { 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 d015709b4..4909af580 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 @@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.entity.vehicle.base; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.VehicleConfig; +import com.atsuishio.superbwarfare.entity.mixin.CustomStopRiding; import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon; @@ -718,6 +719,15 @@ public abstract class VehicleEntity extends Entity { } public void destroy() { + this.getPassengers().forEach(p -> { + if (p instanceof Player player) { + CustomStopRiding customStopRiding = CustomStopRiding.getInstance(player); + customStopRiding.superbwarfare$stopRiding(); + } else { + p.stopRiding(); + } + }); + this.discard(); } protected Entity getAttacker() { @@ -970,6 +980,34 @@ public abstract class VehicleEntity extends Entity { return getEyePosition(); } + @Override + public void ejectPassengers() { + for(int i = this.passengers.size() - 1; i >= 0; --i) { + var passenger = this.passengers.get(i); + if (passenger instanceof Player player) { + CustomStopRiding stopRiding = CustomStopRiding.getInstance(player); + stopRiding.superbwarfare$stopRiding(); + } else { + passenger.stopRiding(); + } + } + } + +// @Override +// public void remove(RemovalReason pReason) { +// if (this.getRemovalReason() == null) { +// this.removalReason = pReason; +// } +// +// if (this.getRemovalReason().shouldDestroy()) { +// this.stopRiding(); +// } +// +// this.getPassengers().forEach(Entity::stopRiding); +// this.levelCallback.onRemove(pReason); +// this.invalidateCaps(); +// } + /** * 渲染载具的第一人称UI * 务必标记 @OnlyIn(Dist.CLIENT) !