当前位置: 首页 > 知识库问答 >
问题:

BUKKIT 插件 API:如何检查玩家的物品栏是否包含数组中包含的物品?

邢飞白
2023-03-14

我正在用Java制作一个名为BanItems的Bukkit插件。我在创建它时遇到了很多问题,我只是在任何地方都找不到答案。所以我问了这个问题。在代码中,我有一个数组ItemsBanned[],只包含Strings。我想检查一下,看看是否有玩家在他们的库存中有一件物品在该阵列中。

public void onPlayerJoin(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    Inventory inv = player.getInventory();


    if (inv.contains(itemsBanned[x])) {

     }

出于某种奇怪的原因,当我复制时

它不会让我看到玩家的物品栏是否包含数组物品禁止中的物品。我该怎么做?请回答。

共有1个答案

顾永福
2023-03-14

你可以使用一个简单的for循环。根据你的问题,我假设被禁止的项目是项目的名称。

for(int i = 0; i < itemsBanned.length(); i++){
    Material m = Material.getMaterial(itemsBanned[i]); //convert the strings to Materials
    if(inv.contains(m)){
        //do something here
    }
}

该代码的唯一问题是您无法移除物品,只有当玩家拥有一个或多个物品时,您才能收到警报。如果您想移除被禁止的物品,您可以这样做:

for(int i = 0; i < itemsBanned.length(); i++){
    Material m = Material.getMaterial(itemsBanned[i]); //convert the strings to Materials

    for(int n = 0; n < inv.getSize(); n++){ //loop threw all items in the inventory
        ItemStack itm = inv.getItem(n); //get the items
        if(itm != null){ //make sure the item is not null, or you'll get a NullPointerException
            if(itm.getType().equals(m)){ //if the item equals a contraband item
                inv.remove(m); //remove the item
            }
        }
    }
}
 类似资料:
  • 我正在为《我的世界》编写一个bukkit插件,它会对低食物水平做出反应,然后自动将食物从库存中移动到现成的地方,然后吃掉它。我管理了第一部分,但我在bukkit API(,,其他地方)中找不到让玩家使用物品的方法。 这可能吗?如果可能,怎么做?

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。 在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器不需要使用。

  • 问题内容: 我正在尝试检测字符串是否包含至少一个存储在数组中的URL。 这是我的数组: 该字符串由用户输入并通过PHP提交。在确认页面上,我想检查输入的URL是否在数组中。 我尝试了以下方法: 无论输入什么,返回值始终为“找不到匹配项”。 这是正确的做事方式吗? 问题答案: 尝试这个。 如果要检查不区分大小写,请使用stristr()或stripos()。

  • 我有一个项目,关于从URL获取XML文件,将其删除,提取数据,然后进行处理。此外,我正在使用用户输入创建URL。但是我需要检查URL是否包含要刮取的XML文件。有什么办法吗?那么基本上如何检查URL是否包含XML文件呢?

  • 有一个任务从控制台得到N个数字,找到最长和最短的一个和他们的长度。任务并不难,工作正常,但我决定做一个检查,如果控制台输入与任务的条件相对应: 只有整数。 是精确的N个数字,而不是更多/更少。 我决定编写一个布尔方法isinputCorret(),它将使用扫描器并检查输入是否正确,但它不能正常工作。