diff options
author | Wesley Wolfe <weswolf@aol.com> | 2012-10-14 03:36:08 -0500 |
---|---|---|
committer | Wesley Wolfe <weswolf@aol.com> | 2012-10-14 03:36:08 -0500 |
commit | 3dc80e1563eab780198b2696e26362bbf057d56b (patch) | |
tree | bc42907a122ef313c234b557d6dd0d44965af042 /src | |
parent | c23d7f4e06b63e0a2cc96330893eb0cf93d6a763 (diff) | |
download | bukkit-3dc80e1563eab780198b2696e26362bbf057d56b.tar bukkit-3dc80e1563eab780198b2696e26362bbf057d56b.tar.gz bukkit-3dc80e1563eab780198b2696e26362bbf057d56b.tar.lz bukkit-3dc80e1563eab780198b2696e26362bbf057d56b.tar.xz bukkit-3dc80e1563eab780198b2696e26362bbf057d56b.zip |
Deprecate PlayerPreLoginEvent. Addresses BUKKIT-2600
PlayerPreLoginEvent was originally implemented with the intention that
putting synchronized blocks on the plugin manager made it thread safe.
Unintentionally, this causes the event to be executed when a plugin
would otherwise expect no events to be firing. It is now deprecated.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java | 82 | ||||
-rw-r--r-- | src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java | 5 |
2 files changed, 81 insertions, 6 deletions
diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java index f7bc490d..4e4b3a27 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -11,14 +11,14 @@ import org.bukkit.event.HandlerList; */ public class AsyncPlayerPreLoginEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private PlayerPreLoginEvent.Result result; + private 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.result = Result.ALLOWED; this.message = ""; this.name = name; this.ipAddress = ipAddress; @@ -29,20 +29,44 @@ public class AsyncPlayerPreLoginEvent extends Event { * * @return Current Result of the login */ - public PlayerPreLoginEvent.Result getResult() { + public Result getLoginResult() { return result; } /** + * Gets the current result of the login, as an enum + * + * @return Current Result of the login + * @deprecated This method uses a deprecated enum from {@link PlayerPreLoginEvent} + * @see #getLoginResult() + */ + @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 setResult(final PlayerPreLoginEvent.Result result) { + 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 + * @deprecated This method uses a deprecated enum from {@link PlayerPreLoginEvent} + * @see #setLoginResult(Result) + */ + @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 @@ -64,7 +88,7 @@ public class AsyncPlayerPreLoginEvent extends Event { * Allows the player to log in */ public void allow() { - result = PlayerPreLoginEvent.Result.ALLOWED; + result = Result.ALLOWED; message = ""; } @@ -74,12 +98,26 @@ public class AsyncPlayerPreLoginEvent extends Event { * @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) { + 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 + * @deprecated This method uses a deprecated enum from {@link PlayerPreLoginEvent} + * @see #disallow(Result, String) + */ + @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 @@ -105,4 +143,36 @@ public class AsyncPlayerPreLoginEvent extends Event { 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()); + } + } } diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java index 862d483a..bc622488 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -1,12 +1,17 @@ package org.bukkit.event.player; import java.net.InetAddress; + +import org.bukkit.Warning; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; /** * Stores details for players attempting to log in + * @deprecated This event causes synchronization from the login thread; {@link AsyncPlayerPreLoginEvent} is preferred to keep the secondary threads asynchronous. */ +@Deprecated +@Warning(reason="This event causes a login thread to synchronize with the main thread") public class PlayerPreLoginEvent extends Event { private static final HandlerList handlers = new HandlerList(); private Result result; |