001 package org.bukkit.util.permissions;
002
003 import java.util.Map;
004 import org.bukkit.Bukkit;
005 import org.bukkit.permissions.Permission;
006 import org.bukkit.permissions.PermissionDefault;
007
008 public final class DefaultPermissions {
009 private static final String ROOT = "craftbukkit";
010 private static final String LEGACY_PREFIX = "craft";
011
012 private DefaultPermissions() {}
013
014 public static Permission registerPermission(Permission perm) {
015 return registerPermission(perm, true);
016 }
017
018 public static Permission registerPermission(Permission perm, boolean withLegacy) {
019 Permission result = perm;
020
021 try {
022 Bukkit.getPluginManager().addPermission(perm);
023 } catch (IllegalArgumentException ex) {
024 result = Bukkit.getPluginManager().getPermission(perm.getName());
025 }
026
027 if (withLegacy) {
028 Permission legacy = new Permission(LEGACY_PREFIX + result.getName(), result.getDescription(), PermissionDefault.FALSE);
029 legacy.getChildren().put(result.getName(), true);
030 registerPermission(perm, false);
031 }
032
033 return result;
034 }
035
036 public static Permission registerPermission(Permission perm, Permission parent) {
037 parent.getChildren().put(perm.getName(), true);
038 return registerPermission(perm);
039 }
040
041 public static Permission registerPermission(String name, String desc) {
042 Permission perm = registerPermission(new Permission(name, desc));
043 return perm;
044 }
045
046 public static Permission registerPermission(String name, String desc, Permission parent) {
047 Permission perm = registerPermission(name, desc);
048 parent.getChildren().put(perm.getName(), true);
049 return perm;
050 }
051
052 public static Permission registerPermission(String name, String desc, PermissionDefault def) {
053 Permission perm = registerPermission(new Permission(name, desc, def));
054 return perm;
055 }
056
057 public static Permission registerPermission(String name, String desc, PermissionDefault def, Permission parent) {
058 Permission perm = registerPermission(name, desc, def);
059 parent.getChildren().put(perm.getName(), true);
060 return perm;
061 }
062
063 public static Permission registerPermission(String name, String desc, PermissionDefault def, Map<String, Boolean> children) {
064 Permission perm = registerPermission(new Permission(name, desc, def, children));
065 return perm;
066 }
067
068 public static Permission registerPermission(String name, String desc, PermissionDefault def, Map<String, Boolean> children, Permission parent) {
069 Permission perm = registerPermission(name, desc, def, children);
070 parent.getChildren().put(perm.getName(), true);
071 return perm;
072 }
073
074 public static void registerCorePermissions() {
075 Permission parent = registerPermission(ROOT, "Gives the user the ability to use all CraftBukkit utilities and commands");
076
077 CommandPermissions.registerPermissions(parent);
078 BroadcastPermissions.registerPermissions(parent);
079
080 parent.recalculatePermissibles();
081 }
082 }