diff options
5 files changed, 58 insertions, 30 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 71a4c3482..876dc28b7 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -101,4 +101,6 @@ v 1.8: - Major, MAJOR changes to support partial/full world mirroring.
You can now mirror groups.yml, users.yml or both files between different worlds.
- Catch NullPointerErrors generated by blank permission nodes.
- - Removed '- bukkit.command' form the globalgroups permission nodes.
\ No newline at end of file + - Removed '- bukkit.command' form the globalgroups permission nodes.
+v 1.9:
+ - Optimize populating Bukkit perms so we no longer calculate the child nodes (Bukkit already does this).
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index b23fc01d4..167103796 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -90,13 +90,24 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns All permissions (including inheritance and sub groups) for the - * player. + * player, including child nodes from Bukkit. * * @param userName * @return List<String> of all players permissions. */ @Override public List<String> getAllPlayersPermissions(String userName) { + return getAllPlayersPermissions(userName, true); + } + /** + * Returns All permissions (including inheritance and sub groups) for the + * player. With or without Bukkit child nodes. + * + * @param userName + * @return List<String> of all players permissions. + */ + @Override + public List<String> getAllPlayersPermissions(String userName, Boolean includeChildren) { List<String> playerPermArray = new ArrayList<String>(); @@ -104,14 +115,16 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm))) { playerPermArray.add(perm); - Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); - - if (children != null) { - for (String child : children.keySet()) { - if (children.get(child)) - if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) { - playerPermArray.add(child); - } + if (includeChildren) { + Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); + + if (children != null) { + for (String child : children.keySet()) { + if (children.get(child)) + if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) { + playerPermArray.add(child); + } + } } } } @@ -122,12 +135,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm))) { playerPermArray.add(perm); - Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); - if (children != null) { - for (String child : children.keySet()) { - if (children.get(child)) - if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) - playerPermArray.add(child); + if (includeChildren) { + Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); + if (children != null) { + for (String child : children.keySet()) { + if (children.get(child)) + if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) + playerPermArray.add(child); + } } } } @@ -137,13 +152,15 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm))) { playerPermArray.add(perm); - Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); - if (children != null) { - for (String child : children.keySet()) { - if (children.get(child)) - if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) { - playerPermArray.add(child); - } + if (includeChildren) { + Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren(perm, playerPermArray); + if (children != null) { + for (String child : children.keySet()) { + if (children.get(child)) + if ((!playerPermArray.contains(child)) && (!playerPermArray.contains("-" + child))) { + playerPermArray.add(child); + } + } } } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index ebaadf8bd..91f9a9bd6 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -79,7 +79,7 @@ public class BukkitPermissions { public BukkitPermissions(GroupManager plugin) {
this.plugin = plugin;
- //this.collectPermissions();
+ this.collectPermissions();
this.registerEvents();
this.updateAllPlayers();
@@ -105,15 +105,20 @@ public class BukkitPermissions { manager.registerEvent(Event.Type.PLUGIN_DISABLE, serverListener, Event.Priority.Normal, plugin);
}
- /*
+
public void collectPermissions() {
registeredPermissions.clear();
+ /*
for (Plugin bukkitPlugin : Bukkit.getServer().getPluginManager().getPlugins()) {
for (Permission permission : bukkitPlugin.getDescription().getPermissions())
registeredPermissions.push(permission);
}
+ */
+
+ registeredPermissions = new LinkedList<Permission>(Bukkit.getPluginManager().getPermissions());
+
}
- */
+
public void updatePermissions(Player player) {
this.updatePermissions(player, null);
@@ -194,7 +199,7 @@ public class BukkitPermissions { // Add all permissions for this player (GM only)
// child nodes will be calculated by Bukkit.
- List<String> playerPermArray = worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName());
+ List<String> playerPermArray = worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName(), false);
Map<String, Boolean> newPerms = new HashMap<String, Boolean>();
for (String permission : playerPermArray) {
@@ -210,6 +215,7 @@ public class BukkitPermissions { */
newPerms.put(permission, value);
}
+
//player.recalculatePermissions();
/**
@@ -373,13 +379,13 @@ public class BukkitPermissions { if (!GroupManager.isLoaded())
return;
- //collectPermissions();
+ collectPermissions();
updateAllPlayers();
}
@Override
public void onPluginDisable(PluginDisableEvent event) {
- // collectPermissions();
+ collectPermissions();
// updateAllPlayers();
}
}
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java index c0383c160..cf11bd37f 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java @@ -234,4 +234,6 @@ public abstract class PermissionsReaderInterface { ////////////////////////////// public abstract List<String> getAllPlayersPermissions(String userName); + + public abstract List<String> getAllPlayersPermissions(String userName, Boolean includeChildren); } diff --git a/EssentialsGroupManager/src/plugin.yml b/EssentialsGroupManager/src/plugin.yml index da5164ce1..dc9b4c29c 100644 --- a/EssentialsGroupManager/src/plugin.yml +++ b/EssentialsGroupManager/src/plugin.yml @@ -1,11 +1,12 @@ name: GroupManager -version: "1.8 (Phoenix)" +version: GMBuildVer (Phoenix) main: org.anjocaido.groupmanager.GroupManager website: http://www.anjocaido.info/ description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule. authors: - AnjoCaido - Gabriel Couto + - ElgarL commands: manuadd: description: Move a player to desired group.(Adds to the file if not exists) |