From 31704fd7d6ac1275241750bbf793875b3fe68a21 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Mon, 19 Mar 2012 03:59:22 -0500 Subject: [PATCH] Add asynchronous pre-login event; Addresses BUKKIT-1213 By: Wesley Wolfe --- .../player/AsyncPlayerPreLoginEvent.java | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 paper-api/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java diff --git a/paper-api/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/paper-api/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java new file mode 100644 index 0000000000..f7bc490d79 --- /dev/null +++ b/paper-api/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; + } +}