Динамический текст внутри GUI-меню

Как рисовать текст прямо на интерфейсе меню — zTextGenerator + DeluxeMenus
1. Суть — почему «просто текст» не работает
В Minecraft не существует слоя «текст поверх меню». Плагины меню (DeluxeMenus, TrMenu, Nexo и любые другие) умеют выводить текст только в двух местах:
- Заголовок меню (
menu_title) — видно всегда, рисуется поверх всей сетки слотов; - Имя и лор предмета — видны только при наведении курсора (тултипы).
Поэтому карточка (паспорт, ID-карта) — это не текст и не предметы. Это одна большая PNG-картинка, добавленная в ресурспак как глиф (символ кастомного шрифта) и вставленная символом в заголовок меню. Заголовок рендерится поверх слотов — картинка накрывает меню целиком.
zTextGenerator — утилита, которая автоматизирует создание таких глифов: нарезку картинки, подбор кодпоинтов, конфиги шрифта и сдвиги.
Страница ресурса: zTextGenerator
2. Как это работает
Ресурспак может добавлять собственные шрифты. Каждый символ такого шрифта — глиф — это не буква, а любая PNG-картинка произвольного размера.
Пример регистрации глифа (на примере Nexo):
YAML:
gov_card:
texture: gov/card # картинка карточки, например 256x230 px
ascent: 0
height: 230Ключевой момент —
ascent: 0: глиф «свисает» вниз с базовой линии заголовка и накрывает зону слотов.Дальше символ вставляется в заголовок меню DeluxeMenus:
YAML:
menu_title: "\uE100"Что получается в итоге:
- картинка карточки рисуется поверх всего меню;
- голова игрока и кнопки — обычные предметы DeluxeMenus на слотах под картинкой, видны через прозрачные «окна» в текстуре;
- клики работают по слотам как обычно;
- «Revision: 1» сверху — обычный текст заголовка (в текстуре карточки сверху оставлен прозрачный отступ).
Важно: конфиг сохранять в UTF-8, иначе символ
\uE100 побьётся.3. Совместимость с DeluxeMenus
Полная. Утилита работает только на стороне ресурспака — она ничего не знает о плагинах и не лезет в них. DeluxeMenus просто рендерит строку
menu_title как обычный текст, а глиф — это обычный символ. Любой плагин, выводящий текст, автоматически «поддерживает» ваши глифы.Схема:
Код:
zTextGenerator → файлы в ресурспак → символ \uE1xx в menu_title → DeluxeMenus рисует4. Что делает и чего НЕ делает zTextGenerator
Делает (закрывает всю ручную возню):
- нарезка PNG по свободным кодпоинтам;
- генерация JSON-конфига шрифта;
- выдача готовых символов (
\uE100,\uE101и т.д.); - расчёт negative space — сдвигающих пробелов для позиционирования.
НЕ делает:
- не создаёт меню, слоты, клики — это остаётся за DeluxeMenus;
- не выдаёт «готовое меню» — вы собираете его сами;
- не обновляет текст живьём — так работает сам Minecraft, это не ограничение утилиты.
5. Пошагово
- Генерация. Загружаете картинку карточки в zTextGenerator → получаете PNG-атлас, JSON шрифта и символ (например
\uE100). - Установка. Кладёте сгенерированные файлы в ресурспак (или интегрируете в Nexo).
- Заголовок. Вписываете символ в
menu_titleконфига DeluxeMenus. - Предметы. Ставите на слоты голову (
player_head) и кнопки под прозрачными окнами картинки. Клик-зоны — невидимые предметы (прозрачная модель). - Тултипы. Декоративным предметам ставите пустые имя/лор — тултипы рисуются поверх канвы и испортят картинку.
6. Динамический текст (ник, ID, дата)
Динамические значения — это отдельные текстовые глифы: пиксельный шрифт, нарезанный по буквам/цифрам. В заголовок они вставляются после фона, а negative space-глифы (прозрачные символы с отрицательной шириной) возвращают курсор влево к нужной позиции.
- Цифры, даты, ID — маппинг «значение → символ глифа» делается плейсхолдером (например, JS-плейсхолдер PlaceholderAPI).
- Ник — либо весь нужный алфавит глифами, либо, если билд DeluxeMenus парсит MiniMessage, проще:
YAML:
menu_title: "\uE100<font:gov:row2>%player_name%</font>"где
gov:row2 — копия шрифта с нужным смещением по вертикали.Важно: всё, что стоит в текстуре после динамического значения, добивается negative space до фиксированной ширины — иначе элементы уедут при другой длине ника.
7. Ограничения и подводные камни
- Заголовок рендерится один раз при открытии меню. Живого обновления нет — только переоткрытие.
- Ресурспак обязателен у игрока — без него вместо карточки будет мусорный текст.
- Длинные заголовки требуют 1.13+ (на старых версиях обрезались).
- Тултипы рисуются поверх канвы — следите за пустыми именами предметов.
8. Сравнение: вручную vs zTextGenerator
| Вручную (глифы сам) | Через zTextGenerator | |
|---|---|---|
| Скорость | Низкая | Высокая |
| Контроль над паком | Полный | Ограниченный |
| Negative space | Вручную | Автоматом |
| Зависимости | Нет | Сторонняя утилита |
Итог
zTextGenerator + DeluxeMenus — это ручной способ без ручной работы: утилита закрывает ресурспак-часть (глифы, кодпоинты, сдвиги), DeluxeMenus — серверную (слоты, клики, плейсхолдеры).
Для референсов ищите: «resource pack glyph GUI», «negative space font menu».