> For the complete documentation index, see [llms.txt](https://docs.quickclient.cc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.quickclient.cc/game/inventory.md).

# Инвентарь и предметы

Слоты инвентаря, поиск предметов и свойства отдельного предмета.

`inventory()` показывает содержимое инвентаря игрока. С его помощью можно найти жемчуг, посчитать яблоки или проверить откат предмета.

Слоты пронумерованы так же, как в игре: `0..8` хотбар, `9..35` основной инвентарь, `36..39` броня, `40` левая рука. Чтобы не запоминать эти числа, есть константы: `Inventory.HOTBAR_END = 9`, `MAIN_END = 36`, `ARMOR_END = 40`, `OFFHAND = 40`, `SIZE = 41`.

```java
int pearls = inventory().findHotbar("ender_pearl");
if (pearls >= 0 && inventory().cooldown("ender_pearl") == 0f) {
    slots().using(pearls, () -> interaction().useItem(false));
}
```

В этом примере скрипт ищет жемчуг в хотбаре и, если откат прошёл, ненадолго берёт его в руку и бросает.

## Inventory

| Метод                 | Тип       | Описание                                                                                   |
| --------------------- | --------- | ------------------------------------------------------------------------------------------ |
| `slot(index)`         | `Item`    | предмет в слоте `0..40`; для пустого или несуществующего слота возвращается пустой предмет |
| `selected()`          | `int`     | какой слот хотбара выбран сейчас                                                           |
| `held()`, `offhand()` | `Item`    | что в руках                                                                                |
| `armor(part)`         | `Item`    | броня: `Entity.HEAD`, `CHEST`, `LEGS`, `FEET`                                              |
| `find(id)`            | `int`     | первый слот с таким предметом или `-1`; префикс `minecraft:` можно не писать               |
| `findHotbar(id)`      | `int`     | то же, но поиск только в хотбаре                                                           |
| `count(id)`           | `int`     | сколько таких предметов во всём инвентаре                                                  |
| `free()`              | `int`     | сколько пустых слотов в основном инвентаре                                                 |
| `cooldown(id)`        | `float`   | сколько тиков осталось до конца отката, из-за которого иконка предмета белеет              |
| `cooldown(item)`      | `float`   | то же, но по `Item`                                                                        |
| `container()`         | `boolean` | открыт контейнер, а не собственный инвентарь                                               |
| `containerId()`       | `int`     | номер открытого окна; у собственного инвентаря `0`                                         |

Сменить слот в руке или надеть броню можно через методы со страницы [Слоты и броня](/actions/slots.md). Клики по сундуку описаны на странице [Контейнеры и экраны](/game/containers.md).

## Item

`Item` хранит копию предмета на момент запроса. Если предмет в слоте потом поменяется, копия останется прежней.

| Метод                     | Тип        | Описание                                                                     |
| ------------------------- | ---------- | ---------------------------------------------------------------------------- |
| `empty()`                 | `boolean`  | слот пустой                                                                  |
| `id()`                    | `String`   | например `"minecraft:diamond_sword"`                                         |
| `key()`                   | `String`   | id без `minecraft:`                                                          |
| `is(value)`               | `boolean`  | сравнить id, префикс `minecraft:` можно не писать                            |
| `name()`                  | `String`   | имя без цветов и форматирования                                              |
| `renamed()`               | `boolean`  | предмет переименован                                                         |
| `count()`                 | `int`      | сколько штук в стопке                                                        |
| `maxCount()`              | `int`      | сколько помещается в один слот                                               |
| `stackable()`             | `boolean`  | складывается в стопку                                                        |
| `damage()`, `maxDamage()` | `int`      | сколько прочности уже потрачено и сколько её всего; у неломающихся `0`       |
| `durability()`            | `float`    | сколько прочности осталось, 0..1; у неломающихся и пустых `1`                |
| `unbreakable()`           | `boolean`  | у предмета стоит метка «неразрушимый»                                        |
| `food()`                  | `boolean`  | предмет можно съесть; зелья и молоко сюда не входят                          |
| `tool()`                  | `boolean`  | кирка, топор, лопата, мотыга, ножницы или меч                                |
| `armorPiece()`            | `boolean`  | надевается в слот брони                                                      |
| `armor()`, `toughness()`  | `float`    | защита и твёрдость брони из атрибутов; у остальных предметов `0`             |
| `enchanted()`             | `boolean`  | есть чары                                                                    |
| `enchant(id)`             | `int`      | уровень чар или `0`, если их нет; у книги учитываются хранящиеся на ней чары |
| `enchants()`              | `String[]` | id всех чар                                                                  |
| `lore()`                  | `String[]` | строки описания (лора) без форматирования                                    |

Если `Item` получен в этом же тике, его можно сразу передать в `Render2D.drawItem(item, …)`. Отрисовка найдёт настоящий предмет, поэтому голова будет со скином, зелье со своим цветом, а шалкер с содержимым.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.quickclient.cc/game/inventory.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
