diff options
author | Dinnerbone <dinnerbone@dinnerbone.com> | 2010-12-28 22:22:26 +0000 |
---|---|---|
committer | Dinnerbone <dinnerbone@dinnerbone.com> | 2010-12-28 22:22:26 +0000 |
commit | ef622b20d148409528b60c9bed099a5618871583 (patch) | |
tree | 7308f2457ecf576a7e5dce7b3d8784e13676d5dc /src/net/minecraft/server/ServerConfigurationManager.java | |
parent | f9eb5a92a1a52985dc21d6a7d763df2ac1a3b1c7 (diff) | |
download | craftbukkit-ef622b20d148409528b60c9bed099a5618871583.tar craftbukkit-ef622b20d148409528b60c9bed099a5618871583.tar.gz craftbukkit-ef622b20d148409528b60c9bed099a5618871583.tar.lz craftbukkit-ef622b20d148409528b60c9bed099a5618871583.tar.xz craftbukkit-ef622b20d148409528b60c9bed099a5618871583.zip |
Implemented PLAYER_LOGIN
Diffstat (limited to 'src/net/minecraft/server/ServerConfigurationManager.java')
-rw-r--r-- | src/net/minecraft/server/ServerConfigurationManager.java | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/net/minecraft/server/ServerConfigurationManager.java b/src/net/minecraft/server/ServerConfigurationManager.java index 37ddc929..e841da97 100644 --- a/src/net/minecraft/server/ServerConfigurationManager.java +++ b/src/net/minecraft/server/ServerConfigurationManager.java @@ -5,7 +5,9 @@ import java.util.*; import java.util.logging.Logger; import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.event.Event.Type; import org.bukkit.event.player.PlayerEvent; +import org.bukkit.event.player.PlayerLoginEvent; public class ServerConfigurationManager { @@ -82,22 +84,32 @@ public class ServerConfigurationManager { } public EntityPlayerMP a(NetLoginHandler netloginhandler, String s, String s1) { - if (f.contains(s.trim().toLowerCase())) { - netloginhandler.a("You are banned from this server!"); - return null; - } - String s2 = netloginhandler.b.b().toString(); + // Craftbukkit note: this entire method needs to be changed + // Instead of kicking then returning, we need to store the kick reason + // in the event, check with plugins to see if it's ok, and THEN kick + // depending on the outcome. + + EntityPlayerMP entity = new EntityPlayerMP(c, c.e, s, new ItemInWorldManager(c.e)); + PlayerLoginEvent event = new PlayerLoginEvent(Type.PLAYER_LOGIN, server.getPlayer(entity)); + String s2 = netloginhandler.b.b().toString(); s2 = s2.substring(s2.indexOf("/") + 1); s2 = s2.substring(0, s2.indexOf(":")); - if (g.contains(s2)) { - netloginhandler.a("Your IP address is banned from this server!"); - return null; + + if (f.contains(s.trim().toLowerCase())) { + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "You are banned from this server!"); + } else if (g.contains(s2)) { + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "Your IP address is banned from this server!"); + } else if (b.size() >= e) { + event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full!"); } - if (b.size() >= e) { - netloginhandler.a("The server is full!"); + + server.getPluginManager().callEvent(event); + if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) { + netloginhandler.a(event.getKickMessage()); return null; } + for (int i1 = 0; i1 < b.size(); i1++) { EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1); @@ -106,7 +118,7 @@ public class ServerConfigurationManager { } } - return new EntityPlayerMP(c, c.e, s, new ItemInWorldManager(c.e)); + return entity; } public EntityPlayerMP d(EntityPlayerMP entityplayermp) { |