IEntityAccessVehicle.addPassenger, reduce warnings.

Supposedly just making use of altered internal+external API. No
substantial change.
This commit is contained in:
asofold 2017-04-02 20:47:24 +02:00
parent 386d484939
commit 6a7d56c5ac
4 changed files with 32 additions and 7 deletions

View File

@ -21,4 +21,9 @@ public class EntityAccessVehicleMultiPassenger implements IEntityAccessVehicle {
return entity.getPassengers();
}
@Override
public boolean addPassenger(final Entity entity, final Entity vehicle) {
return vehicle.addPassenger(entity);
}
}

View File

@ -21,4 +21,10 @@ public class EntityAccessVehicleLegacy implements IEntityAccessVehicle {
return Arrays.asList(entity.getPassenger());
}
@SuppressWarnings("deprecation")
@Override
public boolean addPassenger(final Entity entity, final Entity vehicle) {
return vehicle.setPassenger(entity);
}
}

View File

@ -20,4 +20,13 @@ public interface IEntityAccessVehicle {
*/
public List<Entity> getEntityPassengers(Entity entity);
/**
* Add a new passenger (entity) to the given vehicle.
*
* @param entity
* @param vehicle
* @return
*/
public boolean addPassenger(Entity entity, Entity vehicle);
}

View File

@ -167,12 +167,14 @@ public class PassengerUtil {
// TODO: Account for nested passengers and inconsistencies.
final MovingData data = MovingData.getData(player);
data.isVehicleSetBack = true;
// TODO: Adjust to multiple passengers.
final Entity passenger = vehicle.getPassenger();
final List<Entity> passengers = handleVehicle.getHandle().getEntityPassengers(vehicle);
final boolean playerIsPassenger = passengers.contains(player);
// TODO: Multi-passenger teleport, playerIsCaptain? Similar...
boolean vehicleTeleported = false;
final boolean playerIsPassenger = player.equals(passenger);
boolean playerTeleported = false;
// TODO: TeleportCause needs some central configuration (plugin vs. unknown vs. future).
if (vehicle.isDead() || !vehicle.isValid()) {
// TODO: Still consider teleporting the player.
vehicleTeleported = false;
@ -198,7 +200,7 @@ public class PassengerUtil {
BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
}
}
else if (passenger == null) {
else if (passengers.isEmpty()) {
vehicleTeleported = vehicle.teleport(location,
BridgeMisc.TELEPORT_CAUSE_CORRECTION_OF_POSITION);
}
@ -213,8 +215,11 @@ public class PassengerUtil {
if (playerIsPassenger && playerTeleported && vehicleTeleported
&& player.getLocation().distance(vehicle.getLocation(useLoc)) < 1.5) {
// Somewhat check against tp showing something wrong (< 1.0).
vehicle.setPassenger(player); // NOTE: VehicleEnter fires, unknown TP fires.
// TODO: What on failure of setPassenger?
// NOTE: VehicleEnter fires, unknown TP fires.
// TODO: Is teleporting the player superfluous?
if (!handleVehicle.getHandle().addPassenger(player, vehicle)) {
// TODO: What?
}
// Ensure a set back.
// TODO: Set backs get invalidated somewhere, likely on an extra unknown TP. Use data.isVehicleSetBack in MovingListener/teleport.
if (data.vehicleSetBacks.getFirstValidEntry(location) == null) {