diff --git a/src/net/milkbowl/vault/permission/Permission.java b/src/net/milkbowl/vault/permission/Permission.java index de8f053..fd217b7 100644 --- a/src/net/milkbowl/vault/permission/Permission.java +++ b/src/net/milkbowl/vault/permission/Permission.java @@ -1019,4 +1019,10 @@ public abstract class Permission { public void setGroupSuffix(World world, String group, String suffix) { setGroupSuffix(world.getName(), group, suffix); } + + /** + * Returns a list of all known groups + * @return an Array of String of all groups + */ + abstract public String[] getGroups(); } \ No newline at end of file diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java index ff121fb..db83afa 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_GroupManager.java @@ -1,11 +1,17 @@ package net.milkbowl.vault.permission.plugins; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import net.milkbowl.vault.permission.Permission; import org.anjocaido.groupmanager.GroupManager; +import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -321,4 +327,16 @@ public class Permission_GroupManager extends Permission { } return false; } + + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + Collection groups = groupManager.getWorldsHolder().getWorldData(world.getName()).getGroupList(); + for (Group group : groups) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java index 54c67e1..4a0913a 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions2.java @@ -1,7 +1,11 @@ package net.milkbowl.vault.permission.plugins; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -13,6 +17,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; +import com.nijiko.permissions.Group; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; @@ -328,4 +333,15 @@ public class Permission_Permissions2 extends Permission { return false; } + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + for (Group group : perms.getGroups(world.getName())) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } + } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java index 4806f15..2df3481 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_Permissions3.java @@ -19,10 +19,14 @@ package net.milkbowl.vault.permission.plugins; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import net.milkbowl.vault.permission.Permission; +import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; @@ -339,4 +343,15 @@ public class Permission_Permissions3 extends Permission { return false; } } + + @Override + public String[] getGroups() { + Set groupNames = new HashSet(); + for (World world : Bukkit.getServer().getWorlds()) { + for (Group group : perms.getGroups(world.getName())) { + groupNames.add(group.getName()); + } + } + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java index accd524..5418f9b 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsBukkit.java @@ -403,4 +403,14 @@ public class Permission_PermissionsBukkit extends Permission { public void setGroupSuffix(String world, String group, String suffix) { throw new UnsupportedOperationException(getName() + " does not support group info nodes."); } + + @Override + public String[] getGroups() { + List groupNames = new ArrayList(); + for (Group group : perms.getAllGroups()) { + groupNames.add(group.getName()); + } + + return groupNames.toArray(new String[0]); + } } diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java index 5d76eec..2d351b5 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_PermissionsEx.java @@ -82,7 +82,7 @@ public class Permission_PermissionsEx extends Permission { @Override public boolean playerHas(Player player, String permission) { - return this.permission.has(player, permission); + return PermissionsEx.has(player, permission); } @Override @@ -466,4 +466,16 @@ public class Permission_PermissionsEx extends Permission { return false; } } + + @Override + public String[] getGroups() { + PermissionGroup[] groups = PermissionsEx.getPermissionManager().getGroups(); + if (groups == null || groups.length == 0) + return null; + String[] groupNames = new String[groups.length]; + for (int i = 0; i < groups.length; i++) { + groupNames[i] = groups[i].getName(); + } + return groupNames; + } } \ No newline at end of file diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java b/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java index cd4f461..5bf6876 100644 --- a/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_SuperPerms.java @@ -242,4 +242,9 @@ public class Permission_SuperPerms extends Permission { public void setGroupSuffix(String world, String group, String suffix) { throw new UnsupportedOperationException(getName() + " no data permissions."); } + + @Override + public String[] getGroups() { + throw new UnsupportedOperationException(getName() + " does not support group listing!"); + } }