Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / event / player / AsyncPlayerPreLoginEvent.java
@vlad20012 vlad20012 on 24 Feb 2017 4 KB initial
package org.bukkit.event.player;

import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

import java.net.InetAddress;
import java.util.UUID;

/**
 * Stores details for players attempting to log in.
 * <p>
 * This event is asynchronous, and not run using main thread.
 */
public class AsyncPlayerPreLoginEvent extends Event
{
	private static final HandlerList handlers = new HandlerList();
	private Result result;
	private String message;
	private final String name;
	private final InetAddress ipAddress;
	private final UUID uniqueId;

	@Deprecated
	public AsyncPlayerPreLoginEvent(final String name, final InetAddress ipAddress)
	{
		this(name, ipAddress, null);
	}

	public AsyncPlayerPreLoginEvent(final String name, final InetAddress ipAddress, final UUID uniqueId)
	{
		super(true);
		this.result = Result.ALLOWED;
		this.message = "";
		this.name = name;
		this.ipAddress = ipAddress;
		this.uniqueId = uniqueId;
	}

	/**
	 * Gets the current result of the login, as an enum
	 *
	 * @return Current Result of the login
	 */
	public Result getLoginResult()
	{
		return result;
	}

	/**
	 * Gets the current result of the login, as an enum
	 *
	 * @return Current Result of the login
	 * @see #getLoginResult()
	 * @deprecated This method uses a deprecated enum from {@link
	 * PlayerPreLoginEvent}
	 */
	@Deprecated
	public PlayerPreLoginEvent.Result getResult()
	{
		return result == null ? null : result.old();
	}

	/**
	 * Sets the new result of the login, as an enum
	 *
	 * @param result New result to set
	 */
	public void setLoginResult(final Result result)
	{
		this.result = result;
	}

	/**
	 * Sets the new result of the login, as an enum
	 *
	 * @param result New result to set
	 * @see #setLoginResult(Result)
	 * @deprecated This method uses a deprecated enum from {@link
	 * PlayerPreLoginEvent}
	 */
	@Deprecated
	public void setResult(final PlayerPreLoginEvent.Result result)
	{
		this.result = result == null ? null : Result.valueOf(result.name());
	}

	/**
	 * Gets the current kick message that will be used if getResult() !=
	 * Result.ALLOWED
	 *
	 * @return Current kick message
	 */
	public String getKickMessage()
	{
		return message;
	}

	/**
	 * Sets the kick message to display if getResult() != Result.ALLOWED
	 *
	 * @param message New kick message
	 */
	public void setKickMessage(final String message)
	{
		this.message = message;
	}

	/**
	 * Allows the player to log in
	 */
	public void allow()
	{
		result = Result.ALLOWED;
		message = "";
	}

	/**
	 * Disallows the player from logging in, with the given reason
	 *
	 * @param result  New result for disallowing the player
	 * @param message Kick message to display to the user
	 */
	public void disallow(final Result result, final String message)
	{
		this.result = result;
		this.message = message;
	}

	/**
	 * Disallows the player from logging in, with the given reason
	 *
	 * @param result  New result for disallowing the player
	 * @param message Kick message to display to the user
	 * @see #disallow(Result, String)
	 * @deprecated This method uses a deprecated enum from {@link
	 * PlayerPreLoginEvent}
	 */
	@Deprecated
	public void disallow(final PlayerPreLoginEvent.Result result, final String message)
	{
		this.result = result == null ? null : Result.valueOf(result.name());
		this.message = message;
	}

	/**
	 * Gets the player's name.
	 *
	 * @return the player's name
	 */
	public String getName()
	{
		return name;
	}

	/**
	 * Gets the player IP address.
	 *
	 * @return The IP address
	 */
	public InetAddress getAddress()
	{
		return ipAddress;
	}

	/**
	 * Gets the player's unique ID.
	 *
	 * @return The unique ID
	 */
	public UUID getUniqueId()
	{
		return uniqueId;
	}

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

	public static HandlerList getHandlerList()
	{
		return handlers;
	}

	/**
	 * Basic kick reasons for communicating to plugins
	 */
	public enum Result
	{

		/**
		 * The player is allowed to log in
		 */
		ALLOWED,
		/**
		 * The player is not allowed to log in, due to the server being full
		 */
		KICK_FULL,
		/**
		 * The player is not allowed to log in, due to them being banned
		 */
		KICK_BANNED,
		/**
		 * The player is not allowed to log in, due to them not being on the
		 * white list
		 */
		KICK_WHITELIST,
		/**
		 * The player is not allowed to log in, for reasons undefined
		 */
		KICK_OTHER;

		@Deprecated
		private PlayerPreLoginEvent.Result old()
		{
			return PlayerPreLoginEvent.Result.valueOf(name());
		}
	}
}