Перейти к содержимому

Фон GUI в DeluxeMenus с Nexo или Oraxen

Свои экраны меню в Minecraft – это трюк: фоновая картинка – всего лишь один символ в заголовке меню. В Nexo и Oraxen такие символы называются глифами (glyphs). В этом гайде – конфиг глифа для обоих плагинов, плейсхолдеры сдвига, которые ставят картинку на место, и как связать всё это с DeluxeMenus.

Обновлено:

Как глиф становится фоном меню

Меню-сундук выводит заголовок в левом верхнем углу, и этот заголовок может содержать символы из серверного ресурспака. Глиф – как раз такой символ, нарисованный из твоего 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:

plugins/Nexo/glyphs/gui_shop.yml
gui_shop:
  texture: mymenus:gui/shop
  ascent: 45
  height: 254
  • height – высота отрисовки. Укажи реальную высоту 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:

plugins/Oraxen/glyphs/gui_shop.yml
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, чтобы выбрать символ самому, но он необязателен.

Шаг 3: заголовок меню DeluxeMenus

Заголовок собирается из цвета, сдвига влево, глифа, сдвига обратно и текста заголовка. Для Nexo:

plugins/DeluxeMenus/gui_menus/shop.yml
menu_title: '&f%nexo_shift_-48%%nexo_gui_shop%%nexo_shift_-201%&8Shop'
open_command: 'shop'
register_command: true
size: 54
items:
  button_1_buy:
    material: air
    slots: [10, 11, 19, 20]
    priority: 1
    click_commands:
      - '[openguimenu] shop_buy'

Для Oraxen меняется только заголовок, потому что у сдвигов влево свой плейсхолдер:

plugins/DeluxeMenus/gui_menus/shop.yml
menu_title: '&f%oraxen_neg_shift_48%%oraxen_gui_shop%%oraxen_neg_shift_201%&8Shop'
  1. &f сохраняет собственные цвета картинки, а не окрашивает её в цвет заголовка.
  2. Первый сдвиг двигает курсор на 48 пикселей влево: конструктор GUI считает 8 пикселей на отступ заголовка сундука плюс 40 пикселей поля своего холста.
  3. Второй сдвиг возвращает курсор, чтобы &8Shop оказался на картинке. Его значение зависит от ширины твоей картинки; конструктор GUI считает его сам.

В Nexo и Oraxen есть и теги MiniMessage вроде <glyph:gui_shop> и <shift:-48>. Конструктор GUI пишет форму %…%, потому что DeluxeMenus документирует для menu_title именно плейсхолдеры PlaceholderAPI.

Шаг 4: зарегистрируй меню и перезагрузи

plugins/DeluxeMenus/config.yml
gui_menus:
  shop:
    file: shop.yml
  1. Пересобери пак: /nexo reload (или /nexo reload pack) для Nexo, /oraxen reload all для Oraxen.
  2. Выполни /dm reload и проверь через /dm open shop.
  3. Один раз перезапусти сервер. DeluxeMenus регистрирует /shop из register_command: true только при запуске.
  4. Перезайди, чтобы получить новый ресурспак.

Типичные ошибки и их решение

Что ты видишьПричина и решение
%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, или сервер не перезапускали после его добавления.

Частые вопросы

Настройка для Nexo и Oraxen отличается?

Только в деталях. Nexo пишет текстуру как namespace:path и использует %nexo_shift_N% с отрицательными числами. Oraxen берёт путь относительно pack/textures/ и имеет %oraxen_neg_shift_N% для сдвига влево.

Почему мой глиф не отображается в заголовке DeluxeMenus?

Обычно плейсхолдер не подставляется (нет PlaceholderAPI или неверный ID глифа), ресурспак не пересобран или игрок не загрузил новый пак. С Oraxen на серверах старше Paper 1.21.2 для заголовков нужен PacketEvents.

Какая команда перезагрузки мне нужна?

Для Nexo – /nexo reload, которая перезагружает всё, или /nexo reload pack только для пака. Для Oraxen – /oraxen reload all. Потом /dm reload для файла меню.

Можно использовать текстуру больше 256×256 пикселей?

Одним глифом – нет. Minecraft ограничивает глифы размером 256×256 пикселей. Фон меню из конструктора GUI укладывается в этот лимит при любом числе рядов.

Источники

Сверено с официальной документацией: