2015-07-10 4 views
1

Я не могу найти способ предоставления игроку определенных разрешений при вводе команды. API Bukkit очень помогает показывать мне возможные методы, когда я просто делаю игрока или разрешение. Но ничего не приходит, что даст игроку определенное разрешение. Вот код, я должен сделать его работу:Как добавить разрешения для команды?

(в верхней части моего основного класса)

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; 

Я просто не получить объект модель для perms, может ли кто-нибудь помочь с этим?

ответ

2

Bukkit не позволяет легко добавлять разрешения программным способом для одного игрока. Для этого потребуется несколько головных болей.

Чтобы было проще, я рекомендовал бы использовать плагин для разрешений, таких как bPermissions или PEX, а затем подключиться к их плагину и использовать указанные методы для добавления разрешения на плеер.

Чтобы «подключиться», вам необходимо включить плагин в свой путь сборки, а затем получить экземпляр его. Как правило, плагины расскажут вам, как подключиться к ним на своих страницах dev.

2

Чтобы добавить к ответу на baseball435 (что совершенно правильно), самый простой и эффективный способ сделать это - подключиться к Vault API, а не к любому отдельному плагину. Это адаптер для почти каждого хорошо написанного плагина разрешения для Bukkit и не позволит вам иметь дело с различными API-интерфейсами из разных систем.

+0

Хорошо добавить; yes Vault действует как обертка вокруг плагинов, которые имеют аналогичную функциональность, чтобы владельцы серверов могли использовать любой плагин разрешений, например, что им нравится, не беспокоясь о другом плагине, требующем только определенного типа плагина разрешения. Большинство разработчиков плагинов будут использовать API Vault, чтобы предоставить свободу выбора владельцам серверов, а также облегчить для себя разработку плагинов. Вы можете проверить страницу разработчика Vault, чтобы узнать, какие другие типы плагинов они поддерживают, если вам интересно – Jmrapp

+0

Спасибо! Я посмотрю в хранилище :) – Sporech

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); 
} 
Смежные вопросы