2015-07-10 47 views
1

我無法找到如何給玩家一定的權限,當他們輸入一個命令。 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; 

我只是不明白的對象燙髮模型,任何人都可以幫忙嗎?

回答

2

Bukkit不容易以編程方式向單個玩家添加權限。這樣做需要少許頭痛。

爲了方便,我建議使用插件像bPermissions或PEX權限,然後掛到他們的插件,並使用給定的方法來允許添加到播放器。

「鉤住」你需要包括插件安裝到您的構建路徑,然後得到它的一個實例。通常,插件會告訴你如何在bukkit開發頁面上掛鉤。

2

要添加到baseball435的答案(這是完全正確的),最簡單和最有效的方法是掛鉤到Vault API而不是任何單獨的插件。 它是適用於Bukkit幾乎所有編寫良好的權限插件的適配器,並且使您不必處理來自不同系統的不同API。

+0

良好的補充;是的,Vault充當包含相似功能的插件,使服務器所有者可以輕鬆使用任何權限插件,例如,他們喜歡而不必擔心僅需要特定類型的權限插件的其他插件。大多數插件開發者將使用Vault的API爲服務器所有者提供選擇的自由,同時也使他們更容易開發插件。您可以查看Vault的開發頁面,查看他們支持的其他類型的插件,如果您好奇 – Jmrapp

+0

謝謝!我會看看Vault :) – 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); 
}