Ниже - рабочие способы, когда нужно очистить инвентарь полностью или убрать конкретные предметы. Сразу выберу подход под ваш запрос: через команду, через плагины (Spigot/Paper) или через логику предмета.


Вариант 1. Полная очистка командой в игре

Команда /clear умеет убирать предметы из инвентарь игрока.

Очистить инвентарь игрока целиком

  • Очистка инвентаря выполняющего игрока:
clear

или

clear @s
  • Очистка инвентаря конкретного игрока:
clear Alice

Удалить только определенный предмет

Если нужно убрать не все вещи, а конкретный предмет:

clear Alice minecraft:wool

Можно указать максимальное количество, которое будет удалено:

clear @a minecraft:wool 1

Важно: формат идентификаторов отличается по версиям. В современных версиях используется minecraft:идентификатор, а не старые числовые data/ID.

Источник по синтаксису и аргументам: Minecraft Wiki - команда /clear.


Вариант 2. Очистка инвентаря через Java-плагин (Spigot/Paper)

Если вы разрабатываете плагин и хотите управлять предметами через код, самый надежный путь - работать с коллекцией дропов в событиях или напрямую править инвентарь.

Убрать предмет из дропов при смерти (пример)

Когда нужно удалить конкретный предмет, который иначе выпал бы после смерти:

@EventHandler
public void onDeath(PlayerDeathEvent e) {
    e.getEntity().getInventory().remove(Material.BARRIER);
}

В обсуждениях также встречается подход через event.getDrops(), если вы хотите убрать именно выпадающие предметы:

@EventHandler
public void onDeath(PlayerDeathEvent e) {
    e.getDrops().removeIf(item -> item.getType() == Material.BARRIER);
}

Как удалять конкретные варианты предметов (метаданные/NBT)

Чтобы удаление срабатывало только для нужного варианта, сравнивайте больше параметров, чем просто Material.

В примерных решениях используют проверку getItemDamage() и сравнение тегов:
- сопоставление meta/damage
- проверка совпадения NBT через ItemStack.areItemStackTagsEqual(...)


Вариант 3. Нажатием ПКМ: удалить N предметов у игрока

Если вы делаете кастомный item и по ПКМ хотите удалить 10 штук из инвентарь, логика обычно такая:
1) находим, сколько нужного типа предметов есть в player.inventory.mainInventory
2) если в сумме 10 и больше - удаляем ровно 10

В примерах для этого использовался подход через consumeInventoryItem, который “съедает” предметы из инвентаря (по сути уменьшает количество до нужного остатка).

Пример логики на ПКМ: удалить 10 предметов одного типа

Ниже упрощенный вариант идеи из практических решений:

@Override
public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {
    Item findItem = Items.stick;

    int total = 0;
    for (ItemStack stack : player.inventory.mainInventory) {
        if (stack != null && stack.getItem() == findItem) {
            total += stack.stackSize;
        }
        if (total >= 10) break;
    }

    if (total >= 10) {
        for (int j = 0; j < 10; j++) {
            player.inventory.consumeInventoryItem(findItem);
        }
    }

    return super.onItemRightClick(is, world, player);
}

Если предмет должен удаляться с учетом конкретного варианта (meta, зачарования, NBT), то вместо сравнения только по getItem() нужно сравнивать метадату и теги, как в примерах с getItemDamage() и areItemStackTagsEqual(...).


Частые ошибки

Проблема Почему так выходит Как исправить
Команда /clear не удаляет то, что ожидаете Неправильный формат предмета или неверный id для вашей версии Используйте minecraft:... и точный идентификатор предмета
Удаляете “не тот” вариант предмета Сравниваете только Material/тип, но игнорируете метаданные или NBT Делайте сравнение через meta/теги или удаляйте по точному NBT
В цикле удаление “ломается” Ошибка счетчика или попытка удалить больше/меньше чем нужно Сначала посчитайте, затем удаляйте фиксированное число (например, 10)
В коде ничего не меняется Вы удаляете предмет из коллекции, где его нет (например, из дропов, а нужно править инвентарь) Удаляйте из правильного объекта: inventory или event.getDrops()

Полезные ссылки

  • Minecraft Wiki: команда /clear - https://minecraft.fandom.com/ru/wiki/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8/clear
  • Пример удаления N предметов через ПКМ (обсуждение с consumeInventoryItem) - https://forum.mcmodding.ru/threads/kak-zabirat-iz-inventarja-igroka-srazu-neskolko-predmetov-odnogo-tipa.8737/
  • Удаление предметов с data/метадатой (обсуждение для вариантов предметов) - https://rubukkit.org/threads/kak-udalit-s-inventarja-igroka-predmet-s-data.172305/
  • Удаление предмета при смерти через событие (пример для Spigot/Paper) - https://spigotmc.ru/threads/kak-udalit-predmet-iz-inventarja-igroka-pri-ego-smerti.7729/