有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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.");
    }
}

我在屏幕上看到一个错误。包含(bannditems,1))行

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    对于数组中的每个元素,必须进行检查,而不仅仅是比较数组。以下是概念证明:

    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进行比较。当他们平等时,它会报告他们。然后,您可以将其应用于这种情况:

    @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
            }
        }
    }
    

    现在,该事件将循环遍历bannedItems的每个元素,并检查用户是否在那里拥有它

    for(Material m : bannedItems) 
    

    是一个增强的for循环,它将当前元素存储在bannedItems变量的m中,然后我们使用单个材质m进行比较

    我也会使用不同的事件,例如当他们拿起一个项目,然后检查,所以你可以立即删除它