From 2844af0039436d6bad73977418f32d854ea6eecc Mon Sep 17 00:00:00 2001 From: ementalo Date: Thu, 22 Sep 2011 17:29:00 +0100 Subject: [PATCH 01/18] Throw correct exceptions Test #943 --- .../src/com/earth2me/essentials/commands/Commandinvsee.java | 1 + .../src/com/earth2me/essentials/commands/Commandmail.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java index 8b6dc8182..07710d40a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java @@ -49,5 +49,6 @@ public class Commandinvsee extends EssentialsCommand user.getInventory().setContents(invUserStack); user.sendMessage(Util.format("invSee", invUser.getDisplayName())); user.sendMessage(Util.i18n("invSeeHelp")); + throw new NoChargeException(); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java index a98fabbd2..e08a6c8e5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java @@ -64,6 +64,6 @@ public class Commandmail extends EssentialsCommand user.setMails(null); throw new Exception(Util.i18n("mailCleared")); } - throw new NotEnoughArgumentsException(); + throw new NoChargeException(); } } From d9ceb727efc3697f4d279a73b1d6a27ff1dc4826 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 22 Sep 2011 17:50:42 +0100 Subject: [PATCH 02/18] Fix for home names containing invalid characters. --- Essentials/src/com/earth2me/essentials/UserData.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java index 75d126c3e..39cebbd2a 100644 --- a/Essentials/src/com/earth2me/essentials/UserData.java +++ b/Essentials/src/com/earth2me/essentials/UserData.java @@ -154,6 +154,8 @@ public abstract class UserData extends PlayerExtension implements IConf public void setHome(String name, Location loc) { + //Invalid names will corrupt the yaml + name = Util.sanitizeFileName(name); homes.put(name, loc); config.setProperty("homes." + name, loc); config.save(); From 8103e822ed54d8ade9fbacf06f8cd9220ee12a87 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 02:47:01 +0100 Subject: [PATCH 03/18] Fix for null in PLAYER_TELEPORT for bukkit perms. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../groupmanager/permissions/BukkitPermissions.java | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 6015b470e..388fc938a 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -13,4 +13,5 @@ v 1.1: - Push updates to superperms for all valid GM commands. - All GroupManager commands issued by players are now echoed in the console. - Reverted WorldHolder static change to maintain backward plugin compatibility. - - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). \ No newline at end of file + - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). + - Fix for null in PLAYER_TELEPORT for bukkit perms. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index ec6fcebca..cf3edafc0 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -195,11 +195,9 @@ public class BukkitPermissions { @Override public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world - if(event.getPlayer().getWorld().equals(event.getTo().getWorld())){ // only if world actually changed - return; + if(!event.getFrom().getWorld().equals(event.getTo().getWorld())){ // only if world actually changed + updatePermissions(event.getPlayer(), event.getTo().getWorld().getName()); } - - updatePermissions(event.getPlayer(), event.getTo().getWorld().getName()); } @Override From b0fe18915694ad92102e78a1ba477aab34e1059e Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 02:53:38 +0100 Subject: [PATCH 04/18] Fixed wasteful updating of perms on a manload. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../src/org/anjocaido/groupmanager/GroupManager.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 388fc938a..232a35e1a 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -14,4 +14,5 @@ v 1.1: - All GroupManager commands issued by players are now echoed in the console. - Reverted WorldHolder static change to maintain backward plugin compatibility. - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). - - Fix for null in PLAYER_TELEPORT for bukkit perms. \ No newline at end of file + - Fix for null in PLAYER_TELEPORT for bukkit perms. + - Fixed wasteful updating of perms on a manload. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index b56d42122..52b67c57c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1423,9 +1423,14 @@ public class GroupManager extends JavaPlugin { auxString += " "; } } + + isLoaded = false; // Disable Bukkit Perms update + worldsHolder.loadWorld(auxString); sender.sendMessage("The request to world '" + auxString + "' was sent."); + isLoaded = true; + BukkitPermissions.updateAllPlayers(); return true; From 59c93901d3a5d44275b7777cfd1f9b1f923206ba Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 24 Sep 2011 03:19:05 +0100 Subject: [PATCH 05/18] Minor typing errors in messages.properties --- Essentials/src/messages.properties | 6 +++--- Essentials/src/messages_en.properties | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties index d90d788eb..c756d4384 100644 --- a/Essentials/src/messages.properties +++ b/Essentials/src/messages.properties @@ -54,7 +54,7 @@ deleteJail = \u00a77Jail {0} has been removed. deleteWarp = \u00a77Warp {0} has been removed. deniedAccessCommand = {0} was denied access to command. dependancyDownloaded = [Essentials] Dependancy {0} downloaded successfully. -dependancyException = [Essentials] An error occured when trying to download a dependacy +dependancyException = [Essentials] An error occurred when trying to download a dependacy dependancyNotFound = [Essentials] A required dependancy was not found, downloading now. depth = \u00a77You are at sea level. depthAboveSea = \u00a77You are {0} block(s) above sea level. @@ -171,7 +171,7 @@ mobsAvailable = \u00a77Mobs: {0} mobSpawnError = Error while changing mob spawner. mobSpawnLimit = Mob quantity limited to server limit mobSpawnTarget = Target block must be a mob spawner. -moneyRecievedFrom = \u00a7a{0} has been recieved from {1} +moneyRecievedFrom = \u00a7a{0} has been received from {1} moneySentTo = \u00a7a{0} has been sent to {1} moneyTaken = {0} taken from your bank account. month = month @@ -265,7 +265,7 @@ requestAcceptedFrom = \u00a77{0} accepted your teleport request. requestDenied = \u00a77Teleport request denied. requestDeniedFrom = \u00a77{0} denied your teleport request. requestSent = \u00a77Request sent to {0}\u00a77. -returnPlayerToJailError = Error occured when trying to return player to jail. +returnPlayerToJailError = Error occurred when trying to return player to jail. second = second seconds = seconds seenOffline = Player {0} is offline since {1} diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties index a9dc9c9a8..ea73ccc56 100644 --- a/Essentials/src/messages_en.properties +++ b/Essentials/src/messages_en.properties @@ -54,7 +54,7 @@ deleteJail = \u00a77Jail {0} has been removed. deleteWarp = \u00a77Warp {0} has been removed. deniedAccessCommand = {0} was denied access to command. dependancyDownloaded = [Essentials] Dependancy {0} downloaded successfully. -dependancyException = [Essentials] An error occured when trying to download a dependacy +dependancyException = [Essentials] An error occurred when trying to download a dependacy dependancyNotFound = [Essentials] A required dependancy was not found, downloading now. depth = \u00a77You are at sea level. depthAboveSea = \u00a77You are {0} block(s) above sea level. @@ -170,7 +170,7 @@ missingPrefixSuffix = Missing a prefix or suffix for {0} mobSpawnError = Error while changing mob spawner. mobSpawnLimit = Mob quantity limited to server limit mobSpawnTarget = Target block must be a mob spawner. -moneyRecievedFrom = \u00a7a{0} has been recieved from {1} +moneyRecievedFrom = \u00a7a{0} has been received from {1} moneySentTo = \u00a7a{0} has been sent to {1} moneyTaken = {0} taken from your bank account. month = month @@ -264,7 +264,7 @@ requestAcceptedFrom = \u00a77{0} accepted your teleport request. requestDenied = \u00a77Teleport request denied. requestDeniedFrom = \u00a77{0} denied your teleport request requestSent = \u00a77Request sent to {0}\u00a77. -returnPlayerToJailError = Error occured when trying to return player to jail. +returnPlayerToJailError = Error occurred when trying to return player to jail. second = second seconds = seconds seenOffline = Player {0} is offline since {1} From bd8fe521cd07d4fb60fd973fce30db4ec41463fc Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 24 Sep 2011 03:31:20 +0100 Subject: [PATCH 06/18] Adjusting behavior of 'spawn-if-no-home'. --- .../earth2me/essentials/commands/Commandhome.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java index 2ee2661e6..16b9fca2a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java @@ -45,18 +45,18 @@ public class Commandhome extends EssentialsCommand catch (NotEnoughArgumentsException e) { List homes = u.getHomes(); - if (homes.isEmpty()) + if (homes.isEmpty() && u.equals(user) && ess.getSettings().spawnIfNoHome()) + { + user.getTeleport().respawn(ess.getSpawn(), charge); + } + else if (homes.isEmpty()) { throw new Exception(u == user ? Util.i18n("noHomeSet") : Util.i18n("noHomeSetPlayer")); } - else if ((homes.size() == 1) && u == user) + else if (homes.size() == 1 && u.equals(user)) { user.getTeleport().home(u, homes.get(0), charge); } - else if (ess.getSettings().spawnIfNoHome()) - { - user.getTeleport().respawn(ess.getSpawn(), charge); - } else { user.sendMessage(Util.format("homes", Util.joinList(homes))); From 497a08940ee20cbd8ed8478530c9d030bc96e81e Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 15:26:55 +0100 Subject: [PATCH 07/18] manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). manucheckp also outputs superperms results. --- EssentialsGroupManager/src/Changelog.txt | 4 ++- .../anjocaido/groupmanager/GroupManager.java | 31 ++++++++++++++++--- .../permissions/BukkitPermissions.java | 24 +++++++++++++- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 232a35e1a..7f143a779 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -15,4 +15,6 @@ v 1.1: - Reverted WorldHolder static change to maintain backward plugin compatibility. - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). - Fix for null in PLAYER_TELEPORT for bukkit perms. - - Fixed wasteful updating of perms on a manload. \ No newline at end of file + - Fixed wasteful updating of perms on a manload. + - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). + - manucheckp also outputs superperms results. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 52b67c57c..203d20c49 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -637,16 +637,18 @@ public class GroupManager extends JavaPlugin { return true; } //VALIDANDO ARGUMENTOS - if (args.length != 1) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); + if ((args.length == 0) || (args.length > 2)) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ (+))"); return false; } + if (validateOnlinePlayer) { match = this.getServer().matchPlayer(args[0]); if (match.size() != 1) { sender.sendMessage(ChatColor.RED + "Player not found!"); return false; - } + } else + targetPlayer = this.getServer().getPlayer(match.get(0).getName()); } if (match != null) { auxUser = dataHolder.getUser(match.get(0).getName()); @@ -683,6 +685,18 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.YELLOW + "And all permissions from subgroups: " + auxString); } } + + //bukkit perms + if ((args.length == 2) && (args[1].equalsIgnoreCase("+"))) { + if (targetPlayer != null) { + sender.sendMessage(ChatColor.YELLOW + "Superperms reports: "); + for(String line: BukkitPermissions.listPerms(targetPlayer)) + sender.sendMessage(ChatColor.YELLOW + line); + + } + } + + return true; case manucheckp: //VALIDANDO ESTADO DO SENDER @@ -695,12 +709,14 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } + if (validateOnlinePlayer) { match = this.getServer().matchPlayer(args[0]); if (match.size() != 1) { sender.sendMessage(ChatColor.RED + "Player not found!"); return false; - } + } else + targetPlayer = this.getServer().getPlayer(match.get(0).getName()); } if (match != null) { auxUser = dataHolder.getUser(match.get(0).getName()); @@ -730,6 +746,13 @@ public class GroupManager extends JavaPlugin { } sender.sendMessage(ChatColor.YELLOW + "Permission Node: " + permissionResult.accessLevel); } + + // superperms + if (targetPlayer != null) { + sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1])); + } + + return true; case mangaddp: //VALIDANDO ESTADO DO SENDER diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index cf3edafc0..afb65b26c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -43,6 +43,7 @@ import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.ServerListener; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; //import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -106,7 +107,7 @@ public class BukkitPermissions { } public void updatePermissions(Player player, String world) { - if (player == null || !this.plugin.isEnabled()) { + if (player == null || !GroupManager.isLoaded) { return; } @@ -172,6 +173,27 @@ public class BukkitPermissions { } */ } + + public List listPerms(Player player) { + List perms = new ArrayList(); + + /* + // All permissions registered with Bukkit for this player + PermissionAttachment attachment = this.attachments.get(player); + + // List perms for this player + perms.add("Attachment Permissions:"); + for(Map.Entry entry : attachment.getPermissions().entrySet()){ + perms.add(" " + entry.getKey() + " = " + entry.getValue()); + } + */ + + perms.add("Effective Permissions:"); + for(PermissionAttachmentInfo info : player.getEffectivePermissions()){ + perms.add(" " + info.getPermission() + " = " + info.getValue()); + } + return perms; + } public void updateAllPlayers() { for (Player player : Bukkit.getServer().getOnlinePlayers()) { From d18a47a6431277c880e03151b9c1fb97c1c409bb Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 15:48:01 +0100 Subject: [PATCH 08/18] Final fix for lag on manload --- .../src/org/anjocaido/groupmanager/GroupManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 203d20c49..2b0a493d4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1465,6 +1465,9 @@ public class GroupManager extends JavaPlugin { } //WORKING config.load(); + + isLoaded = false; + if (args.length > 0) { auxString = ""; for (int i = 0; i < args.length; i++) { @@ -1481,6 +1484,8 @@ public class GroupManager extends JavaPlugin { } worldsHolder.mirrorSetUp(); + isLoaded = true; + BukkitPermissions.updateAllPlayers(); return true; From ff7cc5aec9c9ac2dbef06e93df216be1cc74d7df Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 15:55:53 +0100 Subject: [PATCH 09/18] manulistp + now only lists perms with a value of true --- .../anjocaido/groupmanager/permissions/BukkitPermissions.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index afb65b26c..5a39bd9a8 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -190,7 +190,8 @@ public class BukkitPermissions { perms.add("Effective Permissions:"); for(PermissionAttachmentInfo info : player.getEffectivePermissions()){ - perms.add(" " + info.getPermission() + " = " + info.getValue()); + if (info.getValue() == true) + perms.add(" " + info.getPermission() + " = " + info.getValue()); } return perms; } From 621f9b4f48902b7a80c8fb7957aec7c325b0e1c5 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 17:33:25 +0100 Subject: [PATCH 10/18] Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../anjocaido/groupmanager/permissions/BukkitPermissions.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 7f143a779..7e2e65c4d 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -17,4 +17,5 @@ v 1.1: - Fix for null in PLAYER_TELEPORT for bukkit perms. - Fixed wasteful updating of perms on a manload. - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). - - manucheckp also outputs superperms results. \ No newline at end of file + - manucheckp also outputs superperms results. + - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 5a39bd9a8..02a1f4d5c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -256,8 +256,8 @@ public class BukkitPermissions { @Override public void onPluginDisable(PluginDisableEvent event) { - collectPermissions(); - updateAllPlayers(); + //collectPermissions(); + //updateAllPlayers(); } } From 32f5a31ea53d119d301a1fb0871c347ac27088cf Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 19:10:55 +0100 Subject: [PATCH 11/18] Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../anjocaido/groupmanager/GroupManager.java | 24 ++++++++++++++++--- .../permissions/BukkitPermissions.java | 8 ++++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 7e2e65c4d..cded4ceb8 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -18,4 +18,5 @@ v 1.1: - Fixed wasteful updating of perms on a manload. - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). - manucheckp also outputs superperms results. - - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. \ No newline at end of file + - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. + - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 2b0a493d4..cc7f1de50 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -7,6 +7,7 @@ package org.anjocaido.groupmanager; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; import org.anjocaido.groupmanager.permissions.BukkitPermissions; import org.anjocaido.groupmanager.utils.GroupManagerPermissions; +import org.anjocaido.groupmanager.Tasks.BukkitPermsUpdateTask; import org.anjocaido.groupmanager.data.Variables; import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.data.Group; @@ -62,7 +63,7 @@ public class GroupManager extends JavaPlugin { @Override public void onDisable() { - isLoaded = false; + setLoaded(false); if (worldsHolder != null) { worldsHolder.saveChanges(); @@ -96,11 +97,28 @@ public class GroupManager extends JavaPlugin { BukkitPermissions = new BukkitPermissions(this); enableScheduler(); - isLoaded = true; + + /* + * Schedule a Bukiit Permissions update for 1 tick later. + * All plugins will be loaded by then + */ + + if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(),1) == -1) + GroupManager.logger.severe("Could not schedule superperms Update."); + + //setLoaded(true); System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); } - public InputStream getResourceAsStream(String fileName) { + public static boolean isLoaded() { + return isLoaded; + } + + public static void setLoaded(boolean isLoaded) { + GroupManager.isLoaded = isLoaded; + } + + public InputStream getResourceAsStream(String fileName) { return this.getClassLoader().getResourceAsStream(fileName); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 02a1f4d5c..d3fbdbe55 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -107,7 +107,7 @@ public class BukkitPermissions { } public void updatePermissions(Player player, String world) { - if (player == null || !GroupManager.isLoaded) { + if (player == null || !GroupManager.isLoaded()) { return; } @@ -237,6 +237,9 @@ public class BukkitPermissions { @Override public void onPlayerQuit(PlayerQuitEvent event) { + if (!GroupManager.isLoaded()) + return; + attachments.remove(event.getPlayer()); } @@ -250,6 +253,9 @@ public class BukkitPermissions { @Override public void onPluginEnable(PluginEnableEvent event) { + if (!GroupManager.isLoaded()) + return; + collectPermissions(); updateAllPlayers(); } From a2ca381bbd2f0621d7da444fceac1d7c720b34ac Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 19:11:59 +0100 Subject: [PATCH 12/18] Forgot to push task --- .../Tasks/BukkitPermsUpdateTask.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java new file mode 100644 index 000000000..27951112d --- /dev/null +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java @@ -0,0 +1,27 @@ +package org.anjocaido.groupmanager.Tasks; + +import org.anjocaido.groupmanager.GroupManager; + +/* + * + * Created by ElgarL + * + */ + +public class BukkitPermsUpdateTask implements Runnable { + + public BukkitPermsUpdateTask() { + super(); + } + + @Override + public void run() { + // Signal loaded and update BukkitPermissions. + GroupManager.setLoaded(true); + GroupManager.BukkitPermissions.updateAllPlayers(); + + GroupManager.logger.info("Bukkit Permissions Updated!"); + + } + +} \ No newline at end of file From 2db256678ec1412a0e76bae88bd07a44f21a8139 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 24 Sep 2011 19:18:22 +0100 Subject: [PATCH 13/18] Fix for if the scheduler fails --- .../src/org/anjocaido/groupmanager/GroupManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index cc7f1de50..13d99ddc1 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -105,6 +105,8 @@ public class GroupManager extends JavaPlugin { if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(),1) == -1) GroupManager.logger.severe("Could not schedule superperms Update."); + else + setLoaded(true); //setLoaded(true); System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); From 62e1710607776a56e9f7b3428c815401ad6be4fd Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 25 Sep 2011 03:14:38 +0100 Subject: [PATCH 14/18] Fixed silly error with isLoaded() --- .../anjocaido/groupmanager/GroupManager.java | 6 ++--- .../anjocaido/groupmanager/data/Group.java | 4 ++-- .../org/anjocaido/groupmanager/data/User.java | 23 +++++++++++-------- .../permissions/BukkitPermissions.java | 4 +++- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 13d99ddc1..dcec36639 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -51,7 +51,7 @@ public class GroupManager extends JavaPlugin { private WorldsHolder worldsHolder; private boolean validateOnlinePlayer = true; private boolean isReady = false; - public static boolean isLoaded = false; + private static boolean isLoaded = false; private GMConfiguration config; private GMLoggerHandler ch; public static BukkitPermissions BukkitPermissions; @@ -103,10 +103,10 @@ public class GroupManager extends JavaPlugin { * All plugins will be loaded by then */ - if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(),1) == -1) + if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(),1) == -1) { GroupManager.logger.severe("Could not schedule superperms Update."); - else setLoaded(true); + } //setLoaded(true); System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java index 7523831e7..c881fc95d 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java @@ -90,7 +90,7 @@ public class Group extends DataUnit implements Cloneable { inherits.add(inherit.getName().toLowerCase()); } flagAsChanged(); - if (GroupManager.isLoaded) + if (GroupManager.isLoaded()) GroupManager.BukkitPermissions.updateAllPlayers(); } @@ -121,7 +121,7 @@ public class Group extends DataUnit implements Cloneable { variables.addVar(key, temp.getVarObject(key)); } flagAsChanged(); - if (GroupManager.isLoaded) + if (GroupManager.isLoaded()) GroupManager.BukkitPermissions.updateAllPlayers(); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java index e9bf79aa9..46dbb3ddc 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -104,8 +104,9 @@ public class User extends DataUnit implements Cloneable { public void setGroup(String group) { this.group = group; flagAsChanged(); - if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) - GroupManager.BukkitPermissions.updateAllPlayers(); + if (GroupManager.isLoaded()) + if(GroupManager.BukkitPermissions.player_join = false) + GroupManager.BukkitPermissions.updateAllPlayers(); } /** @@ -118,8 +119,9 @@ public class User extends DataUnit implements Cloneable { group = getDataSource().getGroup(group.getName()); this.group = group.getName(); flagAsChanged(); - if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) - GroupManager.BukkitPermissions.updateAllPlayers(); + if (GroupManager.isLoaded()) + if (GroupManager.BukkitPermissions.player_join = false) + GroupManager.BukkitPermissions.updateAllPlayers(); } public void addSubGroup(Group subGroup) { @@ -133,7 +135,8 @@ public class User extends DataUnit implements Cloneable { removeSubGroup(subGroup); subGroups.add(subGroup.getName()); flagAsChanged(); - if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) + if (GroupManager.isLoaded()) + if (GroupManager.BukkitPermissions.player_join = false) GroupManager.BukkitPermissions.updateAllPlayers(); } @@ -153,8 +156,9 @@ public class User extends DataUnit implements Cloneable { try { if (subGroups.remove(subGroup.getName())) { flagAsChanged(); - if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) - GroupManager.BukkitPermissions.updateAllPlayers(); + if (GroupManager.isLoaded()) + if (GroupManager.BukkitPermissions.player_join = false) + GroupManager.BukkitPermissions.updateAllPlayers(); return true; } } catch (Exception e) { @@ -197,7 +201,8 @@ public class User extends DataUnit implements Cloneable { variables.addVar(key, temp.getVarObject(key)); } flagAsChanged(); - if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) - GroupManager.BukkitPermissions.updateAllPlayers(); + if (GroupManager.isLoaded()) + if (GroupManager.BukkitPermissions.player_join = false) + GroupManager.BukkitPermissions.updateAllPlayers(); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index d3fbdbe55..1c2aa8fb7 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -16,6 +16,8 @@ package org.anjocaido.groupmanager.permissions; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -255,7 +257,7 @@ public class BukkitPermissions { public void onPluginEnable(PluginEnableEvent event) { if (!GroupManager.isLoaded()) return; - + collectPermissions(); updateAllPlayers(); } From efcab71969bdafb68fb4bdb4aa1218e30e0eeb56 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Mon, 26 Sep 2011 03:20:56 +0100 Subject: [PATCH 15/18] Updating for register 1.3 --- .../essentials/EssentialsPluginListener.java | 4 +- .../essentials/commands/Commandptime.java | 22 +- .../essentials/commands/Commandtime.java | 4 +- .../essentials/commands/Commandunban.java | 4 +- .../essentials/register/payment/Method.java | 10 +- .../essentials/register/payment/Methods.java | 172 +++++---- .../register/payment/methods/BOSE6.java | 361 +++++++++++------- .../register/payment/methods/BOSE7.java | 338 +++++++++------- .../register/payment/methods/MCUR.java | 191 +++++---- .../register/payment/methods/iCo4.java | 244 +++++++----- .../register/payment/methods/iCo5.java | 23 +- .../register/payment/methods/iCo6.java | 245 +++++++----- 12 files changed, 961 insertions(+), 657 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java index e64496171..6b92d7aa2 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java @@ -21,10 +21,9 @@ public class EssentialsPluginListener extends ServerListener implements IConf public void onPluginEnable(final PluginEnableEvent event) { ess.getPermissionsHandler().checkPermissions(); - if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(event.getPlugin())) + if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(ess.getServer().getPluginManager())) { LOGGER.log(Level.INFO, "[Essentials] Payment method found (" + ess.getPaymentMethod().getMethod().getName() + " version: " + ess.getPaymentMethod().getMethod().getVersion() + ")"); - } } @@ -35,6 +34,7 @@ public class EssentialsPluginListener extends ServerListener implements IConf // Check to see if the plugin thats being disabled is the one we are using if (ess.getPaymentMethod() != null && ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().checkDisabled(event.getPlugin())) { + ess.getPaymentMethod().reset(); LOGGER.log(Level.INFO, "[Essentials] Payment method was disabled. No longer accepting payments."); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandptime.java b/Essentials/src/com/earth2me/essentials/commands/Commandptime.java index 2eb580ea4..115bb20ef 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandptime.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandptime.java @@ -11,7 +11,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; -import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.entity.Player; @@ -97,29 +96,31 @@ public class Commandptime extends EssentialsCommand */ private void getUsersTime(final CommandSender sender, final Collection users) { - if (users.size() > 1) + if (users.size() > 1) { sender.sendMessage(Util.format("pTimePlayers")); } - - for (User user : users) + + for (User user : users) { - if(user.getPlayerTimeOffset() == 0) + if (user.getPlayerTimeOffset() == 0) { sender.sendMessage(Util.format("pTimeNormal", user.getName())); } - else { + else + { String time = DescParseTickFormat.format(user.getPlayerTime()); - if(!user.isPlayerTimeRelative()) + if (!user.isPlayerTimeRelative()) { sender.sendMessage(Util.format("pTimeCurrentFixed", user.getName(), time)); } - else { + else + { sender.sendMessage(Util.format("pTimeCurrent", user.getName(), time)); } } } - + return; } @@ -177,7 +178,8 @@ public class Commandptime extends EssentialsCommand { sender.sendMessage(Util.format("pTimeSetFixed", time, msg.toString())); } - else { + else + { sender.sendMessage(Util.format("pTimeSet", time, msg.toString())); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java index 72bb2b65f..687396f53 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java @@ -25,7 +25,7 @@ public class Commandtime extends EssentialsCommand { worldSelector = args[1]; } - Set worlds = getWorlds(server, sender, worldSelector); + final Set worlds = getWorlds(server, sender, worldSelector); // If no arguments we are reading the time if (args.length == 0) @@ -34,7 +34,7 @@ public class Commandtime extends EssentialsCommand return; } - User user = ess.getUser(sender); + final User user = ess.getUser(sender); if (user != null && !user.isAuthorized("essentials.time.set")) { user.sendMessage(Util.i18n("timeSetPermission")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandunban.java b/Essentials/src/com/earth2me/essentials/commands/Commandunban.java index 8bc921d64..4877c2aeb 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandunban.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandunban.java @@ -21,11 +21,9 @@ public class Commandunban extends EssentialsCommand throw new NotEnoughArgumentsException(); } - String name; try { - User u = getPlayer(server, args, 0, true); - name = u.getName(); + final User u = getPlayer(server, args, 0, true); u.setBanned(false); sender.sendMessage(Util.i18n("unbannedPlayer")); } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Method.java b/Essentials/src/com/earth2me/essentials/register/payment/Method.java index 7394f6b2f..f8bd814ef 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Method.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Method.java @@ -4,7 +4,7 @@ import org.bukkit.plugin.Plugin; /** - * Method.java + * Interface to be implemented by a payment method. * * @author Nijikokun (@nijikokun) * @copyright Copyright (C) 2011 @@ -41,6 +41,14 @@ public interface Method */ public String getVersion(); + /** + * Returns the amount of decimal places that get stored + * NOTE: it will return -1 if there is no rounding + * + * @return int for each decimal place + */ + public int fractionalDigits(); + /** * Formats amounts into this payment methods style of currency display. * diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java index 3dc7a2c63..0fc65534f 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java @@ -5,9 +5,6 @@ import java.util.Set; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; -import java.util.HashSet; -import java.util.Set; - /** * The Methods initializes Methods that utilize the Method interface @@ -15,15 +12,13 @@ import java.util.Set; * * Allowing you to check whether a payment method exists or not. * - *
- *  Methods methods = new Methods();
- * 
- * * Methods also allows you to set a preferred method of payment before it captures * payment plugins in the initialization process. * + * in bukkit.yml: *
- *  Methods methods = new Methods("iConomy");
+ *  economy:
+ *      preferred: "iConomy"
  * 
