From 8c689135063b7cda25b06de8c780f5e812754ee2 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Mon, 19 Mar 2012 03:59:22 -0500 Subject: Add asynchronous pre-login event; Addresses BUKKIT-1213 --- .../event/player/AsyncPlayerPreLoginEvent.java | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java (limited to 'src') diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java new file mode 100644 index 00000000..f7bc490d --- /dev/null +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -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.
+ * 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; + } +} -- cgit v1.2.3