Adds some debug messages and makes sure to listen to the vehicle teleport event result
This commit is contained in:
		@@ -33,6 +33,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
 | 
			
		||||
import org.bukkit.event.player.PlayerMoveEvent;
 | 
			
		||||
import org.bukkit.inventory.EquipmentSlot;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
import org.bukkit.util.Vector;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
@@ -131,6 +132,7 @@ public class PlayerEventListener implements Listener {
 | 
			
		||||
                horse.setOwner(player);
 | 
			
		||||
            }
 | 
			
		||||
            //Teleport the player's vehicle
 | 
			
		||||
            player.setVelocity(new Vector());
 | 
			
		||||
            new VehicleTeleporter(destination, (Vehicle) playerVehicle).teleportEntity(entrancePortal);
 | 
			
		||||
        } else {
 | 
			
		||||
            //Just teleport the player like normal
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ import org.bukkit.entity.Boat;
 | 
			
		||||
import org.bukkit.entity.Entity;
 | 
			
		||||
import org.bukkit.entity.LivingEntity;
 | 
			
		||||
import org.bukkit.entity.Vehicle;
 | 
			
		||||
import org.bukkit.event.player.PlayerTeleportEvent;
 | 
			
		||||
import org.bukkit.util.Vector;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@@ -57,7 +58,10 @@ public class VehicleTeleporter extends EntityTeleporter {
 | 
			
		||||
        Vector newVelocity = newVelocityDirection.multiply(velocity);
 | 
			
		||||
 | 
			
		||||
        //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
 | 
			
		||||
        return teleportVehicle(exit, newVelocity, origin);
 | 
			
		||||
@@ -131,9 +135,15 @@ public class VehicleTeleporter extends EntityTeleporter {
 | 
			
		||||
        if (teleportingVehicle.eject()) {
 | 
			
		||||
            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(),
 | 
			
		||||
                () -> 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.teleporter.EntityTeleporter;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.Location;
 | 
			
		||||
import org.bukkit.entity.Creature;
 | 
			
		||||
import org.bukkit.entity.Entity;
 | 
			
		||||
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>
 | 
			
		||||
     */
 | 
			
		||||
    public static void teleportAndAddPassenger(Entity targetVehicle, Entity passenger, Vector exitDirection) {
 | 
			
		||||
        if (!passenger.teleport(targetVehicle.getLocation().clone().setDirection(exitDirection))) {
 | 
			
		||||
            Stargate.debug("handleVehiclePassengers", "Failed to teleport passenger" + passenger);
 | 
			
		||||
        Location passengerExit = targetVehicle.getLocation().clone().setDirection(exitDirection);
 | 
			
		||||
        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)) {
 | 
			
		||||
            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
 | 
			
		||||
                    teleportLeashedCreatures(player, origin, target);
 | 
			
		||||
                }
 | 
			
		||||
                TeleportHelper.teleportAndAddPassenger(entity, passenger, exitRotation);
 | 
			
		||||
                teleportAndAddPassenger(entity, passenger, exitRotation);
 | 
			
		||||
            }, passenger instanceof Player ? Stargate.getGateConfig().waitForPlayerAfterTeleportDelay() : 0);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user