Adds some small changes which seem to completely fix all horse teleportation bugs. Fixes #1
This commit is contained in:
parent
6ad7fa4cb9
commit
b847002617
@ -583,7 +583,7 @@ public class Portal {
|
|||||||
private void teleportLivingVehicle(Vehicle vehicle, Location exit, List<Entity> passengers) {
|
private void teleportLivingVehicle(Vehicle vehicle, Location exit, List<Entity> passengers) {
|
||||||
vehicle.eject();
|
vehicle.eject();
|
||||||
vehicle.teleport(exit);
|
vehicle.teleport(exit);
|
||||||
handleVehiclePassengers(passengers, vehicle, 6);
|
handleVehiclePassengers(passengers, vehicle, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -616,16 +616,27 @@ public class Portal {
|
|||||||
private void handleVehiclePassengers(List<Entity> passengers, Vehicle targetVehicle, long delay) {
|
private void handleVehiclePassengers(List<Entity> passengers, Vehicle targetVehicle, long delay) {
|
||||||
for (Entity passenger : passengers) {
|
for (Entity passenger : passengers) {
|
||||||
passenger.eject();
|
passenger.eject();
|
||||||
|
Stargate.server.getScheduler().scheduleSyncDelayedTask(Stargate.stargate,
|
||||||
|
() -> teleportAndAddPassenger(targetVehicle, passenger), delay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teleports and adds a passenger to a vehicle
|
||||||
|
*
|
||||||
|
* <p>Teleportation of living vehicles is really buggy if you wait between the teleportation and passenger adding,
|
||||||
|
* but there needs to be a delay between teleporting the vehicle and teleporting and adding the passenger.</p>
|
||||||
|
*
|
||||||
|
* @param targetVehicle <p>The vehicle to add the passenger to</p>
|
||||||
|
* @param passenger <p>The passenger to teleport and add</p>
|
||||||
|
*/
|
||||||
|
private void teleportAndAddPassenger(Vehicle targetVehicle, Entity passenger) {
|
||||||
if (!passenger.teleport(targetVehicle.getLocation())) {
|
if (!passenger.teleport(targetVehicle.getLocation())) {
|
||||||
Stargate.debug("handleVehiclePassengers", "Failed to teleport passenger");
|
Stargate.debug("handleVehiclePassengers", "Failed to teleport passenger");
|
||||||
}
|
}
|
||||||
Stargate.server.getScheduler().scheduleSyncDelayedTask(Stargate.stargate,
|
|
||||||
() -> {
|
|
||||||
if (!targetVehicle.addPassenger(passenger)) {
|
if (!targetVehicle.addPassenger(passenger)) {
|
||||||
Stargate.debug("handleVehiclePassengers", "Failed to add passenger");
|
Stargate.debug("handleVehiclePassengers", "Failed to add passenger");
|
||||||
}
|
}
|
||||||
}, delay);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user