如何添加命令权限?

时间:2015-07-10 16:24:09

标签: java bukkit

我无法在输入命令时找到给予玩家某些权限的方法。当我做玩家或允许时,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;

我只是没有获得烫发的对象模型,任何人都可以帮忙吗?

3 个答案:

答案 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);
}