2016-07-31 64 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