* * @author: Nijikokun (@nijikokun) @@ -32,51 +27,62 @@ import java.util.Set; */ public class Methods { - private boolean self = false; - private Method Method = null; - private String preferred = ""; - private Set Methods = new HashSet(); - private Set Dependencies = new HashSet(); - private Set Attachables = new HashSet(); + private static String version = null; + private static boolean self = false; + private static Method Method = null; + private static String preferred = ""; + private static Set Methods = new HashSet(); + private static Set Dependencies = new HashSet(); + private static Set Attachables = new HashSet(); - /** - * Initialize Method class - */ - public Methods() + static { - this._init(); - } - - /** - * Initializes Methods class utilizing a "preferred" payment method check before - * returning the first method that was initialized. - * - * @param preferred Payment method that is most preferred for this setup. - */ - public Methods(String preferred) - { - this._init(); - - if (this.Dependencies.contains(preferred)) - { - this.preferred = preferred; - } + _init(); } /** * Implement all methods along with their respective name & class. - * - * @see #Methods() - * @see #Methods(java.lang.String) */ - private void _init() + private static void _init() { - this.addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo4()); - this.addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo5()); - this.addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo6()); - this.addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE6()); - this.addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE7()); - this.addMethod("MultiCurrency", new com.earth2me.essentials.register.payment.methods.MCUR()); + addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo6()); + addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo5()); + addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo4()); + addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE6()); + addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE7()); + addMethod("Currency", new com.earth2me.essentials.register.payment.methods.MCUR()); + Dependencies.add("MultiCurrency"); + } + + /** + * Used by the plugin to setup version + * + * @param v version + */ + public static void setVersion(String v) + { + version = v; + } + + /** + * Use to reset methods during disable + */ + public static void reset() + { + version = null; + self = false; + Method = null; + preferred = ""; + Attachables.clear(); + } + + /** + * Use to get version of Register plugin + * @return version + */ + public static String getVersion() + { + return version; } /** @@ -86,7 +92,7 @@ public class Methods * @return Set - Array of payment methods that are loaded. * @see #setMethod(org.bukkit.plugin.Plugin) */ - public Set getDependencies() + public static Set getDependencies() { return Dependencies; } @@ -98,7 +104,7 @@ public class Methods * @param plugin Plugin data from bukkit, Internal Class file. * @return Method or Null */ - public Method createMethod(Plugin plugin) + public static Method createMethod(Plugin plugin) { for (Method method : Methods) { @@ -112,7 +118,7 @@ public class Methods return null; } - private void addMethod(String name, Method method) + private static void addMethod(String name, Method method) { Dependencies.add(name); Methods.add(method); @@ -125,7 +131,7 @@ public class Methods * @see #setMethod(org.bukkit.plugin.Plugin) * @see #checkDisabled(org.bukkit.plugin.Plugin) */ - public boolean hasMethod() + public static boolean hasMethod() { return (Method != null); } @@ -134,15 +140,16 @@ public class Methods * Checks Plugin Class against a multitude of checks to verify it's usability * as a payment method. * - * @param method Plugin data from bukkit, Internal Class file. + * @param PluginManager the plugin manager for the server * @return boolean True on success, False on failure. */ - public boolean setMethod(Plugin method) + public static boolean setMethod(PluginManager manager) { if (hasMethod()) { return true; } + if (self) { self = false; @@ -152,44 +159,37 @@ public class Methods int count = 0; boolean match = false; Plugin plugin = null; - PluginManager manager = method.getServer().getPluginManager(); - for (String name : this.getDependencies()) + for (String name : getDependencies()) { if (hasMethod()) { break; } - if (method.getDescription().getName().equals(name)) - { - plugin = method; - } - else - { - plugin = manager.getPlugin(name); - } + + plugin = manager.getPlugin(name); if (plugin == null) { continue; } - Method current = this.createMethod(plugin); + Method current = createMethod(plugin); if (current == null) { continue; } - if (this.preferred.isEmpty()) + if (preferred.isEmpty()) { - this.Method = current; + Method = current; } else { - this.Attachables.add(current); + Attachables.add(current); } } - if (!this.preferred.isEmpty()) + if (!preferred.isEmpty()) { do { @@ -199,7 +199,7 @@ public class Methods } else { - for (Method attached : this.Attachables) + for (Method attached : Attachables) { if (attached == null) { @@ -212,21 +212,21 @@ public class Methods break; } - if (this.preferred.isEmpty()) + if (preferred.isEmpty()) { - this.Method = attached; + Method = attached; } if (count == 0) { - if (this.preferred.equalsIgnoreCase(attached.getName())) + if (preferred.equalsIgnoreCase(attached.getName())) { - this.Method = attached; + Method = attached; + } + else + { + Method = attached; } - } - else - { - this.Method = attached; } } @@ -239,12 +239,28 @@ public class Methods return hasMethod(); } + /** + * Sets the preferred economy + * + * @return boolean + */ + public static boolean setPreferred(String check) + { + if (getDependencies().contains(check)) + { + preferred = check; + return true; + } + + return false; + } + /** * Grab the existing and initialized (hopefully) Method Class. * * @return Method or Null */ - public Method getMethod() + public static Method getMethod() { return Method; } @@ -256,16 +272,18 @@ public class Methods * @param method Plugin data from bukkit, Internal Class file. * @return boolean */ - public boolean checkDisabled(Plugin method) + public static boolean checkDisabled(Plugin method) { if (!hasMethod()) { return true; } + if (Method.isCompatible(method)) { Method = null; } + return (Method == null); } } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java index 8400eebd0..7c83c9b76 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java @@ -1,9 +1,11 @@ package com.earth2me.essentials.register.payment.methods; import com.earth2me.essentials.register.payment.Method; + import cosine.boseconomy.BOSEconomy; import org.bukkit.plugin.Plugin; + /** * BOSEconomy 6 Implementation of Method * @@ -11,191 +13,256 @@ import org.bukkit.plugin.Plugin; * @copyright (c) 2011 * @license AOL license */ -public class BOSE6 implements Method { - private BOSEconomy BOSEconomy; +@SuppressWarnings("deprecation") +public class BOSE6 implements Method +{ + private BOSEconomy BOSEconomy; - public BOSEconomy getPlugin() { - return this.BOSEconomy; - } + public BOSEconomy getPlugin() + { + return this.BOSEconomy; + } - public String getName() { - return "BOSEconomy"; - } + public String getName() + { + return "BOSEconomy"; + } - public String getVersion() { - return "0.6.2"; - } + public String getVersion() + { + return "0.6.2"; + } - public String format(double amount) { - String currency = this.BOSEconomy.getMoneyNamePlural(); - if(amount == 1) currency = this.BOSEconomy.getMoneyName(); - return amount + " " + currency; - } + public int fractionalDigits() + { + return 0; + } - public boolean hasBanks() { - return true; - } + public String format(double amount) + { + String currency = this.BOSEconomy.getMoneyNamePlural(); - public boolean hasBank(String bank) { - return this.BOSEconomy.bankExists(bank); - } + if (amount == 1) + { + currency = this.BOSEconomy.getMoneyName(); + } - public boolean hasAccount(String name) { - return this.BOSEconomy.playerRegistered(name, false); - } + return amount + " " + currency; + } - public boolean hasBankAccount(String bank, String name) { - return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); - } + public boolean hasBanks() + { + return true; + } - public MethodAccount getAccount(String name) { - if(!hasAccount(name)) return null; - return new BOSEAccount(name, this.BOSEconomy); - } + public boolean hasBank(String bank) + { + return this.BOSEconomy.bankExists(bank); + } - public MethodBankAccount getBankAccount(String bank, String name) { - if(!hasBankAccount(bank, name)) return null; - return new BOSEBankAccount(bank, BOSEconomy); - } + public boolean hasAccount(String name) + { + return this.BOSEconomy.playerRegistered(name, false); + } - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && plugin.getDescription().getVersion().equals("0.6.2"); - } + public boolean hasBankAccount(String bank, String name) + { + return this.BOSEconomy.isBankOwner(bank, name) + || this.BOSEconomy.isBankMember(bank, name); + } - public void setPlugin(Plugin plugin) { - BOSEconomy = (BOSEconomy)plugin; - } + public MethodAccount getAccount(String name) + { + if (!hasAccount(name)) + { + return null; + } - public class BOSEAccount implements MethodAccount { - private String name; - private BOSEconomy BOSEconomy; + return new BOSEAccount(name, this.BOSEconomy); + } - public BOSEAccount(String name, BOSEconomy bOSEconomy) { - this.name = name; - this.BOSEconomy = bOSEconomy; - } + public MethodBankAccount getBankAccount(String bank, String name) + { + if (!hasBankAccount(bank, name)) + { + return null; + } - public double balance() { - return (double) this.BOSEconomy.getPlayerMoney(this.name); - } + return new BOSEBankAccount(bank, BOSEconomy); + } - public boolean set(double amount) { - int IntAmount = (int)Math.ceil(amount); - return this.BOSEconomy.setPlayerMoney(this.name, IntAmount, false); - } + public boolean isCompatible(Plugin plugin) + { + return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") + && plugin instanceof BOSEconomy + && plugin.getDescription().getVersion().equals("0.6.2"); + } - public boolean add(double amount) { - int IntAmount = (int)Math.ceil(amount); - return this.BOSEconomy.addPlayerMoney(this.name, IntAmount, false); - } + public void setPlugin(Plugin plugin) + { + BOSEconomy = (BOSEconomy)plugin; + } - public boolean subtract(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance - IntAmount), false); - } - public boolean multiply(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance * IntAmount), false); - } + public class BOSEAccount implements MethodAccount + { + private final String name; + private final BOSEconomy BOSEconomy; - public boolean divide(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance / IntAmount), false); - } + public BOSEAccount(String name, BOSEconomy bOSEconomy) + { + this.name = name; + this.BOSEconomy = bOSEconomy; + } - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } + public double balance() + { + return (double)this.BOSEconomy.getPlayerMoney(this.name); + } - public boolean hasOver(double amount) { - return (this.balance() > amount); - } + public boolean set(double amount) + { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setPlayerMoney(this.name, IntAmount, false); + } - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } + public boolean add(double amount) + { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.addPlayerMoney(this.name, IntAmount, false); + } - public boolean isNegative() { - return (this.balance() < 0); - } + public boolean subtract(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance - IntAmount), false); + } - public boolean remove() { - return false; - } - } + public boolean multiply(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance * IntAmount), false); + } - public class BOSEBankAccount implements MethodBankAccount { - private final String bank; - private final BOSEconomy BOSEconomy; + public boolean divide(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance / IntAmount), false); + } - public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) { - this.bank = bank; - this.BOSEconomy = bOSEconomy; - } + public boolean hasEnough(double amount) + { + return (this.balance() >= amount); + } - public String getBankName() { - return this.bank; - } + public boolean hasOver(double amount) + { + return (this.balance() > amount); + } - public int getBankId() { - return -1; - } + public boolean hasUnder(double amount) + { + return (this.balance() < amount); + } - public double balance() { - return (double) this.BOSEconomy.getBankMoney(bank); - } + public boolean isNegative() + { + return (this.balance() < 0); + } - public boolean set(double amount) { - int IntAmount = (int)Math.ceil(amount); - return this.BOSEconomy.setBankMoney(bank, IntAmount, true); - } + public boolean remove() + { + return false; + } + } - public boolean add(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance + IntAmount), false); - } - public boolean subtract(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance - IntAmount), false); - } + public class BOSEBankAccount implements MethodBankAccount + { + private final String bank; + private final BOSEconomy BOSEconomy; - public boolean multiply(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance * IntAmount), false); - } + public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) + { + this.bank = bank; + this.BOSEconomy = bOSEconomy; + } - public boolean divide(double amount) { - int IntAmount = (int)Math.ceil(amount); - int balance = (int)this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance / IntAmount), false); - } + public String getBankName() + { + return this.bank; + } - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } + public int getBankId() + { + return -1; + } - public boolean hasOver(double amount) { - return (this.balance() > amount); - } + public double balance() + { + return (double)this.BOSEconomy.getBankMoney(bank); + } - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } + public boolean set(double amount) + { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setBankMoney(bank, IntAmount, true); + } - public boolean isNegative() { - return (this.balance() < 0); - } + public boolean add(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance + IntAmount), false); + } - public boolean remove() { - return this.BOSEconomy.removeBank(bank); - } - } + public boolean subtract(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance - IntAmount), false); + } + + public boolean multiply(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance * IntAmount), false); + } + + public boolean divide(double amount) + { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance / IntAmount), false); + } + + public boolean hasEnough(double amount) + { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) + { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) + { + return (this.balance() < amount); + } + + public boolean isNegative() + { + return (this.balance() < 0); + } + + public boolean remove() + { + return this.BOSEconomy.removeBank(bank); + } + } } \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java index 3b0f53c4d..288e4a5c5 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java @@ -1,9 +1,11 @@ package com.earth2me.essentials.register.payment.methods; import com.earth2me.essentials.register.payment.Method; + import cosine.boseconomy.BOSEconomy; import org.bukkit.plugin.Plugin; + /** * BOSEconomy 7 Implementation of Method * @@ -12,182 +14,244 @@ import org.bukkit.plugin.Plugin; * @copyright (c) 2011 * @license AOL license */ +public class BOSE7 implements Method +{ + private BOSEconomy BOSEconomy; -public class BOSE7 implements Method { - private BOSEconomy BOSEconomy; + public BOSEconomy getPlugin() + { + return this.BOSEconomy; + } - public BOSEconomy getPlugin() { - return this.BOSEconomy; - } + public String getName() + { + return "BOSEconomy"; + } - public String getName() { - return "BOSEconomy"; - } + public String getVersion() + { + return "0.7.0"; + } - public String getVersion() { - return "0.7.0"; - } + public int fractionalDigits() + { + return this.BOSEconomy.getFractionalDigits(); + } - public String format(double amount) { - String currency = this.BOSEconomy.getMoneyNamePlural(); - if(amount == 1) currency = this.BOSEconomy.getMoneyName(); - return amount + " " + currency; - } + public String format(double amount) + { + String currency = this.BOSEconomy.getMoneyNamePlural(); - public boolean hasBanks() { - return true; - } + if (amount == 1) + { + currency = this.BOSEconomy.getMoneyName(); + } - public boolean hasBank(String bank) { - return this.BOSEconomy.bankExists(bank); - } + return amount + " " + currency; + } - public boolean hasAccount(String name) { - return this.BOSEconomy.playerRegistered(name, false); - } + public boolean hasBanks() + { + return true; + } - public boolean hasBankAccount(String bank, String name) { - return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); - } + public boolean hasBank(String bank) + { + return this.BOSEconomy.bankExists(bank); + } - public MethodAccount getAccount(String name) { - if(!hasAccount(name)) return null; - return new BOSEAccount(name, this.BOSEconomy); - } + public boolean hasAccount(String name) + { + return this.BOSEconomy.playerRegistered(name, false); + } - public MethodBankAccount getBankAccount(String bank, String name) { - if(!hasBankAccount(bank, name)) return null; - return new BOSEBankAccount(bank, BOSEconomy); - } + public boolean hasBankAccount(String bank, String name) + { + return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); + } - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && !plugin.getDescription().getVersion().equals("0.6.2"); - } + public MethodAccount getAccount(String name) + { + if (!hasAccount(name)) + { + return null; + } - public void setPlugin(Plugin plugin) { - BOSEconomy = (BOSEconomy)plugin; - } + return new BOSEAccount(name, this.BOSEconomy); + } - public class BOSEAccount implements MethodAccount { - private String name; - private BOSEconomy BOSEconomy; + public MethodBankAccount getBankAccount(String bank, String name) + { + if (!hasBankAccount(bank, name)) + { + return null; + } - public BOSEAccount(String name, BOSEconomy bOSEconomy) { - this.name = name; - this.BOSEconomy = bOSEconomy; - } + return new BOSEBankAccount(bank, BOSEconomy); + } - public double balance() { - return this.BOSEconomy.getPlayerMoneyDouble(this.name); - } + public boolean isCompatible(Plugin plugin) + { + return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") + && plugin instanceof BOSEconomy + && !plugin.getDescription().getVersion().equals("0.6.2"); + } - public boolean set(double amount) { - return this.BOSEconomy.setPlayerMoney(this.name, amount, false); - } + public void setPlugin(Plugin plugin) + { + BOSEconomy = (BOSEconomy)plugin; + } - public boolean add(double amount) { - return this.BOSEconomy.addPlayerMoney(this.name, amount, false); - } - public boolean subtract(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false); - } + public class BOSEAccount implements MethodAccount + { + private String name; + private BOSEconomy BOSEconomy; - public boolean multiply(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false); - } + public BOSEAccount(String name, BOSEconomy bOSEconomy) + { + this.name = name; + this.BOSEconomy = bOSEconomy; + } - public boolean divide(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false); - } + public double balance() + { + return this.BOSEconomy.getPlayerMoneyDouble(this.name); + } - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } + public boolean set(double amount) + { + return this.BOSEconomy.setPlayerMoney(this.name, amount, false); + } - public boolean hasOver(double amount) { - return (this.balance() > amount); - } + public boolean add(double amount) + { + return this.BOSEconomy.addPlayerMoney(this.name, amount, false); + } - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } + public boolean subtract(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false); + } - public boolean isNegative() { - return (this.balance() < 0); - } + public boolean multiply(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false); + } - public boolean remove() { - return false; - } - } + public boolean divide(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false); + } - public class BOSEBankAccount implements MethodBankAccount { - private String bank; - private BOSEconomy BOSEconomy; + public boolean hasEnough(double amount) + { + return (this.balance() >= amount); + } - public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) { - this.bank = bank; - this.BOSEconomy = bOSEconomy; - } + public boolean hasOver(double amount) + { + return (this.balance() > amount); + } - public String getBankName() { - return this.bank; - } + public boolean hasUnder(double amount) + { + return (this.balance() < amount); + } - public int getBankId() { - return -1; - } + public boolean isNegative() + { + return (this.balance() < 0); + } - public double balance() { - return this.BOSEconomy.getBankMoneyDouble(bank); - } + public boolean remove() + { + return false; + } + } - public boolean set(double amount) { - return this.BOSEconomy.setBankMoney(bank, amount, true); - } - public boolean add(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance + amount), false); - } + public class BOSEBankAccount implements MethodBankAccount + { + private String bank; + private BOSEconomy BOSEconomy; - public boolean subtract(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance - amount), false); - } + public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) + { + this.bank = bank; + this.BOSEconomy = bOSEconomy; + } - public boolean multiply(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance * amount), false); - } + public String getBankName() + { + return this.bank; + } - public boolean divide(double amount) { - double balance = this.balance(); - return this.BOSEconomy.setBankMoney(bank, (balance / amount), false); - } + public int getBankId() + { + return -1; + } - public boolean hasEnough(double amount) { - return (this.balance() >= amount); - } + public double balance() + { + return this.BOSEconomy.getBankMoneyDouble(bank); + } - public boolean hasOver(double amount) { - return (this.balance() > amount); - } + public boolean set(double amount) + { + return this.BOSEconomy.setBankMoney(bank, amount, true); + } - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } + public boolean add(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance + amount), false); + } - public boolean isNegative() { - return (this.balance() < 0); - } + public boolean subtract(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance - amount), false); + } - public boolean remove() { - return this.BOSEconomy.removeBank(bank); - } - } + public boolean multiply(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance * amount), false); + } + + public boolean divide(double amount) + { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance / amount), false); + } + + public boolean hasEnough(double amount) + { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) + { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) + { + return (this.balance() < amount); + } + + public boolean isNegative() + { + return (this.balance() < 0); + } + + public boolean remove() + { + return this.BOSEconomy.removeBank(bank); + } + } } \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java index 8ea709c19..6248b1b91 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java @@ -7,6 +7,7 @@ import me.ashtheking.currency.CurrencyList; import org.bukkit.plugin.Plugin; + /** * MultiCurrency Method implementation. * @@ -14,107 +15,141 @@ import org.bukkit.plugin.Plugin; * @copyright (c) 2011 * @license AOL license */ -public class MCUR implements Method { - private Currency currencyList; +public class MCUR implements Method +{ + private Currency currencyList; - public Object getPlugin() { - return this.currencyList; - } + public Object getPlugin() + { + return this.currencyList; + } - public String getName() { - return "MultiCurrency"; - } + public String getName() + { + return "MultiCurrency"; + } - public String getVersion() { - return "0.09"; - } + public String getVersion() + { + return "0.09"; + } - public String format(double amount) { - return amount + " Currency"; - } + public int fractionalDigits() + { + return -1; + } - public boolean hasBanks() { - return false; - } + public String format(double amount) + { + return amount + " Currency"; + } - public boolean hasBank(String bank) { - return false; - } + public boolean hasBanks() + { + return false; + } - public boolean hasAccount(String name) { - return true; - } + public boolean hasBank(String bank) + { + return false; + } - public boolean hasBankAccount(String bank, String name) { - return false; - } + public boolean hasAccount(String name) + { + return true; + } - public MethodAccount getAccount(String name) { - return new MCurrencyAccount(name); - } + public boolean hasBankAccount(String bank, String name) + { + return false; + } - public MethodBankAccount getBankAccount(String bank, String name) { - return null; - } + public MethodAccount getAccount(String name) + { + return new MCurrencyAccount(name); + } - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase(getName()) && plugin instanceof Currency; - } + public MethodBankAccount getBankAccount(String bank, String name) + { + return null; + } - public void setPlugin(Plugin plugin) { - currencyList = (Currency) plugin; - } + public boolean isCompatible(Plugin plugin) + { + return (plugin.getDescription().getName().equalsIgnoreCase("Currency") + || plugin.getDescription().getName().equalsIgnoreCase("MultiCurrency")) + && plugin instanceof Currency; + } - public class MCurrencyAccount implements MethodAccount{ - private String name; + public void setPlugin(Plugin plugin) + { + currencyList = (Currency)plugin; + } - public MCurrencyAccount(String name) { - this.name = name; - } - public double balance() { - return CurrencyList.getValue((String) CurrencyList.maxCurrency(name)[0], name); - } + public class MCurrencyAccount implements MethodAccount + { + private String name; - public boolean set(double amount) { - CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, amount); - return true; - } + public MCurrencyAccount(String name) + { + this.name = name; + } - public boolean add(double amount) { - return CurrencyList.add(name, amount); - } + public double balance() + { + return CurrencyList.getValue((String)CurrencyList.maxCurrency(name)[0], name); + } - public boolean subtract(double amount) { - return CurrencyList.subtract(name, amount); - } + public boolean set(double amount) + { + CurrencyList.setValue((String)CurrencyList.maxCurrency(name)[0], name, amount); + return true; + } - public boolean multiply(double amount) { - return CurrencyList.multiply(name, amount); - } + public boolean add(double amount) + { + return CurrencyList.add(name, amount); + } - public boolean divide(double amount) { - return CurrencyList.divide(name, amount); - } + public boolean subtract(double amount) + { + return CurrencyList.subtract(name, amount); + } - public boolean hasEnough(double amount) { - return CurrencyList.hasEnough(name, amount); - } + public boolean multiply(double amount) + { + return CurrencyList.multiply(name, amount); + } - public boolean hasOver(double amount) { - return CurrencyList.hasOver(name, amount); - } + public boolean divide(double amount) + { + return CurrencyList.divide(name, amount); + } - public boolean hasUnder(double amount) { - return CurrencyList.hasUnder(name, amount); - } + public boolean hasEnough(double amount) + { + return CurrencyList.hasEnough(name, amount); + } - public boolean isNegative() { - return CurrencyList.isNegative(name); - } + public boolean hasOver(double amount) + { + return CurrencyList.hasOver(name, amount); + } - public boolean remove() { - return CurrencyList.remove(name); - } - } + public boolean hasUnder(double amount) + { + return CurrencyList.hasUnder(name, amount); + } + + public boolean isNegative() + { + return CurrencyList.isNegative(name); + } + + public boolean remove() + { + return CurrencyList.remove(name); + } + } } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java index 933959586..fcdb7c43b 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java @@ -1,12 +1,13 @@ package com.earth2me.essentials.register.payment.methods; +import com.earth2me.essentials.register.payment.Method; import com.nijiko.coelho.iConomy.iConomy; import com.nijiko.coelho.iConomy.system.Account; -import com.earth2me.essentials.register.payment.Method; import org.bukkit.plugin.Plugin; + /** * iConomy 4 Implementation of Method * @@ -14,122 +15,175 @@ import org.bukkit.plugin.Plugin; * @copyright (c) 2011 * @license AOL license */ -public class iCo4 implements Method { - private iConomy iConomy; +public class iCo4 implements Method +{ + private iConomy iConomy; - public iConomy getPlugin() { - return this.iConomy; - } + public iConomy getPlugin() + { + return this.iConomy; + } - public String getName() { - return "iConomy"; - } + public String getName() + { + return "iConomy"; + } - public String getVersion() { - return "4"; - } + public String getVersion() + { + return "4"; + } - public String format(double amount) { - return this.iConomy.getBank().format(amount); - } + public int fractionalDigits() + { + return 2; + } - public boolean hasBanks() { - return false; - } + public String format(double amount) + { + return com.nijiko.coelho.iConomy.iConomy.getBank().format(amount); + } - public boolean hasBank(String bank) { - return false; - } + public boolean hasBanks() + { + return false; + } - public boolean hasAccount(String name) { - return this.iConomy.getBank().hasAccount(name); - } + public boolean hasBank(String bank) + { + return false; + } - public boolean hasBankAccount(String bank, String name) { - return false; - } + public boolean hasAccount(String name) + { + return com.nijiko.coelho.iConomy.iConomy.getBank().hasAccount(name); + } - public MethodAccount getAccount(String name) { - return new iCoAccount(this.iConomy.getBank().getAccount(name)); - } + public boolean hasBankAccount(String bank, String name) + { + return false; + } - public MethodBankAccount getBankAccount(String bank, String name) { - return null; - } - - public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.nijiko.coelho.iConomy.iConomy") && plugin instanceof iConomy; - } + public MethodAccount getAccount(String name) + { + return new iCoAccount(com.nijiko.coelho.iConomy.iConomy.getBank().getAccount(name)); + } - public void setPlugin(Plugin plugin) { - iConomy = (iConomy)plugin; - } - - public class iCoAccount implements MethodAccount { - private Account account; + public MethodBankAccount getBankAccount(String bank, String name) + { + return null; + } - public iCoAccount(Account account) { - this.account = account; - } + public boolean isCompatible(Plugin plugin) + { + return plugin.getDescription().getName().equalsIgnoreCase("iconomy") + && plugin.getClass().getName().equals("com.nijiko.coelho.iConomy.iConomy") + && plugin instanceof iConomy; + } - public Account getiCoAccount() { - return account; - } + public void setPlugin(Plugin plugin) + { + iConomy = (iConomy)plugin; + } - public double balance() { - return this.account.getBalance(); - } - public boolean set(double amount) { - if(this.account == null) return false; - this.account.setBalance(amount); - return true; - } + public class iCoAccount implements MethodAccount + { + private Account account; - public boolean add(double amount) { - if(this.account == null) return false; - this.account.add(amount); - return true; - } + public iCoAccount(Account account) + { + this.account = account; + } - public boolean subtract(double amount) { - if(this.account == null) return false; - this.account.subtract(amount); - return true; - } + public Account getiCoAccount() + { + return account; + } - public boolean multiply(double amount) { - if(this.account == null) return false; - this.account.multiply(amount); - return true; - } + public double balance() + { + return this.account.getBalance(); + } - public boolean divide(double amount) { - if(this.account == null) return false; - this.account.divide(amount); - return true; - } + public boolean set(double amount) + { + if (this.account == null) + { + return false; + } + this.account.setBalance(amount); + return true; + } - public boolean hasEnough(double amount) { - return this.account.hasEnough(amount); - } + public boolean add(double amount) + { + if (this.account == null) + { + return false; + } + this.account.add(amount); + return true; + } - public boolean hasOver(double amount) { - return this.account.hasOver(amount); - } + public boolean subtract(double amount) + { + if (this.account == null) + { + return false; + } + this.account.subtract(amount); + return true; + } - public boolean hasUnder(double amount) { - return (this.balance() < amount); - } + public boolean multiply(double amount) + { + if (this.account == null) + { + return false; + } + this.account.multiply(amount); + return true; + } - public boolean isNegative() { - return this.account.isNegative(); - } + public boolean divide(double amount) + { + if (this.account == null) + { + return false; + } + this.account.divide(amount); + return true; + } - public boolean remove() { - if(this.account == null) return false; - this.account.remove(); - return true; - } - } + public boolean hasEnough(double amount) + { + return this.account.hasEnough(amount); + } + + public boolean hasOver(double amount) + { + return this.account.hasOver(amount); + } + + public boolean hasUnder(double amount) + { + return (this.balance() < amount); + } + + public boolean isNegative() + { + return this.account.isNegative(); + } + + public boolean remove() + { + if (this.account == null) + { + return false; + } + this.account.remove(); + return true; + } + } } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java index bcd6deb6d..462cb76d5 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java @@ -1,12 +1,12 @@ package com.earth2me.essentials.register.payment.methods; +import com.earth2me.essentials.register.payment.Method; import com.iConomy.iConomy; import com.iConomy.system.Account; import com.iConomy.system.BankAccount; import com.iConomy.system.Holdings; import com.iConomy.util.Constants; -import com.earth2me.essentials.register.payment.Method; import org.bukkit.plugin.Plugin; @@ -37,9 +37,14 @@ public class iCo5 implements Method return "5"; } + public int fractionalDigits() + { + return 2; + } + public String format(double amount) { - return this.iConomy.format(amount); + return com.iConomy.iConomy.format(amount); } public boolean hasBanks() @@ -49,32 +54,34 @@ public class iCo5 implements Method public boolean hasBank(String bank) { - return (hasBanks()) && this.iConomy.Banks.exists(bank); + return (hasBanks()) && com.iConomy.iConomy.Banks.exists(bank); } public boolean hasAccount(String name) { - return this.iConomy.hasAccount(name); + return com.iConomy.iConomy.hasAccount(name); } public boolean hasBankAccount(String bank, String name) { - return (hasBank(bank)) && this.iConomy.getBank(bank).hasAccount(name); + return (hasBank(bank)) && com.iConomy.iConomy.getBank(bank).hasAccount(name); } public MethodAccount getAccount(String name) { - return new iCoAccount(this.iConomy.getAccount(name)); + return new iCoAccount(com.iConomy.iConomy.getAccount(name)); } public MethodBankAccount getBankAccount(String bank, String name) { - return new iCoBankAccount(this.iConomy.getBank(bank).getAccount(name)); + return new iCoBankAccount(com.iConomy.iConomy.getBank(bank).getAccount(name)); } public boolean isCompatible(Plugin plugin) { - return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy; + return plugin.getDescription().getName().equalsIgnoreCase("iconomy") + && plugin.getClass().getName().equals("com.iConomy.iConomy") + && plugin instanceof iConomy; } public void setPlugin(Plugin plugin) diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java index d890bc6df..b74367173 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java @@ -1,14 +1,15 @@ package com.earth2me.essentials.register.payment.methods; +import com.earth2me.essentials.register.payment.Method; import com.iCo6.iConomy; import com.iCo6.system.Account; import com.iCo6.system.Accounts; import com.iCo6.system.Holdings; -import com.earth2me.essentials.register.payment.Method; import org.bukkit.plugin.Plugin; + /** * iConomy 6 Implementation of Method * @@ -16,127 +17,177 @@ import org.bukkit.plugin.Plugin; * @copyright (c) 2011 * @license AOL license */ -public class iCo6 implements Method { - private iConomy iConomy; +public class iCo6 implements Method +{ + private iConomy iConomy; - public iConomy getPlugin() { - return this.iConomy; - } + public iConomy getPlugin() + { + return this.iConomy; + } - public String getName() { - return "iConomy"; - } + public String getName() + { + return "iConomy"; + } - public String getVersion() { - return "6"; - } + public String getVersion() + { + return "6"; + } - public String format(double amount) { - return this.iConomy.format(amount); - } + public int fractionalDigits() + { + return 2; + } - public boolean hasBanks() { - return false; - } + public String format(double amount) + { + return com.iCo6.iConomy.format(amount); + } - public boolean hasBank(String bank) { - return false; - } + public boolean hasBanks() + { + return false; + } - public boolean hasAccount(String name) { - return (new Accounts()).exists(name); - } + public boolean hasBank(String bank) + { + return false; + } - public boolean hasBankAccount(String bank, String name) { - return false; - } + public boolean hasAccount(String name) + { + return (new Accounts()).exists(name); + } - public MethodAccount getAccount(String name) { - return new iCoAccount((new Accounts()).get(name)); - } + public boolean hasBankAccount(String bank, String name) + { + return false; + } - public MethodBankAccount getBankAccount(String bank, String name) { - return null; - } + public MethodAccount getAccount(String name) + { + return new iCoAccount((new Accounts()).get(name)); + } - public boolean isCompatible(Plugin plugin) { - try { Class.forName("com.iCo6.IO"); } - catch(Exception e) { return false; } + public MethodBankAccount getBankAccount(String bank, String name) + { + return null; + } - return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iCo6.iConomy") && plugin instanceof iConomy; - } + public boolean isCompatible(Plugin plugin) + { + return plugin.getDescription().getName().equalsIgnoreCase("iconomy") + && plugin.getClass().getName().equals("com.iCo6.iConomy") + && plugin instanceof iConomy; + } - public void setPlugin(Plugin plugin) { - iConomy = (iConomy)plugin; - } + public void setPlugin(Plugin plugin) + { + iConomy = (iConomy)plugin; + } - public class iCoAccount implements MethodAccount { - private Account account; - private Holdings holdings; - public iCoAccount(Account account) { - this.account = account; - this.holdings = account.getHoldings(); - } + public class iCoAccount implements MethodAccount + { + private Account account; + private Holdings holdings; - public Account getiCoAccount() { - return account; - } + public iCoAccount(Account account) + { + this.account = account; + this.holdings = account.getHoldings(); + } - public double balance() { - return this.holdings.getBalance(); - } + public Account getiCoAccount() + { + return account; + } - public boolean set(double amount) { - if(this.holdings == null) return false; - this.holdings.setBalance(amount); - return true; - } + public double balance() + { + return this.holdings.getBalance(); + } - public boolean add(double amount) { - if(this.holdings == null) return false; - this.holdings.add(amount); - return true; - } + public boolean set(double amount) + { + if (this.holdings == null) + { + return false; + } + this.holdings.setBalance(amount); + return true; + } - public boolean subtract(double amount) { - if(this.holdings == null) return false; - this.holdings.subtract(amount); - return true; - } + public boolean add(double amount) + { + if (this.holdings == null) + { + return false; + } + this.holdings.add(amount); + return true; + } - public boolean multiply(double amount) { - if(this.holdings == null) return false; - this.holdings.multiply(amount); - return true; - } + public boolean subtract(double amount) + { + if (this.holdings == null) + { + return false; + } + this.holdings.subtract(amount); + return true; + } - public boolean divide(double amount) { - if(this.holdings == null) return false; - this.holdings.divide(amount); - return true; - } + public boolean multiply(double amount) + { + if (this.holdings == null) + { + return false; + } + this.holdings.multiply(amount); + return true; + } - public boolean hasEnough(double amount) { - return this.holdings.hasEnough(amount); - } + public boolean divide(double amount) + { + if (this.holdings == null) + { + return false; + } + this.holdings.divide(amount); + return true; + } - public boolean hasOver(double amount) { - return this.holdings.hasOver(amount); - } + public boolean hasEnough(double amount) + { + return this.holdings.hasEnough(amount); + } - public boolean hasUnder(double amount) { - return this.holdings.hasUnder(amount); - } + public boolean hasOver(double amount) + { + return this.holdings.hasOver(amount); + } - public boolean isNegative() { - return this.holdings.isNegative(); - } + public boolean hasUnder(double amount) + { + return this.holdings.hasUnder(amount); + } - public boolean remove() { - if(this.account == null) return false; - this.account.remove(); - return true; - } - } + public boolean isNegative() + { + return this.holdings.isNegative(); + } + + public boolean remove() + { + if (this.account == null) + { + return false; + } + this.account.remove(); + return true; + } + } } From 1d38b728350e3c7b556ef402c339472e83661cd0 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 26 Sep 2011 21:24:12 +0100 Subject: [PATCH 16/18] Fix for GM not checking inheritance for known superperms nodes. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../permissions/BukkitPermissions.java | 25 ++----------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index cded4ceb8..0eac3c14c 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -19,4 +19,5 @@ v 1.1: - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). - manucheckp also outputs superperms results. - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. - - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. \ No newline at end of file + - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. + - Fix for GM not checking inheritance for known superperms nodes. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 1c2aa8fb7..affa72c78 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -16,8 +16,6 @@ package org.anjocaido.groupmanager.permissions; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -28,7 +26,6 @@ import java.util.Set; import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; -import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -134,15 +131,10 @@ public class BukkitPermissions { } // find matching permissions - PermissionCheckResult permissionResult; Boolean value; for (Permission permission : registeredPermissions) { - permissionResult = worldData.getPermissionsHandler().checkFullUserPermission(user, permission.getName()); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) - value = true; - else - value = false; - + value = worldData.getPermissionsHandler().checkUserPermission(user, permission.getName()); + attachment.setPermission(permission, value); } @@ -161,19 +153,6 @@ public class BukkitPermissions { } } player.recalculatePermissions(); - - /* - // List perms for this player - GroupManager.logger.info("Attachment Permissions:"); - for(Map.Entry entry : attachment.getPermissions().entrySet()){ - GroupManager.logger.info(" " + entry.getKey() + " = " + entry.getValue()); - } - - GroupManager.logger.info("Effective Permissions:"); - for(PermissionAttachmentInfo info : player.getEffectivePermissions()){ - GroupManager.logger.info(" " + info.getPermission() + " = " + info.getValue()); - } - */ } public List listPerms(Player player) { From a39a904c8ae8972a970771ef2c0eef7e2bd41d10 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 26 Sep 2011 21:52:32 +0100 Subject: [PATCH 17/18] Optimized getAllPlayersPermissions and fixed pushing unknown perms to superperms. --- EssentialsGroupManager/src/Changelog.txt | 3 +- .../permissions/AnjoPermissionsHandler.java | 71 +++---------------- 2 files changed, 13 insertions(+), 61 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 0eac3c14c..ee7c77a23 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -20,4 +20,5 @@ v 1.1: - manucheckp also outputs superperms results. - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. - - Fix for GM not checking inheritance for known superperms nodes. \ No newline at end of file + - Fix for GM not checking inheritance for known superperms nodes. + - Optimized getAllPlayersPermissions and fixed pushing unknown perms to superperms. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 5830f0c88..cb9fdf628 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -81,73 +81,24 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns All permissions (including inheritance) of player name. + * Returns All permissions (including inheritance and sub groups) for the player. + * * @param userName * @return */ @Override public List getAllPlayersPermissions(String userName) { - User user = ph.getUser(userName); - List playerPermArray = new ArrayList(user.getPermissionList()); - List playerMainGroupPermArray = new ArrayList(user.getGroup().getPermissionList()); - List subGroupsPermArray = new ArrayList(); - List returnPermArray = new ArrayList(); + List playerPermArray = new ArrayList(ph.getUser(userName).getPermissionList()); - for (String subGroup : user.subGroupListStringCopy()) { - subGroupsPermArray.addAll(ph.getGroup(subGroup).getPermissionList()); + for (String group : getGroups(userName)) { + for (String perm : ph.getGroup(group).getPermissionList()) { + if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-"+perm))) + playerPermArray.add(perm); + } } - - for (String permission : subGroupsPermArray) { - /* - * Add each Negated permission - * unless it's being overridden by a higher permission - */ - if (permission.startsWith("-") - && !playerMainGroupPermArray.contains(permission.substring(1)) - && !playerPermArray.contains(permission.substring(1)) - && !playerMainGroupPermArray.contains("*") - && !playerPermArray.contains("*")) { - if (!returnPermArray.contains(permission)) { - returnPermArray.add(permission); - } - } else - if (!returnPermArray.contains(permission) - && !playerMainGroupPermArray.contains("-"+permission) - && !playerPermArray.contains("-"+permission)) { - returnPermArray.add(permission); - } - } - - for (String permission : playerMainGroupPermArray) { - /* - * Add each Negated permission - * unless it's being overridden by a higher permission - */ - if (permission.startsWith("-") - && !playerPermArray.contains(permission.substring(1)) - && !playerMainGroupPermArray.contains("*") - && !playerPermArray.contains("*")) { - if (!returnPermArray.contains(permission)) { - returnPermArray.add(permission); - } - } else - if (!returnPermArray.contains(permission) - && !playerPermArray.contains("-"+permission)) { - returnPermArray.add(permission); - } - } - - for (String permission : playerPermArray) { - /* - * Add each permission - */ - if (!returnPermArray.contains(permission)) { - returnPermArray.add(permission); - } - } - - return returnPermArray; + + return playerPermArray; } /** @@ -159,7 +110,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { * And verify the player 'MyAdmin', which is Admin, it will return true for both * Admin or Moderator groups. * - * Mas if you haave a player 'MyModerator', which is Moderator, + * Mas if you have a player 'MyModerator', which is Moderator, * it will give false if you pass Admin in group parameter. * * @param name From 0dd5134f5a6046a1f4ef0dbce6d950abb33ab9f5 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Mon, 26 Sep 2011 22:37:14 +0100 Subject: [PATCH 18/18] BanIP fixed, work around for isBanned. --- .../com/earth2me/essentials/EssentialsPlayerListener.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 9ba02b5c3..2c93bb402 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -307,6 +307,7 @@ public class EssentialsPlayerListener extends PlayerListener { if (event.getResult() != Result.ALLOWED && event.getResult() != Result.KICK_FULL && event.getResult() != Result.KICK_BANNED) { + LOGGER.log(Level.INFO, "Disconnecting user " + event.getPlayer().toString() + " due to " + event.getResult().toString()); return; } User user = ess.getUser(event.getPlayer()); @@ -316,11 +317,12 @@ public class EssentialsPlayerListener extends PlayerListener user.checkBanTimeout(currentTime); user.checkMuteTimeout(currentTime); user.checkJailTimeout(currentTime); - - if (user.isBanned()) + + if (user.isBanned() || event.getResult() == Result.KICK_BANNED) { final String banReason = user.getBanReason(); - event.disallow(Result.KICK_BANNED, banReason != null && !banReason.isEmpty() ? banReason : Util.i18n("defaultBanReason")); + LOGGER.log(Level.INFO, "Banned for '" + banReason + "'"); + event.disallow(Result.KICK_BANNED, banReason != null && !banReason.isEmpty() && !banReason.equalsIgnoreCase("ban") ? banReason : Util.i18n("defaultBanReason")); return; }