From fd936c582a4bd82773fa644164e11c00fb8ea2ba Mon Sep 17 00:00:00 2001 From: ElgarL Date: Fri, 28 Oct 2011 18:43:29 +0100 Subject: Fixed GM to recognize Superperm child nodes. If you add a node like Towny.admin GM will now correctly report on all child nodes. --- .../permissions/BukkitPermissions.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 6a5968c22..9bc38f933 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -150,8 +150,19 @@ public class BukkitPermissions { value = true; } - if (value == true) + if (value == true){ + // Set the root permission attachment.setPermission(permission, value); + // fetch and set all children of this permission node + Map children = permission.getChildren(); + if (children != null) { + for (String child : children.keySet()) { + if (children.get(child)) + attachment.setPermission(child, true); + } + } + + } } // Add any missing permissions for this player (non bukkit plugins) @@ -171,6 +182,22 @@ public class BukkitPermissions { player.recalculatePermissions(); } + /** + * Returns a map of the child permissions as defined by the supplying plugin + * null is empty + * + * @param node + * @return + */ + public Map getChildren(String node) { + for (Permission permission : registeredPermissions) { + if (permission.getName() == node) { + return permission.getChildren(); + } + } + return null; + } + public List listPerms(Player player) { List perms = new ArrayList(); -- cgit v1.2.3