Removed need to have a modified CraftBukkit

This commit is contained in:
Jerome van der Sar
2013-05-09 15:39:33 +02:00
parent 039de8ba88
commit 8b601f1e70
6 changed files with 67 additions and 30 deletions

View File

@ -121,8 +121,6 @@ public class TFM_ServerInterface
public static void handlePlayerLogin(PlayerLoginEvent event)
{
// this should supersede all other onPlayerLogin authentication on the TFM server.
// when using the TFM CraftBukkit, CraftBukkit itself should not do any of its own authentication.
final Server server = TotalFreedomMod.plugin.getServer();
@ -137,7 +135,8 @@ public class TFM_ServerInterface
if (player_name.trim().length() <= 2)
{
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Your username is too short (must be at least 3 characters long).");
event.disallow(PlayerLoginEvent.Result.KICK_OTHER,
"Your username is too short (must be at least 3 characters long).");
return;
}
else if (Pattern.compile("[^a-zA-Z0-9\\-\\.\\_]").matcher(player_name).find())
@ -146,7 +145,8 @@ public class TFM_ServerInterface
return;
}
// not safe to use TFM_Util.isUserSuperadmin for player logging in because p.getAddress() will return a null until after player login.
// not safe to use TFM_Util.isUserSuperadmin for player logging in because p.getAddress()
// will return a null until after player login.
boolean is_superadmin;
if (server.getOnlineMode())
{
@ -165,13 +165,14 @@ public class TFM_ServerInterface
{
ban_entry = (BanEntry) banByName.getEntries().get(player_name.toLowerCase());
String kick_message = "You are banned from this server.";
String kick_message = ChatColor.RED + "You are banned from this server.";
if (ban_entry != null)
{
kick_message = kick_message + "\nReason: " + ban_entry.getReason();
if (ban_entry.getExpires() != null)
{
kick_message = kick_message + "\nYour ban will be removed on " + date_format.format(ban_entry.getExpires());
kick_message = kick_message + "\nYour ban will be removed on "
+ date_format.format(ban_entry.getExpires());
}
}
@ -209,13 +210,14 @@ public class TFM_ServerInterface
if (is_ip_banned)
{
String kick_message = "Your IP address is banned from this server.";
String kick_message = ChatColor.RED + "Your IP address is banned from this server.";
if (ban_entry != null)
{
kick_message = kick_message + "\nReason: " + ban_entry.getReason();
if (ban_entry.getExpires() != null)
{
kick_message = kick_message + "\nYour ban will be removed on " + date_format.format(ban_entry.getExpires());
kick_message = kick_message + "\nYour ban will be removed on "
+ date_format.format(ban_entry.getExpires());
}
}
@ -227,7 +229,8 @@ public class TFM_ServerInterface
{
if (test_player.equalsIgnoreCase(player_name))
{
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your username is permanently banned from this server.");
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED
+ "Your username is permanently banned from this server.");
return;
}
}
@ -236,7 +239,8 @@ public class TFM_ServerInterface
{
if (TFM_Util.fuzzyIpMatch(test_ip, player_ip, 4))
{
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your IP address is permanently banned from this server.");
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED
+ "Your IP address is permanently banned from this server.");
return;
}
}
@ -271,8 +275,21 @@ public class TFM_ServerInterface
}
}
}
else
{
else // if user is superadmin
{
// force-allow superadmins to log in
event.allow();
if (isIPBanned(player_ip))
{
unbanIP(player_ip);
}
if (isNameBanned(player_name))
{
unbanUsername(player_name);
}
for (Player test_player : server.getOnlinePlayers())
{
if (test_player.getName().equalsIgnoreCase(player_name))
@ -280,20 +297,23 @@ public class TFM_ServerInterface
test_player.kickPlayer("An admin just logged in with the username you are using.");
}
}
boolean can_kick = true; // if the server is full of superadmins, however unlikely that might be, this will prevent an infinite loop.
while (server.getOnlinePlayers().length >= server.getMaxPlayers() && can_kick)
if (server.getOnlinePlayers().length >= server.getMaxPlayers())
{
can_kick = false;
for (Player test_player : server.getOnlinePlayers())
for (Player op : server.getOnlinePlayers())
{
if (!TFM_SuperadminList.isUserSuperadmin(test_player))
if (!TFM_SuperadminList.isUserSuperadmin(op))
{
can_kick = true;
test_player.kickPlayer("You have been kicked to free up room for an admin.");
break;
op.kickPlayer("You have been kicked to free up space for an admin");
return;
}
}
// if the server is full of superadmins, however unlikely that might be, this will prevent an infinite loop.
if (server.getOnlinePlayers().length >= server.getMaxPlayers())
{
event.disallow(PlayerLoginEvent.Result.KICK_FULL, "Sorry, this server is full");
}
}
}
}