diff --git a/src/com/platymuus/bukkit/permissions/PermissionInfo.java b/src/com/platymuus/bukkit/permissions/PermissionInfo.java new file mode 100644 index 0000000..99f89cf --- /dev/null +++ b/src/com/platymuus/bukkit/permissions/PermissionInfo.java @@ -0,0 +1,96 @@ +package com.platymuus.bukkit.permissions; + +import java.util.*; + +/** + * A class representing the global and world nodes attached to a player or + * group. + */ +public class PermissionInfo { + + private final PermissionsPlugin plugin; + private final String node; + + protected PermissionInfo(PermissionsPlugin plugin, String node) { + this.plugin = plugin; + this.node = node; + } + + /** + * Gets the list of groups this group/player inherits permissions from. + * + * @return The list of groups. + */ + public List getGroups() { + ArrayList result = new ArrayList(); + + if (node.startsWith("users")) { + for (String key : plugin.api.getPlayerGroups(node.replace("users/", ""))) { + Group group = plugin.getGroup(key); + if (group != null) { + result.add(group); + } + } + } else if (node.startsWith("groups")) { + for (String key : plugin.api.getGroupInheritance(node.replace("groups/", ""))) { + Group group = plugin.getGroup(key); + if (group != null) { + result.add(group); + } + } + } + + return result; + } + + /** + * Gets a map of non-world-specific permission nodes to boolean values that + * this group/player defines. + * + * @return The map of permissions. + */ + public Map getPermissions() { + if (node.startsWith("users")) { + return plugin.api.getPlayerPermissions(node.replace("users/", "")); + } else if (node.startsWith("groups")) { + return plugin.api.getGroupPermissions(node.replace("groups/", "")); + } else { + return null; + } + } + + /** + * Gets a list of worlds this group/player defines world-specific + * permissions for. + * + * @return The list of worlds. + */ + public Set getWorlds() { + if (node.startsWith("users")) { + return new HashSet(plugin.api.getPlayerWorlds(node.replace("users/", ""))); + } else if (node.startsWith("groups")) { + return new HashSet(plugin.api.getGroupWorlds(node.replace("groups/", ""))); + } else { + return new HashSet(); + } + } + + /** + * Gets a map of world-specific permission nodes to boolean values that this + * group/player defines. + * + * @param world + * The name of the world. + * @return The map of permissions. + */ + public Map getWorldPermissions(String world) { + if (node.startsWith("users")) { + return plugin.api.getPlayerPermissions(node.replace("users/", ""), world); + } else if (node.startsWith("groups")) { + return plugin.api.getGroupPermissions(node.replace("groups/", ""), world); + } else { + return null; + } + } + +} diff --git a/src/com/platymuus/bukkit/permissions/PermissionsPlugin.java b/src/com/platymuus/bukkit/permissions/PermissionsPlugin.java index aa85f6b..f71f199 100644 --- a/src/com/platymuus/bukkit/permissions/PermissionsPlugin.java +++ b/src/com/platymuus/bukkit/permissions/PermissionsPlugin.java @@ -19,7 +19,8 @@ public class PermissionsPlugin extends JavaPlugin { // -- Basic stuff @Override public void onEnable() { - api = ((SimplyPlugin) getServer().getPluginManager().getPlugin("SimplyPerms")).getAPI(); + api = ((SimplyPlugin) getServer().getPluginManager().getPlugin( + "SimplyPerms")).getAPI(); // How are you gentlemen getLogger().info("SimplyWrapper successfully enabled !"); @@ -32,7 +33,8 @@ public class PermissionsPlugin extends JavaPlugin { } public FileConfiguration getConfig() { - return getServer().getPluginManager().getPlugin("SimplyPerms").getConfig(); + return getServer().getPluginManager().getPlugin("SimplyPerms") + .getConfig(); } // -- External API @@ -40,7 +42,7 @@ public class PermissionsPlugin extends JavaPlugin { * Get the group with the given name. * * @param groupName - * The name of the group. + * The name of the group. * @return A Group if it exists or null otherwise. */ public Group getGroup(String groupName) { @@ -54,7 +56,7 @@ public class PermissionsPlugin extends JavaPlugin { * Returns a list of groups a player is in. * * @param playerName - * The name of the player. + * The name of the player. * @return The groups this player is in. May be empty. */ public List getGroups(String playerName) { @@ -69,6 +71,21 @@ public class PermissionsPlugin extends JavaPlugin { return result; } + /** + * Returns permission info on the given player. + * + * @param playerName + * The name of the player. + * @return A PermissionsInfo about this player. + */ + public PermissionInfo getPlayerInfo(String playerName) { + if (!api.isPlayerInDB(playerName)) { + return null; + } else { + return new PermissionInfo(this, "users/" + playerName); + } + } + /** * Returns a list of all defined groups. * diff --git a/src/plugin.yml b/src/plugin.yml index 1e26c56..32a9fd1 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -4,5 +4,5 @@ main: com.platymuus.bukkit.permissions.PermissionsPlugin author: Xefir Destiny website: http://dev.bukkit.org/server-mods/simplyperms/ description: Wrapper for SimplyPerms to keep compatibility with old PermissionsBukkit based plugins -version: 1.1 +version: 1.2 depend: [ SimplyPerms ]