From 96be35a4d22ecf8e25414b5101a395474a80d3ba Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 19 Sep 2011 22:51:07 +0100 Subject: - Push updates to superperms for all valid GM commands. --- .../permissions/BukkitPermissions.java | 34 ++++++++++------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index fe381c127..c88f48d6c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -18,12 +18,13 @@ package org.anjocaido.groupmanager.permissions; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.data.User; +import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; +import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -40,6 +41,7 @@ import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.ServerListener; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -114,9 +116,10 @@ public class BukkitPermissions { } PermissionAttachment attachment = this.attachments.get(player); + + OverloadedWorldHolder worldData = GroupManager.getWorldsHolder().getWorldData(world); - User user = GroupManager.getWorldsHolder().getWorldData(world).getUser(player.getName()); - List permissions = user.getGroup().getPermissionList(); + User user = worldData.getUser(player.getName()); // clear permissions for (String permission : attachment.getPermissions().keySet()) { @@ -125,24 +128,19 @@ public class BukkitPermissions { // find matching permissions for (Permission permission : registeredPermissions) { - boolean permissionValue = user.getGroup().hasSamePermissionNode(permission.getName()); - attachment.setPermission(permission, permissionValue); - } - - // all permissions - for (String permission : permissions) { - Boolean value = true; - if (permission.startsWith("-")) { - permission = permission.substring(1); // cut off - + PermissionCheckResult permissionResult = worldData.getPermissionsHandler().checkFullUserPermission(user, permission.getName()); + Boolean value = false; + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { value = false; - } - - if (!attachment.getPermissions().containsKey(permission)) { - attachment.setPermission(permission, value); - } - } + } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) + value = true; + + + attachment.setPermission(permission, value); + } player.recalculatePermissions(); + /* // List perms for this player GroupManager.logger.info("Attachment Permissions:"); -- cgit v1.2.3