package net.obnoxint.mcdev.omclib;
import org.bukkit.Bukkit;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public enum OmcLibPermission {
COMMAND(".command", PermissionDefault.OP),
COMMAND_DEBUG(".command.debug", PermissionDefault.OP, COMMAND),
COMMAND_FEATURE(".command.feature", PermissionDefault.OP, COMMAND),
COMPENDIUM(".compendium", PermissionDefault.OP),
COMPENDIUM_READ_TOPIC(".compendium.topic", PermissionDefault.OP, COMPENDIUM);
private static final String TOP_NODE_NAME = "omc-lib";
private static Permission topNode = null;
private static Permission getTopNode() {
if (topNode == null){
topNode = new Permission(TOP_NODE_NAME);
Bukkit.getPluginManager().addPermission(topNode);
}
return topNode;
}
private final String name;
private final PermissionDefault permissionDefault;
private final Permission parent;
private final Permission permission;
private OmcLibPermission(final String name, final PermissionDefault permissionDefault) {
this(name, permissionDefault, null);
}
private OmcLibPermission(final String name, final PermissionDefault permissionDefault, final OmcLibPermission parent) {
final Permission perm = new Permission(getTopNode().getName() + name, permissionDefault);
final Permission par = (parent == null) ? getTopNode() : parent.permission;
perm.addParent(par, true);
Bukkit.getPluginManager().addPermission(perm);
this.name = name;
this.permission = perm;
this.permissionDefault = permissionDefault;
this.parent = par;
}
public String getName() {
return name;
}
public Permission getParent() {
return parent;
}
public Permission getPermission() {
return permission;
}
public PermissionDefault getPermissionDefault() {
return permissionDefault;
}
}