Adds some debug messages and makes sure to listen to the vehicle teleport event result
This commit is contained in:
parent
28d84450fb
commit
a481ccf017
@ -33,6 +33,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -131,6 +132,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
horse.setOwner(player);
|
horse.setOwner(player);
|
||||||
}
|
}
|
||||||
//Teleport the player's vehicle
|
//Teleport the player's vehicle
|
||||||
|
player.setVelocity(new Vector());
|
||||||
new VehicleTeleporter(destination, (Vehicle) playerVehicle).teleportEntity(entrancePortal);
|
new VehicleTeleporter(destination, (Vehicle) playerVehicle).teleportEntity(entrancePortal);
|
||||||
} else {
|
} else {
|
||||||
//Just teleport the player like normal
|
//Just teleport the player like normal
|
||||||
|
@ -12,6 +12,7 @@ import org.bukkit.entity.Boat;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Vehicle;
|
import org.bukkit.entity.Vehicle;
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -57,7 +58,10 @@ public class VehicleTeleporter extends EntityTeleporter {
|
|||||||
Vector newVelocity = newVelocityDirection.multiply(velocity);
|
Vector newVelocity = newVelocityDirection.multiply(velocity);
|
||||||
|
|
||||||
//Call the StargateEntityPortalEvent to allow plugins to change destination
|
//Call the StargateEntityPortalEvent to allow plugins to change destination
|
||||||
triggerPortalEvent(origin, new StargateEntityPortalEvent(teleportingVehicle, origin, portal, exit));
|
exit = triggerPortalEvent(origin, new StargateEntityPortalEvent(teleportingVehicle, origin, portal, exit));
|
||||||
|
if (exit == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//Teleport the vehicle
|
//Teleport the vehicle
|
||||||
return teleportVehicle(exit, newVelocity, origin);
|
return teleportVehicle(exit, newVelocity, origin);
|
||||||
@ -131,9 +135,15 @@ public class VehicleTeleporter extends EntityTeleporter {
|
|||||||
if (teleportingVehicle.eject()) {
|
if (teleportingVehicle.eject()) {
|
||||||
TeleportHelper.handleEntityPassengers(passengers, teleportingVehicle, origin, portal, exit.getDirection());
|
TeleportHelper.handleEntityPassengers(passengers, teleportingVehicle, origin, portal, exit.getDirection());
|
||||||
}
|
}
|
||||||
teleportingVehicle.teleport(exit);
|
Stargate.debug("VehicleTeleporter::teleportVehicle", "Teleporting " + teleportingVehicle +
|
||||||
|
" to final location " + exit + " with direction " + exit.getDirection());
|
||||||
|
teleportingVehicle.teleport(exit, PlayerTeleportEvent.TeleportCause.PLUGIN);
|
||||||
scheduler.scheduleSyncDelayedTask(Stargate.getInstance(),
|
scheduler.scheduleSyncDelayedTask(Stargate.getInstance(),
|
||||||
() -> teleportingVehicle.setVelocity(newVelocity), 1);
|
() -> {
|
||||||
|
Stargate.debug("VehicleTeleporter::teleportVehicle", "Setting velocity " + newVelocity +
|
||||||
|
" for vehicle " + teleportingVehicle);
|
||||||
|
teleportingVehicle.setVelocity(newVelocity);
|
||||||
|
}, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,7 @@ import net.knarcraft.stargate.Stargate;
|
|||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.teleporter.EntityTeleporter;
|
import net.knarcraft.stargate.portal.teleporter.EntityTeleporter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Creature;
|
import org.bukkit.entity.Creature;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -80,11 +81,20 @@ public final class TeleportHelper {
|
|||||||
* @param exitDirection <p>The direction of any passengers exiting the stargate</p>
|
* @param exitDirection <p>The direction of any passengers exiting the stargate</p>
|
||||||
*/
|
*/
|
||||||
public static void teleportAndAddPassenger(Entity targetVehicle, Entity passenger, Vector exitDirection) {
|
public static void teleportAndAddPassenger(Entity targetVehicle, Entity passenger, Vector exitDirection) {
|
||||||
if (!passenger.teleport(targetVehicle.getLocation().clone().setDirection(exitDirection))) {
|
Location passengerExit = targetVehicle.getLocation().clone().setDirection(exitDirection);
|
||||||
Stargate.debug("handleVehiclePassengers", "Failed to teleport passenger" + passenger);
|
if (!passenger.teleport(passengerExit)) {
|
||||||
|
Stargate.debug("TeleportHelper::handleVehiclePassengers", "Failed to teleport passenger" +
|
||||||
|
passenger);
|
||||||
|
} else {
|
||||||
|
Stargate.debug("TeleportHelper::handleVehiclePassengers", "Teleported " + passenger +
|
||||||
|
" to " + passengerExit);
|
||||||
}
|
}
|
||||||
if (!targetVehicle.addPassenger(passenger)) {
|
if (!targetVehicle.addPassenger(passenger)) {
|
||||||
Stargate.debug("handleVehiclePassengers", "Failed to add passenger" + passenger);
|
Stargate.debug("TeleportHelper::handleVehiclePassengers", "Failed to add passenger" +
|
||||||
|
passenger);
|
||||||
|
} else {
|
||||||
|
Stargate.debug("TeleportHelper::handleVehiclePassengers", "Added passenger " + passenger +
|
||||||
|
" to " + targetVehicle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +124,7 @@ public final class TeleportHelper {
|
|||||||
//Teleport any creatures leashed by the player in a 15-block range
|
//Teleport any creatures leashed by the player in a 15-block range
|
||||||
teleportLeashedCreatures(player, origin, target);
|
teleportLeashedCreatures(player, origin, target);
|
||||||
}
|
}
|
||||||
TeleportHelper.teleportAndAddPassenger(entity, passenger, exitRotation);
|
teleportAndAddPassenger(entity, passenger, exitRotation);
|
||||||
}, passenger instanceof Player ? Stargate.getGateConfig().waitForPlayerAfterTeleportDelay() : 0);
|
}, passenger instanceof Player ? Stargate.getGateConfig().waitForPlayerAfterTeleportDelay() : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user