贪食狐
=。=怎么遍历玩家的背包然后检测有没有指定的道具 如果有就扣掉1个 没有就不执行任何操作

tdiant
Player p;
for(ItemStack item:p.getInventory()){
    if(this.isTrulyItemStack(item))
        if(item.getAmount()>1)
          item.setAmount(item.getAmount()-1);
        else
          p.getInventory().removeItem(item);
}

private boolean isTrulyItemStack(ItemStack item){
    //判读物品是不是指定物品
}

耗子
tdiant 发表于 2017-10-2 22:53
Player p;
for(ItemStack item:p.getInventory()){
    if(this.isTrulyItemStack(item))

代码整体思路还是可以,但有着大量错误,比如说操作完毕物品后没有break,导致如果玩家拥有多个符合条件的ItemStack,会被扣除多次物品。此外,PlayerInventory不能这样遍历。。。

海螺螺
耗子 发表于 2017-10-3 01:13
代码整体思路还是可以,但有着大量错误,比如说操作完毕物品后没有break,导致如果玩家拥有多个符合条件 ...

可以这么遍历的
Inventory继承了 Iterable<ItemStack>接口

耗子
754503921 发表于 2017-10-3 03:25
可以这么遍历的
Inventory继承了 Iterable接口

好吧,确实是这样



贪食狐

=。=按照你的写法的确成功的扣除了1个道具但是如果再按就不行了

贪食狐

准确来说 您的代码只遍历了玩家的第一格背包 而不是整个背包

贪食狐

好吧 是我把PlayerInventory看成了Inventory

魁魅 发表于 2017-10-8 19:33
准确来说 您的代码只遍历了玩家的第一格背包 而不是整个背包



魁魅 发表于 2017-10-8 19:26
=。=按照你的写法的确成功的扣除了1个道具但是如果再按就不行了

所以你说的如果有,就扣掉一个,的确有就扣掉了一个啊,有什么问题么
如果有就扣掉1个 没有就不执行任何操作



Ghost-Gx
完全看不懂的样子w(?Д?)w

彡丿丶小莫
么遍历玩家的背包然后检测有没有指定的道具 如果有就扣掉1个 没有就

-帕秋莉-GO
遍历 = for 手动滑稽