Помогите Получение количества определенного предмета

ВukkitPrоfi

Активный участник
Пользователь
Баллы
76
Нужно получить кол-во определенного предмета, находящегося в инвентаре. Использую PlaceholderAPI и пишу для него expansion:

Методом гугления смог нарисовать вот такой очень крутойговно код:
PHP:
                String amount = "";
                for (ItemStack item : player.getInventory()) {
                if (item == null)
                return "0";
                if (item.getType() == Material.DIAMOND)
                amount += item.getAmount();
                return amount;
             }
         return "";

Почти все работает, но если в инвентаре больше стака, то кол-во больше не увеличивается, т.е. максимально 64 может выдать, как исправить?
 
Последнее редактирование:
Попробуй так
Код:
int i = 0;
for (ItemStack is : inventory.getContents()) {
   if (is.getType() == Material.DIAMOND) {
        i+=is.getAmount();
   }
}
 
Код:
    public static int calc(Player p, ItemStack s) {
        int count = 0;
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.isSimilar(s)) {
                count += stack.getAmount();
            }
        }
        return count;
    }
 
Код:
Player player = //игрок
ItemStack item = //предмет
StreamSupport.stream(player.getInventory().spliterator(), false)
        .filter(item::isSimilar)
        .mapToInt(ItemStack::getAmount)
        .sum();
 
Назад
Верх