summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2012-01-25 01:20:44 +0000
committerElgarL <ElgarL@palmergames.com>2012-01-25 01:20:44 +0000
commite1660d47ba416d107c573d819942191a9c80bd30 (patch)
treeb8074651211c98d1dc07538b30fc638da581784e /EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions
parentf40f5f880b5e3c0cc4c80662ae572827d8e77f91 (diff)
downloadEssentials-e1660d47ba416d107c573d819942191a9c80bd30.tar
Essentials-e1660d47ba416d107c573d819942191a9c80bd30.tar.gz
Essentials-e1660d47ba416d107c573d819942191a9c80bd30.tar.lz
Essentials-e1660d47ba416d107c573d819942191a9c80bd30.tar.xz
Essentials-e1660d47ba416d107c573d819942191a9c80bd30.zip
Fix trying to modify an unmodifiable collection breaking superperms.
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions')
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java61
1 files changed, 31 insertions, 30 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
index e326ff624..de42ce9c3 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
@@ -153,41 +153,42 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
// Allow * node to populate ALL perms in Bukkit.
if (perms.contains("*")) {
permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren));
- perms.remove("*");
}
for (String perm : perms) {
- boolean negated = false;
- if (perm.startsWith("-"))
- negated = true;
-
- if (!permArray.contains(perm)) {
- permArray.add(perm);
+ if (!perm.equalsIgnoreCase("*")) {
+ boolean negated = false;
+ if (perm.startsWith("-"))
+ negated = true;
- if ((negated) && (permArray.contains(perm.substring(1))))
- permArray.remove(perm.substring(1));
-
- if (includeChildren) {
-
- Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet<String>());
-
- if (children != null) {
- if (negated) {
-
- // Remove children of negated nodes
- for (String child : children.keySet())
- if (children.get(child))
- if (permArray.contains(child))
- permArray.remove(child);
-
- } else {
-
- // Add child nodes
- for (String child : children.keySet())
- if (children.get(child))
- if ((!permArray.contains(child)) && (!permArray.contains("-" + child)))
- permArray.add(child);
+ if (!permArray.contains(perm)) {
+ permArray.add(perm);
+
+ if ((negated) && (permArray.contains(perm.substring(1))))
+ permArray.remove(perm.substring(1));
+
+ if (includeChildren) {
+
+ Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet<String>());
+
+ if (children != null) {
+ if (negated) {
+
+ // Remove children of negated nodes
+ for (String child : children.keySet())
+ if (children.get(child))
+ if (permArray.contains(child))
+ permArray.remove(child);
+
+ } else {
+
+ // Add child nodes
+ for (String child : children.keySet())
+ if (children.get(child))
+ if ((!permArray.contains(child)) && (!permArray.contains("-" + child)))
+ permArray.add(child);
+ }
}
}
}