Как глиф становится фоном меню
Меню-сундук выводит заголовок в левом верхнем углу, и этот заголовок может содержать символы из серверного ресурспака. Глиф – как раз такой символ, нарисованный из твоего PNG. Поставь большой глиф в заголовок, и клиент нарисует его поверх всего экрана сундука.
Положение задают два значения. Отрицательный сдвиг (shift) двигает курсор влево перед глифом, чтобы картинка начиналась от края сундука, а не от отступа заголовка. Параметр ascent глифа двигает его по вертикали, пока он не накроет меню. Слоты остаются настоящими слотами: там, где на картинке кнопка, в меню стоит пустой слот с material: air, который всё равно выполняет действия при клике.
Если у тебя ItemsAdder, читай версию этого гайда для ItemsAdder. Идея та же, отличаются только конфиг и названия плейсхолдеров.
Что тебе понадобится
- DeluxeMenus и PlaceholderAPI на сервере. DeluxeMenus обрабатывает плейсхолдеры PlaceholderAPI в
menu_title. - Nexo или Oraxen – они собирают ресурспак и дают плейсхолдеры глифов и сдвигов.
- Для Oraxen: глифы в заголовках инвентаря работают нативно на Paper 1.21.2 и новее. Старым серверам, по документации Oraxen, нужен PacketEvents.
- Фоновый PNG размером не больше 256×256 пикселей. Текстуры крупнее для одного глифа не допускаются.
Шаг 1: нарисуй фон
Собери меню в конструкторе GUI: выбери число рядов, шаблон или тему и нарисуй большие кнопки на несколько слотов. В экспорте выбери Nexo или Oraxen, задай namespace (например, mymenus) и имя меню (например, shop).
PNG шириной 256 пикселей, а высотой от 164 пикселей (один ряд) до 254 пикселей (шесть рядов). Поле вокруг сундука даёт рамкам место, чтобы выступать за обычный контур меню.
Шаг 2a: конфиг глифа в Nexo
Nexo читает глифы из любого YAML-файла в своей папке glyphs. Текстура указывается как namespace:path, здесь это PNG по пути plugins/Nexo/pack/assets/mymenus/textures/gui/shop.png:
gui_shop:
texture: mymenus:gui/shop
ascent: 45
height: 254height– высота отрисовки. Укажи реальную высоту PNG в пикселях.ascentподнимает глиф вверх. По словам Nexo, height никогда не должен быть меньше ascent.- Плейсхолдеры:
%nexo_gui_shop%для глифа и%nexo_shift_<pixels>%для пустого места, которое может быть отрицательным.
Шаг 2b: конфиг глифа в Oraxen
Oraxen читает глифы из plugins/Oraxen/glyphs/. Путь к текстуре указывается относительно pack/textures/, поэтому PNG кладётся в plugins/Oraxen/pack/textures/gui/shop.png:
gui_shop:
texture: gui/shop
ascent: 45
height: 254- Oraxen требует, чтобы
heightбыл больше или равенascent; этого требует сам Minecraft. - Плейсхолдер глифа –
%oraxen_gui_shop%. Для сдвигов есть два плейсхолдера:%oraxen_shift_<pixels>%двигает вправо,%oraxen_neg_shift_<pixels>%– влево. Каждый поддерживает до 2047 пикселей. - Есть ключ
char, чтобы выбрать символ самому, но он необязателен.
Шаг 4: зарегистрируй меню и перезагрузи
gui_menus:
shop:
file: shop.yml- Пересобери пак:
/nexo reload(или/nexo reload pack) для Nexo,/oraxen reload allдля Oraxen. - Выполни
/dm reloadи проверь через/dm open shop. - Один раз перезапусти сервер. DeluxeMenus регистрирует
/shopизregister_command: trueтолько при запуске. - Перезайди, чтобы получить новый ресурспак.
Типичные ошибки и их решение
| Что ты видишь | Причина и решение |
|---|---|
%nexo_gui_shop% или %oraxen_gui_shop% текстом | Нет PlaceholderAPI, или ID глифа в плейсхолдере не совпадает с ключом в файле глифа. |
| Пустой квадрат или не тот символ | Пак не пересобран или у игрока старый пак. Перезагрузи плагин и перезайди. |
| Глиф Oraxen пропадает только в заголовках меню | Сервер старше Paper 1.21.2, а PacketEvents не установлен. |
| Картинка смещена | Сдвиг или ascent не совпадает с PNG. Экспортируй заново из того же дизайна. |
| Картинка темнее, чем PNG | Перед первым плейсхолдером не хватает &f. |
| Глиф отклоняется при загрузке | ascent больше height, или PNG больше 256×256. |
/shop ничего не делает | Меню нет в config.yml, или сервер не перезапускали после его добавления. |