GUItem - это довольно специфический, но невероятно полезный ресурспак для Майнкрафт, который решает одну из главных проблем при создании кастомных меню и интерфейсов. Если вы когда-либо пытались сделать красивый GUI для сундука, печки или верстака на ванильном сервере или в одиночной игре без модов, то знаете эту боль: обычно приходится использовать уродливые стеклянные панели (Glass Panes) или головы игроков, чтобы просто закрыть пустые слоты и нарисовать какой-то фон. GUItem меняет этот подход в корне.
Суть проекта в том, что он добавляет специальные модели предметов (item models), которые накладываются прямо на слоты инвентаря, имитируя полноценный графический интерфейс. При этом важный момент: ресурспак не заменяет существующие текстуры или модели ванильной игры. Всё работает через кастомные модели, что делает его совместимым с другими паками и не ломает привычный вид игры. Проект распространяется с открытым исходным кодом под лицензией MIT и поддерживает версии Minecraft Java Edition от 1.21.2 до 1.21.10.
Как это работает и зачем нужно
Вместо того чтобы городить огород из стекла и рамок, вы используете предметы с заранее подготовленными моделями, которые визуально перекрывают слоты контейнера. Это позволяет рисовать полноценные кнопки, иконки, фоны и рамки прямо внутри стандартного окна инвентаря. Для серверов это просто находка, потому что позволяет создавать уникальные меню настроек, магазины или квестовые интерфейсы без установки модов на клиент игроков - достаточно просто выдать им этот ресурспак (или заставить сервер отправлять его автоматически).
Система построена на слоях. Модели делятся на категории в зависимости от того, какой элемент GUI они представляют, и накладываются снизу вверх:
- Background - самый нижний слой. Это фон, который не несет важной информации, его можно игнорировать при чтении интерфейса.
- Field - слой для объявления секций или заливки основным цветом.
- Pattern - визуальные элементы, с которыми можно взаимодействовать или которые несут implicit информацию.
- Slot - слоты, куда можно вставлять, забирать или просматривать предметы.
- Button - кнопки. При взаимодействии с ними что-то происходит. Важно, что если действие недоступно, у кнопки должно быть состояние-заглушка.
- Icon - иконки. Это сжатая информация, символы или графика.
- Foreground - верхний слой. Любая информация, которая должна быть видна всегда, даже если она перекрывает предметы.
Для удобства в паке есть шаблонные модели (template models). Вам не нужно создавать всё с нуля - достаточно просто подставить свои текстуры в указанные переменные, и вы получите готовый элемент интерфейса. Также есть готовый пример item model definition, который можно использовать как образец или сразу в деле.
Пример использования
Чтобы получить, например, кнопку с галочкой (check mark button), используется команда /give с указанием кастомной модели и данных. Вот как это выглядит:
/give @s minecraft:recovery_compass[minecraft:item_model='guitem:gui_stack',minecraft:custom_model_data={"strings":["","","","","button","check_mark",""]}]
Здесь видно, что управление происходит через custom_model_data, где в массиве строк указываются слои и типы элементов. Это дает гибкость: можно комбинировать разные части GUI, накладывать их друг на друга и создавать сложные композиции.
Особенности элементов GUI
Большинство элементов (pieces) рассчитаны на то, чтобы точно вписываться в размер одного слота. Но есть и такие, которые перекрывают сразу несколько слотов - они представляют собой цельные элементы интерфейса или служат фоном/передним планом для остальных.
Важный нюанс: с oversized (увеличенными) предметами нужно обращаться осторожно. У них могут быть свои правила перекрытия других предметов, и иногда это приводит к визуальным артефактам.
Технические детали и совместимость
Ресурспак использует namespace guitem, а атласы текстур лежат в директории gui_item. Это важно знать, если вы хотите интегрировать его в свой проект или дополнить своими текстурами.
Начиная с версии Minecraft 1.21.6, в определении модели предмета появился параметр oversized_in_gui. Он контролирует, может ли модель выходить за пределы слота (true) или должна обрезаться по его размеру (false, по умолчанию). Это критически важно для правильного отображения больших элементов интерфейса.
Ещё один совет от автора: попробуйте комбинировать GUItem с кастомными шрифтами. Хотя название контейнера нельзя изменить без переоткрытия UI, шрифты отлично подходят для рисования статического контента, а модели предметов - для динамического. Вместе они дают полный контроль над внешним видом меню.
Известные проблемы
Как и любой проект, тут есть свои шероховатости:
- Модели предметов рендерятся слегка затемненными. Похоже, это баг движка, который был исправлен в снапшотах Minecraft 26.1 вместе с изменениями алгоритма lightmap.
- У oversized моделей иногда бывает меньшая область UV, что приводит к неправильному масштабированию текстуры.
- Некоторые большие модели теряют верхний ряд пикселей при масштабировании GUI.
Заключение
GUItem - это инструмент для тех, кто серьезно занимается созданием кастомного контента в Майнкрафт: разработчиков серверов, создателей карт и датапаков. Он позволяет поднять качество пользовательского интерфейса на новый уровень, избавившись от костылей в виде стеклянных панелей. Проект пока что нишевый (около полутора тысяч загрузок на Modrinth), но это тот случай, когда качество важнее популярности. Если вам нужно сделать красивое меню для сундука или сложный интерфейс на ванилле, скачать ресурспак GUItem определенно стоит. Он дает ту свободу, которой так не хватало в стандартной игре.

