From 8dc79c2d373d3cd73a9e0359362d6ed1589280d6 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:00:11 +0300 Subject: [PATCH 1/7] add recursive permission adding/removing also other minor fixes --- .../anjocaido/groupmanager/GroupManager.java | 343 +++++++++--------- 1 file changed, 178 insertions(+), 165 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index c43c97b01..d354b05e7 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -403,7 +403,7 @@ public class GroupManager extends JavaPlugin { senderPlayer = (Player) sender; if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) { - sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check the log" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); + sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check plugins/groupmanager/error.log or console" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); return true; } @@ -414,10 +414,10 @@ public class GroupManager extends JavaPlugin { if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) { playerCanDo = true; } - } else if ((sender instanceof ConsoleCommandSender) || (sender instanceof RemoteConsoleCommandSender) || (sender instanceof BlockCommandSender)) { + } else { if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) { - sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check the log" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); + sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check plugins/groupmanager/error.log or console" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); return true; } @@ -715,17 +715,11 @@ public class GroupManager extends JavaPlugin { return true; } // Validating arguments - if (args.length != 2) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manuaddp )"); + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manuaddp [permission2] [permission3]...)"); return true; } - auxString = args[1]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { return false; } @@ -735,55 +729,37 @@ public class GroupManager extends JavaPlugin { } else { auxUser = dataHolder.getUser(args[0]); } + // Validating your permissions if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { sender.sendMessage(ChatColor.RED + "Can't modify player with same group than you, or higher."); return true; } - permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { - sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have."); - return true; + + for (int i = 1; i < args.length; i++) + { + auxString = args[i]; + if (auxString.startsWith("'") && auxString.endsWith("'")) + { + auxString = auxString.substring(1, auxString.length() - 1); + } + + permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have: '" + auxString + "'"); + continue; + } + // Validating permissions of user + permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, auxString); + if (checkPermissionExists(sender, auxString, permissionResult, "user")) + { + continue; + } + // Seems Ok + auxUser.addPermission(auxString); + sender.sendMessage(ChatColor.YELLOW + "You added '" + auxString + "' to player '" + auxUser.getName() + "' permissions."); } - // Validating permissions of user - permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, args[1]); - if (auxString.startsWith("+")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - sender.sendMessage(ChatColor.RED + "The user already has direct access to that permission."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } - } else if (auxString.startsWith("-")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - sender.sendMessage(ChatColor.RED + "The user already has an exception for this node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { - sender.sendMessage(ChatColor.RED + "The user already has a matching node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } - } else { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - // Warn only while still allowing you to add the node. - sender.sendMessage(ChatColor.RED + "The user already has an exception for this node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) { - sender.sendMessage(ChatColor.RED + "The user already has direct access to that permission."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - if (permissionResult.accessLevel.equalsIgnoreCase(args[1])) - { - return true; - } - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { - // Warn only while still allowing you to add the node. - sender.sendMessage(ChatColor.RED + "The user already has a matching Negated node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - } - } - // Seems OK - auxUser.addPermission(auxString); - sender.sendMessage(ChatColor.YELLOW + "You added '" + auxString + "' to player '" + auxUser.getName() + "' permissions."); + targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) @@ -798,17 +774,11 @@ public class GroupManager extends JavaPlugin { return true; } // Validating arguments - if (args.length != 2) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelp )"); + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelp [permission2] [permission3]...)"); return true; } - auxString = args[1]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { return false; } @@ -818,30 +788,40 @@ public class GroupManager extends JavaPlugin { } else { auxUser = dataHolder.getUser(args[0]); } - // Validating your permissions - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { - sender.sendMessage(ChatColor.RED + "You can't modify a player with same group as you, or higher."); - return true; - } - permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { - sender.sendMessage(ChatColor.RED + "You can't remove a permission you don't have."); - return true; - } - // Validating permissions of user - permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, auxString); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { - sender.sendMessage(ChatColor.RED + "The user doesn't have direct access to that permission."); - return true; - } - if (!auxUser.hasSamePermissionNode(auxString)) { - sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); - sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); - return true; + + for (int i = 1; i < args.length; i++) + { + auxString = args[i]; + if (auxString.startsWith("'") && auxString.endsWith("'")) + { + auxString = auxString.substring(1, auxString.length() - 1); + } + + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + sender.sendMessage(ChatColor.RED + "You can't modify a player with same group as you, or higher."); + continue; + } + // Validating your permissions + permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + sender.sendMessage(ChatColor.RED + "You can't remove a permission you don't have: '" + auxString + "'"); + continue; + } + // Validating permissions of user + permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, auxString); + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + sender.sendMessage(ChatColor.RED + "The user doesn't have direct access to that permission: '" + auxString + "'"); + continue; + } + if (!auxUser.hasSamePermissionNode(auxString)) { + sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); + sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); + continue; + } + auxUser.removePermission(auxString); + sender.sendMessage(ChatColor.YELLOW + "You removed '" + auxString + "' from player '" + auxUser.getName() + "' permissions."); } // Seems OK - auxUser.removePermission(auxString); - sender.sendMessage(ChatColor.YELLOW + "You removed '" + auxString + "' from player '" + auxUser.getName() + "' permissions."); targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) @@ -1026,68 +1006,41 @@ public class GroupManager extends JavaPlugin { return true; } // Validating arguments - if (args.length != 2) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangaaddp )"); + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangaaddp [permission2] [permission3]...)"); return true; } - auxString = args[1]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } - auxGroup = dataHolder.getGroup(args[0]); if (auxGroup == null) { sender.sendMessage(ChatColor.RED + "'" + args[0] + "' Group doesnt exist!"); return false; } - // Validating your permissions - permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { - sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have."); - return true; + + for (int i = 1; i < args.length; i++) + { + auxString = args[i]; + if (auxString.startsWith("'") && auxString.endsWith("'")) + { + auxString = auxString.substring(1, auxString.length() - 1); + } + + // Validating your permissions + permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have: '" + auxString + "'"); + continue; + } + // Validating permissions of user + permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, auxString); + if (checkPermissionExists(sender, auxString, permissionResult, "group")) + { + continue; + } + // Seems OK + auxGroup.addPermission(auxString); + sender.sendMessage(ChatColor.YELLOW + "You added '" + auxString + "' to group '" + auxGroup.getName() + "' permissions."); } - // Validating permissions of user - permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, args[1]); - if (auxString.startsWith("+")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - sender.sendMessage(ChatColor.RED + "The group already has direct access to that permission."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } - } else if (auxString.startsWith("-")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - sender.sendMessage(ChatColor.RED + "The group already has an exception for this node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { - sender.sendMessage(ChatColor.RED + "The group already has a matching node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - return true; - } - } else { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { - // Warn only while still allowing you to add the node. - sender.sendMessage(ChatColor.RED + "The group already has an exception for this node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) { - sender.sendMessage(ChatColor.RED + "The group already has direct access to that permission."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - // Abort adding if the node is a direct match. - if (permissionResult.accessLevel.equalsIgnoreCase(args[1])) - { - return true; - } - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { - // Warn only while still allowing you to add the node. - sender.sendMessage(ChatColor.RED + "The group already has a matching Negated node."); - sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); - } - } - // Seems OK - auxGroup.addPermission(auxString); - sender.sendMessage(ChatColor.YELLOW + "You added '" + auxString + "' to group '" + auxGroup.getName() + "' permissions."); BukkitPermissions.updateAllPlayers(); @@ -1100,42 +1053,45 @@ public class GroupManager extends JavaPlugin { return true; } // Validating arguments - if (args.length != 2) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangdelp )"); + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangdelp [permission2] [permission3]...)"); return true; } - auxString = args[1]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } - auxGroup = dataHolder.getGroup(args[0]); if (auxGroup == null) { sender.sendMessage(ChatColor.RED + "'" + args[0] + "' Group doesnt exist!"); return true; } - // Validating your permissions - permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { - sender.sendMessage(ChatColor.RED + "Can't remove a permission you don't have."); - return true; + for (int i = 1; i < args.length; i++) + { + auxString = args[i]; + if (auxString.startsWith("'") && auxString.endsWith("'")) + { + auxString = auxString.substring(1, auxString.length() - 1); + } + + // Validating your permissions + permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + sender.sendMessage(ChatColor.RED + "Can't remove a permission you don't have: '" + auxString + "'"); + continue; + } + // Validating permissions of user + permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, auxString); + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + sender.sendMessage(ChatColor.YELLOW + "The group doesn't have direct access to that permission: '" + auxString + "'"); + continue; + } + if (!auxGroup.hasSamePermissionNode(auxString)) { + sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); + sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); + continue; + } + // Seems OK + auxGroup.removePermission(auxString); + sender.sendMessage(ChatColor.YELLOW + "You removed '" + auxString + "' from group '" + auxGroup.getName() + "' permissions."); } - // Validating permissions of user - permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, auxString); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { - sender.sendMessage(ChatColor.YELLOW + "The group doesn't have direct access to that permission."); - return true; - } - if (!auxGroup.hasSamePermissionNode(auxString)) { - sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); - sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); - return true; - } - // Seems OK - auxGroup.removePermission(auxString); - sender.sendMessage(ChatColor.YELLOW + "You removed '" + auxString + "' from group '" + auxGroup.getName() + "' permissions."); BukkitPermissions.updateAllPlayers(); @@ -1836,7 +1792,7 @@ public class GroupManager extends JavaPlugin { if (args.length > 0) { if (!lastError.isEmpty()) { - sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check the log" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); + sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. " + ChatColor.BOLD + "" + ChatColor.UNDERLINE + "Check plugins/groupmanager/error.log or console" + ChatColor.RESET + "" + ChatColor.RED + " and then try a '/manload'."); return true; } @@ -2139,6 +2095,63 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "You are not allowed to use that command."); return true; } + + /** + * Checks if a permission exists and of a lower priority. + */ + private boolean checkPermissionExists(CommandSender sender, String newPerm, PermissionCheckResult oldPerm, String type) { + + + if (newPerm.startsWith("+")) + { + if (oldPerm.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has direct access to that permission."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + return true; + } + } + else if (newPerm.startsWith("-")) + { + if (oldPerm.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has an exception for this node."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + return true; + } + else if (oldPerm.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has a matching negated node."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + return true; + } + } + else + { + if (oldPerm.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has an exception for this node."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + return true; + } + else if (oldPerm.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has a matching negated node."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + return true; + } + else if (oldPerm.resultType.equals(PermissionCheckResult.Type.FOUND)) + { + sender.sendMessage(ChatColor.RED + "The " + type + " already has direct access to that permission."); + sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); + + // Since not all plugins define wildcard permissions, allow setting the permission anyway if the permissions dont match exactly. + return (oldPerm.accessLevel.equalsIgnoreCase(newPerm)); + } + } + return false; + } + /** * Sets up the default world for use. From 9e7320ad16f3b328d692275efcfe83d0a18d7424 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:00:43 +0300 Subject: [PATCH 2/7] Update plugin.yml --- EssentialsGroupManager/src/plugin.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/EssentialsGroupManager/src/plugin.yml b/EssentialsGroupManager/src/plugin.yml index c3443f3bd..9e4e4e910 100644 --- a/EssentialsGroupManager/src/plugin.yml +++ b/EssentialsGroupManager/src/plugin.yml @@ -34,11 +34,11 @@ commands: permissions: groupmanager.mangdel manuaddp: description: Add permissions directly to the player. - usage: / + usage: / [permission2] [permission3].. permissions: groupmanager.manuaddp manudelp: description: Removes permissions directly from the player. - usage: / + usage: / [permission2] [permission3].. permissions: groupmanager.manudelp manuclearp: description: Removes all permissions of a player. @@ -54,11 +54,11 @@ commands: permissions: groupmanager.manucheckp mangaddp: description: Add permissions to a group. - usage: / + usage: / [permission2] [permission3].. permissions: groupmanager.mangaddp mangdelp: description: Removes permissions from a group. - usage: / + usage: / [permission2] [permission3].. permissions: groupmanager.mangdelp mangclearp: description: Removes all permissions of a group. From 5fdac7588ed9b6a27b203392829dad2fc0229267 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:01:39 +0300 Subject: [PATCH 3/7] Update Changelog.txt --- EssentialsGroupManager/src/Changelog.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 885aff9ca..fcdd930f0 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -212,7 +212,7 @@ v 2.0: - Add support for BukkitForge using 'overworld' as the main world name. - Prevent '*' permissions granting the 'groupmanager.noofflineperms' permission. - Added '/mancheckw ' to inspect which permission files a world is referencing. - - Add config potion to set if GM commands should be allowed on CommnandBlocks. + - Add config potion to set if GM commands should be allowed on CommnandBlocks. - Catch the error when using an out of date config for 'allow_commandblocks' So it doesn't kill the whole config. - '/manselect' will no longer list duplicate worlds. - Added a new mirroring option in the config of 'all_unnamed_worlds'. This will cause all new or unnamed worlds to use this mirroring. @@ -220,4 +220,5 @@ v 2.0: - Warn when adding a node where an exception already exist. - Only prevent adding nodes with '/manuaddp' and '/mangaddp' if they are exact matches (not wildcards). - Store worldSelection indexed on the senders name rather than the object (fixes commandblocks using manselect). - - Check subgroup permissions with an equal priority so no one subgroup is higher ranked than another. \ No newline at end of file + - Check subgroup permissions with an equal priority so no one subgroup is higher ranked than another. + - add recursive permission adding/deleting From 6ea835e96feba8eeca929b72510b2be6be02302a Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:25:41 +0300 Subject: [PATCH 4/7] change ' strip checks --- .../anjocaido/groupmanager/GroupManager.java | 41 ++++--------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index d354b05e7..4746ac548 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -738,11 +738,7 @@ public class GroupManager extends JavaPlugin { for (int i = 1; i < args.length; i++) { - auxString = args[i]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = args[i].replace("'", ""); permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { @@ -791,11 +787,7 @@ public class GroupManager extends JavaPlugin { for (int i = 1; i < args.length; i++) { - auxString = args[i]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = args[i].replace("'", ""); if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { sender.sendMessage(ChatColor.RED + "You can't modify a player with same group as you, or higher."); @@ -950,11 +942,7 @@ public class GroupManager extends JavaPlugin { return true; } - auxString = args[1]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = args[1].replace("'", ""); if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { return false; @@ -1019,11 +1007,7 @@ public class GroupManager extends JavaPlugin { for (int i = 1; i < args.length; i++) { - auxString = args[i]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = args[i].replace("'", ""); // Validating your permissions permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); @@ -1065,11 +1049,7 @@ public class GroupManager extends JavaPlugin { } for (int i = 1; i < args.length; i++) { - auxString = args[i]; - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = args[i].replace("'", ""); // Validating your permissions permissionResult = permissionHandler.checkFullUserPermission(senderUser, auxString); @@ -1333,10 +1313,7 @@ public class GroupManager extends JavaPlugin { auxString += " "; } } - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + auxString = auxString.replace("'", ""); auxUser.getVariables().addVar(args[1], Variables.parseVariableValue(auxString)); sender.sendMessage(ChatColor.YELLOW + "Variable " + ChatColor.GOLD + args[1] + ChatColor.YELLOW + ":'" + ChatColor.GREEN + auxString + ChatColor.YELLOW + "' added to the user " + auxUser.getName()); @@ -1485,10 +1462,8 @@ public class GroupManager extends JavaPlugin { auxString += " "; } } - if (auxString.startsWith("'") && auxString.endsWith("'")) - { - auxString = auxString.substring(1, auxString.length() - 1); - } + + auxString = auxString.replace("'", ""); auxGroup.getVariables().addVar(args[1], Variables.parseVariableValue(auxString)); sender.sendMessage(ChatColor.YELLOW + "Variable " + ChatColor.GOLD + args[1] + ChatColor.YELLOW + ":'" + ChatColor.GREEN + auxString + ChatColor.YELLOW + "' added to the group " + auxGroup.getName()); From c902155d6e736b52f8b119c73b7b3e5e0132bd53 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:30:03 +0300 Subject: [PATCH 5/7] change checkPermissionExists to how Elgarl wants it --- .../src/org/anjocaido/groupmanager/GroupManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 4746ac548..ab21a7358 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -2107,13 +2107,13 @@ public class GroupManager extends JavaPlugin { { sender.sendMessage(ChatColor.RED + "The " + type + " already has an exception for this node."); sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); - return true; + return false; } else if (oldPerm.resultType.equals(PermissionCheckResult.Type.NEGATION)) { sender.sendMessage(ChatColor.RED + "The " + type + " already has a matching negated node."); sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); - return true; + return false; } else if (oldPerm.resultType.equals(PermissionCheckResult.Type.FOUND)) { From 981d6203497d0a867a6a9ca462b094776885ed20 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:34:55 +0300 Subject: [PATCH 6/7] fix javadoc --- .../src/org/anjocaido/groupmanager/GroupManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index ab21a7358..c701bbdc0 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -2072,7 +2072,7 @@ public class GroupManager extends JavaPlugin { } /** - * Checks if a permission exists and of a lower priority. + * Checks if a permission exists and of a lower or same priority. */ private boolean checkPermissionExists(CommandSender sender, String newPerm, PermissionCheckResult oldPerm, String type) { From 27d88a6c564a01602e190e713437426f2fd06341 Mon Sep 17 00:00:00 2001 From: Necrodoom Date: Fri, 14 Jun 2013 10:38:54 +0300 Subject: [PATCH 7/7] remove excess return false lines since elgarl doesnt like them --- .../src/org/anjocaido/groupmanager/GroupManager.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index c701bbdc0..1779550d9 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -2107,13 +2107,11 @@ public class GroupManager extends JavaPlugin { { sender.sendMessage(ChatColor.RED + "The " + type + " already has an exception for this node."); sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); - return false; } else if (oldPerm.resultType.equals(PermissionCheckResult.Type.NEGATION)) { sender.sendMessage(ChatColor.RED + "The " + type + " already has a matching negated node."); sender.sendMessage(ChatColor.RED + "Node: " + oldPerm.accessLevel); - return false; } else if (oldPerm.resultType.equals(PermissionCheckResult.Type.FOUND)) {