1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ВukkitPrоfi, 9 фев 2019.

  1. Автор темы
    ВukkitPrоfi

    В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 может выдать, как исправить?
     
    Последнее редактирование: 13 фев 2019
  2. Абсик

    Абсик Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Попробуй так
    Код:
    int i = 0;
    for (ItemStack is : inventory.getContents()) {
       if (is.getType() == Material.DIAMOND) {
            i+=is.getAmount();
       }
    }
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        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;
        }
     
  4. AbstractCoder

    AbstractCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Код:
    Player player = //игрок
    ItemStack item = //предмет
    StreamSupport.stream(player.getInventory().spliterator(), false)
            .filter(item::isSimilar)
            .mapToInt(ItemStack::getAmount)
            .sum();
     

Поделиться этой страницей