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 8350890c4..ef4d55128 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 @@ -118,6 +118,22 @@ public abstract class VehicleEntity extends Entity { this.gameEvent(GameEvent.ENTITY_MOUNT, pPassenger); } + @Override + protected void removePassenger(@NotNull Entity pPassenger) { + if (pPassenger.getVehicle() == this) { + throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)"); + } + + var index = getSeatIndex(pPassenger); + if (index == -1) return; + + orderedPassengers.set(index, null); + this.passengers = ImmutableList.copyOf(orderedPassengers.stream().filter(Objects::nonNull).toList()); + + pPassenger.boardingCooldown = 60; + this.gameEvent(GameEvent.ENTITY_DISMOUNT, pPassenger); + } + @Nullable @Override public LivingEntity getControllingPassenger() { @@ -132,16 +148,6 @@ public abstract class VehicleEntity extends Entity { return orderedPassengers.get(0); } - @Override - protected void removePassenger(@NotNull Entity pPassenger) { - super.removePassenger(pPassenger); - - var index = orderedPassengers.indexOf(pPassenger); - if (index != -1) { - orderedPassengers.set(index, null); - } - } - /** * 获取第index个乘客 * diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 8d7eb8314..c3c2e9ce4 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -4,4 +4,5 @@ public net.minecraft.server.level.DistanceManager$PlayerTicketTracker public net.minecraft.client.multiplayer.ClientLevel m_142646_()Lnet/minecraft/world/level/entity/LevelEntityGetter; # getEntities public net.minecraft.client.renderer.culling.Frustum f_252406_ # matrix public net.minecraft.client.player.LocalPlayer f_108611_ # handsBusy -public net.minecraft.world.entity.Entity f_19823_ # passengers \ No newline at end of file +public net.minecraft.world.entity.Entity f_19823_ # passengers +public net.minecraft.world.entity.Entity f_19851_ # boardingCooldown \ No newline at end of file