我无法在输入命令时找到给予玩家某些权限的方法。当我做玩家或允许时,Bukkit API非常有助于向我展示可能的方法。但是没有任何东西会给玩家一定的许可。以下是我必须使其工作的代码:
(在我的主要班级的顶部)
public Permission blue = new Permission("Blue.allowed");
(在onEnable())
PluginManager pm = getServer().getPluginManager();
pm.addPermission(blue);
我有这个简单的命令,我想给输入它的玩家获得Blue
权限:
public boolean onCommandAllowRed(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("give red") && sender instanceof Player) {
Player player = (Player) sender;
return true;
}
return false;
我只是没有获得烫发的对象模型,任何人都可以帮忙吗?
答案 0 :(得分:2)
Bukkit无法轻松地以编程方式向单个播放器添加权限。这样做需要一些麻烦。
为了更容易,我建议使用插件获取bPermissions或PEX等权限,然后挂钩插件并使用给定的方法向播放器添加权限。
要“挂钩”,您需要将插件包含在构建路径中,然后获取它的实例。通常,插件会告诉你如何在他们的bukkit dev页面上挂钩。
答案 1 :(得分:2)
要添加到baseball435的答案(这是完全正确的),最简单,最有效的方法是挂钩Vault API而不是任何单个插件。 它是适用于Bukkit的几乎所有编写良好的权限插件的适配器,可以使您不必处理来自不同系统的不同API。
答案 2 :(得分:0)
我最初也遇到过这个问题,我自己也发现了这个问题,我还提出了一种保存方法,否则在注销时会失去许可。
这是我管理权限的方式。
private static PermissionAttachment fetchPlayer(UUID uuid){
Plugin plugin = Core.getPlugin();
Player player = Bukkit.getPlayer(uuid);
if (player != null){
PermissionAttachment perm = player.addAttachment(plugin);
return perm;
}
else{
return null;
}
}
public static void addPermission(UUID uuid, String permission){
PermissionAttachment perm = fetchPlayer(uuid);
perm.setPermission(permission, true);
}
public static void removePermission(UUID uuid, String permission){
PermissionAttachment perm = fetchPlayer(uuid);
perm.unsetPermission(permission);
}