【问题标题】:Bukkit remove item from inventoryBukkit 从库存中删除项目
【发布时间】:2015-03-05 05:20:15
【问题描述】:

我正在尝试检查玩家的物品栏中是否有物品,如果有,请移除其中一个。这是我现在拥有的:

Material ammomat = parseMaterial(plugin.getConfig().getString("game.ammo_material"));

ItemStack ammo = new ItemStack(ammomat, 1);

if(p.getInventory().contains(ammomat, 1)){
    p.getInventory().removeItem(ammo);
    p.updateInventory();
}

获取他们是否拥有该项目,但不会删除一个。

如何从玩家的物品栏中移除一件物品?

【问题讨论】:

    标签: java minecraft bukkit


    【解决方案1】:

    如果您只想移除一件物品,您可以遍历玩家物品栏中的物品,然后检查材料是否符合您的要求。如果是这样,您可以从 ItemStack 中删除一项

    它可能看起来像这样:

    for(int i = 0; i < p.getInventory().getSize(); i++){
      //get the ItemStack at slot i
      ItemStack itm = p.getInventory().getItem(i);
      //make sure the item is not null, and check if it's material is "mat"
      if(itm != null && itm.getType().equals(mat){
        //get the new amount of the item
        int amt = itm.getAmount() - 1;
        //set the amount of the item to "amt"
        itm.setAmount(amt);
        //set the item in the player's inventory at slot i to "itm" if the amount
        //is > 0, and to null if it is <= 0
        p.getInventory().setItem(i, amt > 0 ? itm : null);
        //update the player's inventory
        p.updateInventory();
        //we're done, break out of the for loop
        break;
      }
    }
    

    所以,您的代码如下所示:

    Material ammomat = parseMaterial(plugin.getConfig().getString("game.ammo_material"));
    
    for(int i = 0; i < p.getInventory().getSize(); i++){
      ItemStack itm = p.getInventory().getItem(i);
      if(itm != null && itm.getType().equals(ammomat){
        int amt = itm.getAmount() - 1;
        itm.setAmount(amt);
        p.getInventory().setItem(i, amt > 0 ? itm : null);
        p.updateInventory();
        break;
      }
    }
    

    【讨论】:

      【解决方案2】:

      要一次删除一项,您只需指定该项后的数量:p.getInventory().removeItem(ammo, 1);

      但是您的 if 语句只是测试他们是否拥有该项目然后将其删除,因此它仍然会同时删除所有这些项目以了解程序运行的速度。

      所以如果你在制造枪支,你可能应该制定一种射击方法(我不知道你是否已经这样做了)。

      这为时已晚,但仍然,其他答案建议的方式效果不佳。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 2021-10-15
        相关资源
        最近更新 更多