Перейти до вмісту

Фон GUI у DeluxeMenus з Nexo або Oraxen

Власні екрани меню в Minecraft – це трюк: фонова картинка є одним символом у назві меню. Nexo та Oraxen називають такі символи гліфами. У цьому посібнику – конфіг гліфа для обох плагінів, плейсхолдери зсуву, що ставлять картинку на місце, і як зв’язати все це з 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, висота ніколи не має бути меншою за 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 вміщується в цей ліміт за будь-якої кількості рядків.

Джерела

Перевірено за офіційною документацією: