【问题标题】:How can I drop player inventory?如何丢弃玩家库存?
【发布时间】:2014-10-22 09:15:07
【问题描述】:

我有点坚持制作插件...... 这是我的代码:

Player player = (Player)event.getPlayer();
ItemStack item = new ItemStack( /* player.getInventory() */ /*  My problem here is how do i drop all items that or in my inventory (Some items might have enchantments!)  */);
World world = player.getWorld();
world.dropItem(player.getLocation(), item);

有人知道我如何丢弃库存中的所有物品吗?有些物品可能有附魔,并且在掉落时无法移除。

【问题讨论】:

  • 对不起:\我对stackoverflow很陌生:p我也不能投票:(
  • 别担心:没有伤害(欢迎!)

标签: plugins bukkit inventory items


【解决方案1】:

如何迭代玩家库存并使用 dropItemNaturally?

for (ItemStack itemStack : player.getInventory()) {
    player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
}

【讨论】:

    【解决方案2】:

    代码

    for (ItemStack itemStack : player.getInventory()) {
        player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
    }
    

    如果他们的库存中有一个没有物品的插槽,则可以返回 null。 我推荐这个:

    for (ItemStack itemStack : player.getInventory().getContents()) {
        player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
    }
    for (ItemStack itemStack : player.getInventory().getArmorContents()) {
        player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
    }
    

    在 for 循环中,它们只遍历库存中的物品,而不是插槽。

    【讨论】:

    • 我没有使用的代码在找到任何空槽时不会返回 null。还是谢谢!
    • 为什么不只测试 null,if(itemStack == null) continue; 而不是用更多的代码行来逃避 null。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2017-05-14
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多