尝试修复removePassenger的问题

This commit is contained in:
Light_Quanta 2025-03-05 23:58:01 +08:00
parent 84e72e2cfd
commit dbd85ae238
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
2 changed files with 18 additions and 11 deletions

View file

@ -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个乘客
*

View file

@ -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
public net.minecraft.world.entity.Entity f_19823_ # passengers
public net.minecraft.world.entity.Entity f_19851_ # boardingCooldown