diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 232a35e1a..7f143a779 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -15,4 +15,6 @@ v 1.1: - Reverted WorldHolder static change to maintain backward plugin compatibility. - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). - Fix for null in PLAYER_TELEPORT for bukkit perms. - - Fixed wasteful updating of perms on a manload. \ No newline at end of file + - Fixed wasteful updating of perms on a manload. + - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). + - manucheckp also outputs superperms results. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 52b67c57c..2b0a493d4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -637,16 +637,18 @@ public class GroupManager extends JavaPlugin { return true; } //VALIDANDO ARGUMENTOS - if (args.length != 1) { - sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); + if ((args.length == 0) || (args.length > 2)) { + sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ (+))"); return false; } + if (validateOnlinePlayer) { match = this.getServer().matchPlayer(args[0]); if (match.size() != 1) { sender.sendMessage(ChatColor.RED + "Player not found!"); return false; - } + } else + targetPlayer = this.getServer().getPlayer(match.get(0).getName()); } if (match != null) { auxUser = dataHolder.getUser(match.get(0).getName()); @@ -683,6 +685,18 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.YELLOW + "And all permissions from subgroups: " + auxString); } } + + //bukkit perms + if ((args.length == 2) && (args[1].equalsIgnoreCase("+"))) { + if (targetPlayer != null) { + sender.sendMessage(ChatColor.YELLOW + "Superperms reports: "); + for(String line: BukkitPermissions.listPerms(targetPlayer)) + sender.sendMessage(ChatColor.YELLOW + line); + + } + } + + return true; case manucheckp: //VALIDANDO ESTADO DO SENDER @@ -695,12 +709,14 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } + if (validateOnlinePlayer) { match = this.getServer().matchPlayer(args[0]); if (match.size() != 1) { sender.sendMessage(ChatColor.RED + "Player not found!"); return false; - } + } else + targetPlayer = this.getServer().getPlayer(match.get(0).getName()); } if (match != null) { auxUser = dataHolder.getUser(match.get(0).getName()); @@ -730,6 +746,13 @@ public class GroupManager extends JavaPlugin { } sender.sendMessage(ChatColor.YELLOW + "Permission Node: " + permissionResult.accessLevel); } + + // superperms + if (targetPlayer != null) { + sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1])); + } + + return true; case mangaddp: //VALIDANDO ESTADO DO SENDER @@ -1442,6 +1465,9 @@ public class GroupManager extends JavaPlugin { } //WORKING config.load(); + + isLoaded = false; + if (args.length > 0) { auxString = ""; for (int i = 0; i < args.length; i++) { @@ -1458,6 +1484,8 @@ public class GroupManager extends JavaPlugin { } worldsHolder.mirrorSetUp(); + isLoaded = true; + BukkitPermissions.updateAllPlayers(); return true; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index cf3edafc0..5a39bd9a8 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -43,6 +43,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.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -106,7 +107,7 @@ public class BukkitPermissions { } public void updatePermissions(Player player, String world) { - if (player == null || !this.plugin.isEnabled()) { + if (player == null || !GroupManager.isLoaded) { return; } @@ -172,6 +173,28 @@ public class BukkitPermissions { } */ } + + public List listPerms(Player player) { + List perms = new ArrayList(); + + /* + // All permissions registered with Bukkit for this player + PermissionAttachment attachment = this.attachments.get(player); + + // List perms for this player + perms.add("Attachment Permissions:"); + for(Map.Entry entry : attachment.getPermissions().entrySet()){ + perms.add(" " + entry.getKey() + " = " + entry.getValue()); + } + */ + + perms.add("Effective Permissions:"); + for(PermissionAttachmentInfo info : player.getEffectivePermissions()){ + if (info.getValue() == true) + perms.add(" " + info.getPermission() + " = " + info.getValue()); + } + return perms; + } public void updateAllPlayers() { for (Player player : Bukkit.getServer().getOnlinePlayers()) {