diff --git a/buildnumber.properties b/buildnumber.properties index 1305919f..b1ee0e09 100644 --- a/buildnumber.properties +++ b/buildnumber.properties @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Tue May 13 16:30:53 CEST 2014 -build.number=837 +#Tue May 13 17:00:06 CEST 2014 +build.number=840 diff --git a/src/bans.yml b/src/bans.yml index a4dda290..23b693a5 100644 --- a/src/bans.yml +++ b/src/bans.yml @@ -1,6 +1,6 @@ # # TotalFreedomMod banning config -# Warning: modification of this file is not reccomended +# Warning: modification of this file is not recomended # # Format: # Ip: [IP-address / UUID]:[Last login name]:[Expiry unix timestamp (0 = never)][Banned by]:[Reason] diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_BanManager.java b/src/me/StevenLawson/TotalFreedomMod/TFM_BanManager.java index 10dc13ff..23a755af 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_BanManager.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_BanManager.java @@ -6,12 +6,16 @@ import java.util.Iterator; import java.util.List; import java.util.UUID; import me.StevenLawson.TotalFreedomMod.Config.TFM_Config; +import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; public class TFM_BanManager { private static final TFM_BanManager INSTANCE; private final List ipBans; private final List uuidBans; + private final List unbannableUUIDs; static { @@ -22,12 +26,14 @@ public class TFM_BanManager { ipBans = new ArrayList(); uuidBans = new ArrayList(); + unbannableUUIDs = new ArrayList(); } public void load() { ipBans.clear(); uuidBans.clear(); + unbannableUUIDs.clear(); final TFM_Config config = new TFM_Config(TotalFreedomMod.plugin, "bans.yml", true); config.load(); @@ -58,8 +64,21 @@ public class TFM_BanManager // Save the config save(); + TFM_Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans"); - TFM_Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans."); + for (String username : (List) TFM_ConfigEntry.UNBANNABLE_USERNAMES.getList()) + { + final OfflinePlayer player = Bukkit.getOfflinePlayer(username); + if (player == null || player.getUniqueId() == null) + { + TFM_Log.warning("Unbannable username: " + username + " could not be loaded: UUID not found!"); + continue; + } + + unbannableUUIDs.add(player.getUniqueId()); + } + + TFM_Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs"); } public void save() @@ -80,7 +99,7 @@ public class TFM_BanManager for (TFM_Ban savedBan : uuidBans) { - if (!savedBan.isExpired()) + if (!savedBan.isExpired() && !unbannableUUIDs.contains(UUID.fromString(savedBan.getSubject()))) { newUuidBans.add(savedBan.toString()); } @@ -201,6 +220,11 @@ public class TFM_BanManager return; } + if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject()))) + { + return; + } + uuidBans.add(ban); save(); }