diff options
author | ElgarL <ElgarL@palmergames.com> | 2011-09-19 22:51:07 +0100 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2011-09-19 22:51:07 +0100 |
commit | d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60 (patch) | |
tree | 34d3f92d30565e88986ef12efb99a14091f454fa /EssentialsGroupManager | |
parent | 8d266a34400d3eee173470e873b2385564c96f7a (diff) | |
download | Essentials-d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60.tar Essentials-d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60.tar.gz Essentials-d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60.tar.lz Essentials-d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60.tar.xz Essentials-d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60.zip |
- Push updates to superperms for all valid GM commands.
Diffstat (limited to 'EssentialsGroupManager')
3 files changed, 60 insertions, 21 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 56f52a998..7777af29d 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -9,5 +9,5 @@ v 1.1: - Fix for Users.yml containing only 'users:' causing a crash.
- GroupManager will now generate a fresh Users and Groups yml if either file is empty.
- Fix for an infinite loop bug with the new Bukkit Perms during a new user creation.
-v 1.2:
- - Fixed BukkitPerms population. Wasn't correctly setting superperms.
\ No newline at end of file + - Fixed BukkitPerms population. Wasn't correctly setting superperms.
+ - Push updates to superperms for all valid GM commands.
\ 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 e0a29f509..8e77e2f07 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -208,7 +208,7 @@ public class GroupManager extends JavaPlugin { public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { boolean playerCanDo = false; boolean isConsole = false; - Player senderPlayer = null; + Player senderPlayer = null, targetPlayer = null; Group senderGroup = null; User senderUser = null; @@ -340,6 +340,9 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.setGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); return true; //break; @@ -374,6 +377,9 @@ public class GroupManager extends JavaPlugin { //PARECE OK dataHolder.removeUser(auxUser.getName()); sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' to default settings."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); return true; case manuaddsub: @@ -416,6 +422,9 @@ public class GroupManager extends JavaPlugin { auxUser.addSubGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'."); + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); + return true; case manudelsub: //VALIDANDO ESTADO DO SENDER @@ -449,6 +458,9 @@ public class GroupManager extends JavaPlugin { auxUser.removeSubGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You removed subgroup '" + auxGroup.getName() + "' from player '" + auxUser.getName() + "' list."); + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); + return true; case mangadd: //VALIDANDO ESTADO DO SENDER @@ -491,6 +503,8 @@ public class GroupManager extends JavaPlugin { dataHolder.removeGroup(auxGroup.getName()); sender.sendMessage(ChatColor.YELLOW + "You deleted a group named " + auxGroup.getName() + ", it's users are default group now."); + BukkitPermissions.updateAllPlayers(); + return true; case manuaddp: //VALIDANDO ESTADO DO SENDER @@ -554,6 +568,10 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.addPermission(args[1]); sender.sendMessage(ChatColor.YELLOW + "You added '" + args[1] + "' to player '" + auxUser.getName() + "' permissions."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); + return true; //break; case manudelp: @@ -604,6 +622,9 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.removePermission(args[1]); sender.sendMessage(ChatColor.YELLOW + "You removed '" + args[1] + "' from player '" + auxUser.getName() + "' permissions."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); return true; //break; @@ -759,6 +780,8 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxGroup.addPermission(args[1]); sender.sendMessage(ChatColor.YELLOW + "You added '" + args[1] + "' to group '" + auxGroup.getName() + "' permissions."); + + BukkitPermissions.updateAllPlayers(); return true; case mangdelp: @@ -799,6 +822,8 @@ public class GroupManager extends JavaPlugin { auxGroup.removePermission(args[1]); sender.sendMessage(ChatColor.YELLOW + "You removed '" + args[1] + "' from group '" + auxGroup.getName() + "' permissions."); + BukkitPermissions.updateAllPlayers(); + return true; case manglistp: //VALIDANDO ESTADO DO SENDER @@ -912,6 +937,8 @@ public class GroupManager extends JavaPlugin { auxGroup.addInherits(auxGroup2); sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " is now in " + auxGroup.getName() + " inheritance list."); + BukkitPermissions.updateAllPlayers(); + return true; case mangdeli: //VALIDANDO ESTADO DO SENDER @@ -947,6 +974,8 @@ public class GroupManager extends JavaPlugin { auxGroup.removeInherits(auxGroup2.getName()); sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " was removed from " + auxGroup.getName() + " inheritance list."); + BukkitPermissions.updateAllPlayers(); + return true; case manuaddv: //VALIDANDO ESTADO DO SENDER @@ -1394,6 +1423,9 @@ public class GroupManager extends JavaPlugin { } worldsHolder.loadWorld(auxString); sender.sendMessage("The request to world '" + auxString + "' was sent."); + + BukkitPermissions.updateAllPlayers(); + return true; } //VALIDANDO ESTADO DO SENDER @@ -1418,6 +1450,9 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.YELLOW + " The current world was reloaded."); } worldsHolder.mirrorSetUp(); + + BukkitPermissions.updateAllPlayers(); + return true; case listgroups: //VALIDANDO ESTADO DO SENDER @@ -1487,6 +1522,9 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.setGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); return true; //break; @@ -1542,6 +1580,9 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.setGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + + targetPlayer = this.getServer().getPlayer(auxUser.getName()); + if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); return true; //break; 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<String> 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:");
|