Add asynchronous pre-login event; Addresses BUKKIT-1213

By: Wesley Wolfe <weswolf@aol.com>
This commit is contained in:
Bukkit/Spigot 2012-03-19 03:59:22 -05:00
parent ad7045596d
commit 31704fd7d6

View File

@ -0,0 +1,108 @@
package org.bukkit.event.player;
import java.net.InetAddress;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* Stores details for players attempting to log in.<br>
* This event is asynchronous, and not run using main thread.
*/
public class AsyncPlayerPreLoginEvent extends Event {
private static final HandlerList handlers = new HandlerList();
private PlayerPreLoginEvent.Result result;
private String message;
private final String name;
private final InetAddress ipAddress;
public AsyncPlayerPreLoginEvent(final String name, final InetAddress ipAddress) {
super(true);
this.result = PlayerPreLoginEvent.Result.ALLOWED;
this.message = "";
this.name = name;
this.ipAddress = ipAddress;
}
/**
* Gets the current result of the login, as an enum
*
* @return Current Result of the login
*/
public PlayerPreLoginEvent.Result getResult() {
return result;
}
/**
* Sets the new result of the login, as an enum
*
* @param result New result to set
*/
public void setResult(final PlayerPreLoginEvent.Result result) {
this.result = result;
}
/**
* 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 = PlayerPreLoginEvent.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 PlayerPreLoginEvent.Result result, final String message) {
this.result = result;
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;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}