2016-11-30 21:26:56 -05:00
|
|
|
package com.lishid.openinv.util;
|
2016-11-25 08:01:44 -05:00
|
|
|
|
2016-11-25 16:42:06 -05:00
|
|
|
import org.bukkit.permissions.Permissible;
|
2016-11-25 08:01:44 -05:00
|
|
|
|
2016-11-25 16:42:06 -05:00
|
|
|
public enum Permissions {
|
|
|
|
|
2017-11-07 18:16:38 -05:00
|
|
|
OPENINV("openinv"),
|
|
|
|
OVERRIDE("override"),
|
|
|
|
EXEMPT("exempt"),
|
|
|
|
CROSSWORLD("crossworld"),
|
|
|
|
SILENT("silent"),
|
|
|
|
ANYCHEST("anychest"),
|
|
|
|
ENDERCHEST("openender"),
|
|
|
|
ENDERCHEST_ALL("openenderall"),
|
|
|
|
SEARCH("search"),
|
|
|
|
EDITINV("editinv"),
|
|
|
|
EDITENDER("editender"),
|
|
|
|
OPENSELF("openself");
|
|
|
|
|
|
|
|
private final String[] permission;
|
|
|
|
|
|
|
|
Permissions(String... permission) {
|
|
|
|
this.permission = new String[permission.length + 1];
|
|
|
|
this.permission[0] = "OpenInv";
|
|
|
|
System.arraycopy(permission, 0, permission, 1, permission.length);
|
2016-11-25 16:42:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean hasPermission(Permissible permissible) {
|
2017-11-07 18:16:38 -05:00
|
|
|
StringBuilder permissionBuilder = new StringBuilder();
|
|
|
|
|
|
|
|
// Support wildcard nodes.
|
|
|
|
for (int i = 0; i < permission.length; i++) {
|
|
|
|
if (permissible.hasPermission(permissionBuilder.toString() + "*")) {
|
2016-11-25 16:42:06 -05:00
|
|
|
return true;
|
|
|
|
}
|
2017-11-07 18:16:38 -05:00
|
|
|
permissionBuilder.append(permission[i]).append('.');
|
2016-11-25 16:42:06 -05:00
|
|
|
}
|
2017-11-07 18:16:38 -05:00
|
|
|
|
|
|
|
// Delete trailing period.
|
|
|
|
if (permissionBuilder.length() > 0) {
|
|
|
|
permissionBuilder.deleteCharAt(permissionBuilder.length() - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return permissible.hasPermission(permissionBuilder.toString());
|
2016-11-25 16:42:06 -05:00
|
|
|
}
|
2016-11-25 08:01:44 -05:00
|
|
|
|
|
|
|
}
|