[BLEEDING] Try to update passive player passengers data in a useful way.

When the captain leaves the boat, the vehicle data of a passive player
passenger may be set now, so it won't set them back to where they
entered the vehicle.

Likely other places still need adjusting.
This commit is contained in:
asofold 2017-04-03 01:15:32 +02:00
parent f518371208
commit 1ac29ee052

View File

@ -544,6 +544,11 @@ public class VehicleChecks extends CheckListener {
// Schedule a set back?
if (newTo == null) {
// Update vehicle data for passive player passengers.
final List<Entity> passengers = passengerUtil.handleVehicle.getHandle().getEntityPassengers(vehicle);
if (passengers.size() > 1) {
updateVehicleData(player, data, vehicle, moveInfo, passengers);
}
// Increase time since set back.
data.timeSinceSetBack ++;
// Finally finish processing the current move and move it to past ones.
@ -555,6 +560,22 @@ public class VehicleChecks extends CheckListener {
useLoc1.setWorld(null);
}
private void updateVehicleData(final Player player, final MovingData data, final Entity vehicle,
final VehicleMoveInfo moveInfo, final List<Entity> passengers) {
for (final Entity passenger : passengers) {
if ((passenger instanceof Player) && !player.equals(passenger)) {
final Player otherPlayer = (Player) passenger;
final MovingData otherData = MovingData.getData(otherPlayer);
otherData.resetVehiclePositions(moveInfo.to);
// TODO: Reset all precisely to what there is or this or what not.
otherData.vehicleSetBacks.resetAllLazily(data.vehicleSetBacks.getOldestValidEntry());
otherData.wasInVehicle = true;
// TODO: VehicleMoves: should adjust fully ?
otherData.vehicleMoves.invalidate();
}
}
}
/**
* Called if the default set back entry isn't valid.
*