summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido
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
commitd7bc467ee30c6f5d184965f5930bf0a0e36c6f72 (patch)
tree663b971f9a75531ca3e2da479ddb665244abdd22 /EssentialsGroupManager/src/org/anjocaido
parent8ba637a50a8934c1c8b50507b550b62047d923d1 (diff)
downloadEssentials-d7bc467ee30c6f5d184965f5930bf0a0e36c6f72.tar
Essentials-d7bc467ee30c6f5d184965f5930bf0a0e36c6f72.tar.gz
Essentials-d7bc467ee30c6f5d184965f5930bf0a0e36c6f72.tar.lz
Essentials-d7bc467ee30c6f5d184965f5930bf0a0e36c6f72.tar.xz
Essentials-d7bc467ee30c6f5d184965f5930bf0a0e36c6f72.zip
Fix trying to modify an unmodifiable collection breaking superperms.
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido')
-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);
+ }
}
}
}