2016-07-31 74 views
0

我試圖查看玩家是否在他們的庫存中有以下任何物品,如果他們這樣做,我想刪除這些物品並向他們發送消息說物品已被刪除,但我無法弄清楚如何做到這一點,這是我到目前爲止有:Bukkit檢查玩家的庫存

Material[] bannedItems = { Material.DIAMOND_HELMET, Material.DIAMOND_CHESTPLATE, Material.DIAMOND_LEGGINGS, Material.DIAMOND_BOOTS, Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS }; 

@EventHandler 
public void onInventoryClick(InventoryClickEvent event) { 
    Player player = (Player) event.getWhoClicked(); 
    if(player.getInventory().contains(bannedItems, 1)){ 
     player.sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + ChatColor.BOLD + "RPG" + ChatColor.GRAY + "] " + ChatColor.RED + "A has been removed from your possession."); 
    } 
} 

我的。載有(bannedItems,1))線得到一個錯誤。

感謝您的幫助!

+0

什麼錯誤?請進一步解釋。一個事件,比如當他們拿起一個物品時,在這種情況下可能會更實際 – Li357

+0

我被告知我必須將Material []更改爲int,但那樣會給我錯誤,說我必須將它從int更改爲一個材質[] – CameronOfoluwa

+0

int []用於int數組,材質[]用於材質數組...您必須遍歷數組並檢查每個 – Li357

回答

2

對於數組中的每個元素,都必須檢查它,而不僅僅是比較數組。這裏是一個概念證明:

double[] check = {1.3, 4.2, 4.3}; //A sample double array 

for(double d : check) { //Loop thru all elements 
    if(4.2 == d) { //If current element is equal to 4.2 
     System.out.println("EQUAL!"); //Print "EQUAL!" 
    } 
} 

此循環通過check陣列一個接一個,並且每個元素進行比較,以4.2。它們報告它們何時平等。通過bannedItems的每個元素現在

@EventHandler 
public void onInventoryClick(InventoryClickEvent event) { 
    Material[] bannedItems = { Material.DIAMOND_HELMET, Material.DIAMOND_CHESTPLATE, Material.DIAMOND_LEGGINGS, Material.DIAMOND_BOOTS, Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS }; 
    Player player = (Player) event.getWhoClicked(); 

    for(Material m : bannedItems) { //Loop thru all elements 
     if(player.getInventory().contains(m, 1)){ //Check if in inventory 
      player.sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + ChatColor.BOLD + "RPG" + ChatColor.GRAY + "] " + ChatColor.RED + "A has been removed from your possession."); 
      //Remove stuff 
     } 
    } 
} 

,該事件將循環,並檢查用戶是否有它在那裏庫存:然後,您可以將此這種情況。

for(Material m : bannedItems) 

是一個增強的for循環,在m變量存儲在bannedItems當前元素,然後我們比較使用m,單一材料。

我也會使用不同的事件,比如當他們拿起物品時,然後檢查,以便您可以立即將其刪除。

+0

非常感謝你的答案,但也是一個完整的解釋!這真的幫助了我。 – CameronOfoluwa

+0

沒問題,我們都在這裏學習:)讓我知道如果你有任何其他問題 – Li357

+0

我會做,並再次,謝謝你! – CameronOfoluwa