blob: f3e84b54b282bee37b1faa9e03898695ed5e168c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package net.ess3.bukkit;
import java.util.StringTokenizer;
import net.ess3.api.IPermission;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginManager;
public class PermissionFactory
{
public static String registerParentPermission(String permission)
{
final PluginManager pluginManager = Bukkit.getServer().getPluginManager();
final StringTokenizer tokenizer = new StringTokenizer(permission, ".");
final StringBuilder builder = new StringBuilder(permission.length());
Permission parent = null;
while (tokenizer.hasMoreTokens())
{
String part = tokenizer.nextToken();
if (!tokenizer.hasMoreTokens())
{
break;
}
builder.append(part).append(".*");
String permString = builder.toString();
Permission perm = pluginManager.getPermission(permString);
if (perm == null)
{
perm = new Permission(permString, PermissionDefault.FALSE);
pluginManager.addPermission(perm);
if (parent != null)
{
parent.getChildren().put(perm.getName(), Boolean.TRUE);
}
parent = perm;
perm.recalculatePermissibles();
}
builder.deleteCharAt(builder.length() - 1);
}
return parent == null ? null : parent.getName();
}
public static boolean checkPermission(CommandSender sender, IPermission perm)
{
final String permission = perm.getPermissionName();
if (sender.isPermissionSet(permission))
{
return sender.hasPermission(permission);
}
else
{
final String parentPermission = perm.getParentPermission();
if (parentPermission != null && sender.isPermissionSet(parentPermission))
{
return sender.hasPermission(parentPermission);
}
else
{
return perm.getPermissionDefault().getValue(sender.isOp());
}
}
}
}
|