summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2013-06-14 00:39:58 -0700
committerElgarL <ElgarL@palmergames.com>2013-06-14 00:39:58 -0700
commit0041492f425ecac09807211549c8e5a5fe7de4ad (patch)
treed11fc9f214169ba6cdcf91eccd319c7a160c4307
parent4da70254ff8295c7bfb4f5c9d573edb881ccc134 (diff)
parent27d88a6c564a01602e190e713437426f2fd06341 (diff)
downloadEssentials-0041492f425ecac09807211549c8e5a5fe7de4ad.tar
Essentials-0041492f425ecac09807211549c8e5a5fe7de4ad.tar.gz
Essentials-0041492f425ecac09807211549c8e5a5fe7de4ad.tar.lz
Essentials-0041492f425ecac09807211549c8e5a5fe7de4ad.tar.xz
Essentials-0041492f425ecac09807211549c8e5a5fe7de4ad.zip
Merge pull request #487 from necrodoom/patch-20
add recursive permission adding/removing
-rw-r--r--EssentialsGroupManager/src/Changelog.txt5
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java334
-rw-r--r--EssentialsGroupManager/src/plugin.yml8
3 files changed, 167 insertions, 180 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 <world>' 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
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
index c43c97b01..1779550d9 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 <player> <permission>)");
+ if (args.length < 2) {
+ sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manuaddp <player> <permission> [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,33 @@ 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;
- }
- // 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;
+
+ for (int i = 1; i < args.length; i++)
+ {
+ auxString = args[i].replace("'", "");
+
+ 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;
}
- } 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);
+ // 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.");
}
- // 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 +770,11 @@ public class GroupManager extends JavaPlugin {
return true;
}
// Validating arguments
- if (args.length != 2) {
- sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelp <player> <permission>)");
+ if (args.length < 2) {
+ sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelp <player> <permission> [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 +784,36 @@ 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].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.");
+ 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)
@@ -970,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;
@@ -1026,68 +994,37 @@ public class GroupManager extends JavaPlugin {
return true;
}
// Validating arguments
- if (args.length != 2) {
- sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangaaddp <group> <permission>)");
+ if (args.length < 2) {
+ sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangaaddp <group> <permission> [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;
- }
- // 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;
+
+ for (int i = 1; i < args.length; i++)
+ {
+ auxString = args[i].replace("'", "");
+
+ // 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;
}
- } 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);
+ // 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.");
}
- // Seems OK
- auxGroup.addPermission(auxString);
- sender.sendMessage(ChatColor.YELLOW + "You added '" + auxString + "' to group '" + auxGroup.getName() + "' permissions.");
BukkitPermissions.updateAllPlayers();
@@ -1100,42 +1037,41 @@ public class GroupManager extends JavaPlugin {
return true;
}
// Validating arguments
- if (args.length != 2) {
- sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangdelp <group> <permission>)");
+ if (args.length < 2) {
+ sender.sendMessage(ChatColor.RED + "Review your arguments count! (/mangdelp <group> <permission> [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;
- }
- // 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;
+ for (int i = 1; i < args.length; i++)
+ {
+ auxString = args[i].replace("'", "");
+
+ // 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.");
}
- // Seems OK
- auxGroup.removePermission(auxString);
- sender.sendMessage(ChatColor.YELLOW + "You removed '" + auxString + "' from group '" + auxGroup.getName() + "' permissions.");
BukkitPermissions.updateAllPlayers();
@@ -1377,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());
@@ -1529,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());
@@ -1836,7 +1767,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 +2070,61 @@ 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 or same 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);
+ }
+ 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);
+ }
+ 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.
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: /<command> <player> <permissions>
+ usage: /<command> <player> <permission> [permission2] [permission3]..
permissions: groupmanager.manuaddp
manudelp:
description: Removes permissions directly from the player.
- usage: /<command> <player> <permissions>
+ usage: /<command> <player> <permission> [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: /<command> <group> <permissions>
+ usage: /<command> <group> <permission> [permission2] [permission3]..
permissions: groupmanager.mangaddp
mangdelp:
description: Removes permissions from a group.
- usage: /<command> <group> <permissions>
+ usage: /<command> <group> <permission> [permission2] [permission3]..
permissions: groupmanager.mangdelp
mangclearp:
description: Removes all permissions of a group.