From 695bda59eebce9cb8bf6bea2f0c564ea0360a7e0 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Tue, 28 Dec 2010 17:39:23 +0000 Subject: [PATCH] Added onPlayerLogin By: Dinnerbone --- .../bukkit/event/player/PlayerListener.java | 8 ++ .../bukkit/event/player/PlayerLoginEvent.java | 98 +++++++++++++++++++ .../bukkit/plugin/java/JavaPluginLoader.java | 3 + 3 files changed, 109 insertions(+) create mode 100644 paper-api/src/org/bukkit/event/player/PlayerLoginEvent.java diff --git a/paper-api/src/org/bukkit/event/player/PlayerListener.java b/paper-api/src/org/bukkit/event/player/PlayerListener.java index fe545c38f3..0c6817e238 100644 --- a/paper-api/src/org/bukkit/event/player/PlayerListener.java +++ b/paper-api/src/org/bukkit/event/player/PlayerListener.java @@ -57,4 +57,12 @@ public class PlayerListener implements Listener { */ public void onPlayerTeleport(PlayerMoveEvent event) { } + + /** + * Called when a player attempts to log in to the server + * + * @param event Relevant event details + */ + public void onPlayerLogin(PlayerLoginEvent event) { + } } diff --git a/paper-api/src/org/bukkit/event/player/PlayerLoginEvent.java b/paper-api/src/org/bukkit/event/player/PlayerLoginEvent.java new file mode 100644 index 0000000000..65a989f589 --- /dev/null +++ b/paper-api/src/org/bukkit/event/player/PlayerLoginEvent.java @@ -0,0 +1,98 @@ + +package org.bukkit.event.player; + +import org.bukkit.Player; + +/** + * Stores details for players attempting to log in + */ +public class PlayerLoginEvent extends PlayerEvent { + private Result result; + private String message; + + public PlayerLoginEvent(final Type type, final Player player, final Result result, final String message) { + super(type, player); + this.result = result; + this.message = message; + } + + /** + * Gets the current result of the login, as an enum + * + * @return Current Result of the login + */ + public Result getResult() { + return result; + } + + /** + * Sets the new result of the login, as an enum + * + * @param result New result to set + */ + public void setResult(final 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 = 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; + } + + /** + * 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, for reasons undefined + */ + KICK_OTHER + } +} diff --git a/paper-api/src/org/bukkit/plugin/java/JavaPluginLoader.java b/paper-api/src/org/bukkit/plugin/java/JavaPluginLoader.java index 9c6a680096..65726b85e5 100644 --- a/paper-api/src/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/paper-api/src/org/bukkit/plugin/java/JavaPluginLoader.java @@ -99,6 +99,9 @@ public final class JavaPluginLoader implements PluginLoader { case PLAYER_TELEPORT: trueListener.onPlayerTeleport((PlayerMoveEvent)event); break; + case PLAYER_LOGIN: + trueListener.onPlayerLogin((PlayerLoginEvent)event); + break; } } }