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

  • Автор темы Автор темы iD3LSY
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

iD3LSY

Активный участник
Пользователь
Баллы
76
Не знаю почему, но как бы я не старался, как бы я не потел, код работает на половину.
Java:
if(player.getInventory().contains(soap) {
    player.getInventory().removeItem(soap);
    player.sendMessage(prefix + " " + getConfig().getString("messages.soapused").replace('&', '§'));
}
Дело в том, что если у игрока в инвентаре более 1 soap, то код не срабатывает.

Когда ставлю вместо ItemStack - Material, всё работает без условных ограничений количеством.
 
А у тебя предмет каким либо образом изменён? Meta || Name ?
 
Разве name не благодаря meta?)

Name кастомный.
Тоже на этом парился.
Item Stack имеет параметр Ammount (количество) и этот параметр так же учитывается ведром, поэтому стаки с кол-вом отличным от того что ты указал не будут удалены
 
Тоже на этом парился.
Item Stack имеет параметр Ammount (количество) и этот параметр так же учитывается ведром, поэтому стаки с кол-вом отличным от того что ты указал не будут удалены
Хмм.. Можно как либо всё же обойти эту фигню с проверкой на количество?
 
Последнее редактирование:
Хмм.. Можно как либо всё же обойти эту фигню с проверкой на Ammount?
что именно тебе нужно от кода?
очистить определенный слот или удалить все soap из инвентаря? во всех слотах? или что то третье
 
что именно тебе нужно от кода?
очистить определенный слот или удалить все soap из инвентаря? во всех слотах? или что то третье
Если у меня в инвентаре есть soap (не важно кол-во. минимум 1), то его кол-во уменьшается на 1, а потом выполняется код удаления эффекта.
 
Последнее редактирование:
Если у меня в инвентаре есть soap (не важно кол-во. минимум 1), то он (soap) удаляется в размере 1шт., а потом выполняется код удаления эффекта.

Java:
ItemStack whatShoudRemove = new ItemStack (Material.APPLE);
if (p.getInventory().containsAtLeast(whatShoudRemove, 1)){   
    for (int i = 0; i<=36; i++){
        if (p.getInventory().getItem(i)==null) continue; //пропускаем код если item null а то nullpointer
        if (p.getInventory().getItem(i).getType()==whatShoudRemove.getType()){ //сравниваем тип
            if (p.getInventory().getItem(i).getAmount()==1){ //количество
                p.getInventory().setItem(i, new ItemStack(Material.AIR)); //удаляем вещь из этого слота. если использовать remove то он удалит все вещи с кол-вом 1
            } else if (p.getInventory().getItem(i).getAmount()>1){ //если кол-во больше 1 то просто уменьшаем его
                p.getInventory().getItem(i).setAmount(p.getInventory().getItem(i).getAmount()-1);
            }
        }
    }
}
 
Java:
ItemStack whatShoudRemove = new ItemStack (Material.APPLE);
if (p.getInventory().containsAtLeast(whatShoudRemove, 1)){
    for (int i = 0; i<=36; i++){
        if (p.getInventory().getItem(i)==null) continue; //пропускаем код если item null а то nullpointer
        if (p.getInventory().getItem(i).getType()==whatShoudRemove.getType()){ //сравниваем тип
            if (p.getInventory().getItem(i).getAmount()==1){ //количество
                p.getInventory().setItem(i, new ItemStack(Material.AIR)); //удаляем вещь из этого слота. если использовать remove то он удалит все вещи с кол-вом 1
            } else if (p.getInventory().getItem(i).getAmount()>1){ //если кол-во больше 1 то просто уменьшаем его
                p.getInventory().getItem(i).setAmount(p.getInventory().getItem(i).getAmount()-1);
            }
        }
    }
}
Спасибо, Fenix78563
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх