mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-17 20:11:21 +02:00
Merge pull request #487 from necrodoom/patch-20
add recursive permission adding/removing
This commit is contained in:
@@ -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.
|
||||
- Check subgroup permissions with an equal priority so no one subgroup is higher ranked than another.
|
||||
- add recursive permission adding/deleting
|
||||
|
@@ -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;
|
||||
|
||||
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;
|
||||
}
|
||||
// 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 +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;
|
||||
|
||||
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;
|
||||
}
|
||||
// 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 +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;
|
||||
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.");
|
||||
}
|
||||
// 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();
|
||||
|
||||
@@ -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.
|
||||
|
@@ -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.
|
||||
|
Reference in New Issue
Block a user