【发布时间】:2022-01-03 19:50:11
【问题描述】:
所以我有一个播放器和一个商店插件。
商店试图给玩家 16 羊毛。
如果玩家有 1 到 63 毛线(Ofc 有另一个可用的 inv 空间),我的方法应该返回 true。但是,如果玩家只有 63 个羊毛并且他的其他空间充满了其他材料,则方法应该返回 false。我这里的问题是当玩家在inv.getContents()中有1、1、1个羊毛物品堆叠时,我的方法不会正确计算。
这是我的代码:
public static boolean canStackItemToInventory(Player player, ItemStack item) {
Material type = item.getType();
int amount = item.getAmount();
if (type.equals(Material.BOW)) return false;
PlayerInventory inventory = player.getInventory();
int itemsNumber = 0;
for (ItemStack itemStack : inventory.getContents()) {
if (itemStack.getType()!=type) continue;
if (itemStack.getAmount()==itemStack.getMaxStackSize()) continue;
itemsNumber+=itemStack.getAmount();
}
itemsNumber+=amount;
return itemsNumber <= type.getMaxStackSize();
}
【问题讨论】: