package net.knarcraft.stargate.event;

import net.knarcraft.stargate.portal.Portal;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
 * This event should be called whenever a player teleports through a stargate
 */
@SuppressWarnings("unused")
public class StargatePortalEvent extends StargatePlayerEvent {

    private static final HandlerList handlers = new HandlerList();
    private final Portal destination;
    private Location exit;

    /**
     * Instantiates a new stargate portal event
     *
     * @param player      <p>The player teleporting</p>
     * @param portal      <p>The portal the player entered from</p>
     * @param destination <p>The destination the player should exit from</p>
     * @param exit        <p>The exit location of the destination portal the user will be teleported to</p>
     */
    public StargatePortalEvent(Player player, Portal portal, Portal destination, Location exit) {
        super("StargatePortalEvent", portal, player);

        this.destination = destination;
        this.exit = exit;
    }

    /**
     * Gets a handler-list containing all event handlers
     *
     * @return <p>A handler-list with all event handlers</p>
     */
    public static HandlerList getHandlerList() {
        return handlers;
    }

    /**
     * Return the destination portal
     *
     * @return <p>The destination portal</p>
     */
    public Portal getDestination() {
        return destination;
    }

    /**
     * Return the location of the players exit point
     *
     * @return <p>Location of the exit point</p>
     */
    public Location getExit() {
        return exit;
    }

    /**
     * Set the location of the player's exit point
     */
    public void setExit(Location loc) {
        this.exit = loc;
    }

    @Override
    @NotNull
    public HandlerList getHandlers() {
        return handlers;
    }

}