java - Bukkit 检查玩家的库存

标签 java plugins minecraft 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.");
    }
}

我在 .contains(bannedItems, 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 循环,它将当前元素存储在 m 变量中的 bannedItems 中,然后我们使用单个 Material m 进行比较.

我还会使用不同的事件,例如当他们拿起一个元素时,然后进行检查,以便您可以立即将其删除。

关于java - Bukkit 检查玩家的库存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687583/

相关文章:

java - 理解递归逻辑

java - 将 gmf 与 xpand oaw 集成

wordpress - 重力形式 api get_entries 限制为 20

java - Bukkit 1.11.2 获取对另一名玩家造成伤害的玩家

java - 注释在编译时存在但在运行时不存在

java - 如何禁用摩托罗拉 ET1 条码扫描仪将输出粘贴到聚焦的 Edittext?

ios - 找不到 PushPlugin Cordova 3.5

plugins - 将 "Like Button"添加到我的 Facebook 页面

java - 如何在 Minecraft 1.12.2 模组中制作方向 block ?

java - 我如何检查 gson 中返回的对象是否为 null