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

Власний фон GUI у DeluxeMenus з ItemsAdder

У Minecraft немає налаштування для фонової картинки меню, проте на багатьох серверах меню-скрині виглядають як власні екрани. Секрет – font image у назві меню: ItemsAdder перетворює твій PNG на символ, а від’ємні відступи пересувають цей символ поверх скрині. У цьому посібнику ми крок за кроком налаштуємо це для DeluxeMenus.

Оновлено:

Як працює текстурне GUI

Меню-скриня показує свою назву в лівому верхньому куті. Назва – це текст, а текст може містити символи із серверного ресурспаку. ItemsAdder вміє перетворити будь-який PNG на такий символ, який називається font image. Встав великий font image у назву, і клієнт намалює його поверх екрана скрині.

Ще дві деталі допомагають усе вирівняти. Від’ємний відступ (offset) зсуває курсор ліворуч перед зображенням, тож картинка починається від лівого краю скрині, а не після відступу назви. Параметр y_position у font image пересуває його вгору чи вниз, доки він не накриє все меню.

Слоти залишаються звичайними слотами. Там, де на твоїй картинці намальована кнопка, у меню є порожній клікабельний слот з material: air і власними діями при кліку.

Що тобі потрібно

  • DeluxeMenus і PlaceholderAPI на сервері Spigot або Paper.
  • ItemsAdder, який збирає ресурспак і надає плейсхолдери %img_…%.
  • Робоча доставка ресурспаку, щоб гравці справді його завантажували (ItemsAdder пропонує self-hosting та інші варіанти хостингу).
  • Фоновий PNG. Minecraft не дозволяє гліфи шрифту, більші за 256×256 пікселів, тож картинка має вміститися в цей розмір.

Крок 1: Створи фонову картинку

Спроєктуй меню в конструкторі GUI: вибери кількість рядків, тему чи шаблон і намалюй великі кнопки на кілька слотів. Як експорт вибери ItemsAdder, введи свій namespace (наприклад mymenus) і назву меню (наприклад shop).

Експортований PNG має ширину 256 пікселів. Його висота залежить від кількості рядків: від 164 пікселів для одного рядка до 254 пікселів для шести. Додатковий простір навколо скрині дозволяє рамкам і декору виходити за звичайний контур меню.

Крок 2: Зареєструй font image в ItemsAdder

Скопіюй PNG у свій namespace і додай запис font_images. Ось що конструктор GUI експортує для меню на шість рядків:

plugins/ItemsAdder/contents/mymenus/configs/gui_shop.yml
info:
  namespace: mymenus
font_images:
  gui_shop:
    path: gui/shop
    show_in_gui: false
    suggest_in_command: false
    scale_ratio: 254
    y_position: 45

Сама картинка лежить у plugins/ItemsAdder/contents/mymenus/resourcepack/assets/mymenus/textures/gui/shop.png.

  • scale_ratio – висота, з якою малюється зображення. Вкажи реальну висоту PNG у пікселях, щоб нічого не розтягувалося.
  • y_position пересуває зображення по вертикалі. ItemsAdder вимагає, щоб це значення було меншим або рівним scale_ratio, бо гра не дозволяє більше.
  • show_in_gui: false не дає фону потрапити в список емодзі ItemsAdder.

Крок 3: Встав зображення в назву меню DeluxeMenus

DeluxeMenus обробляє плейсхолдери PlaceholderAPI у menu_title. ItemsAdder надає %img_<name>% для зображення та %img_offset_<pixels>% для порожнього простору, який може бути від’ємним.

plugins/DeluxeMenus/gui_menus/shop.yml
menu_title: '&f%img_offset_-48%%img_gui_shop%%img_offset_-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'
  1. &f на початку зберігає справжні кольори картинки. Без нього зображення забарвлюється в колір назви.
  2. %img_offset_-48% зсуває курсор на 48 пікселів ліворуч перед картинкою. Конструктор GUI використовує це значення для свого полотна: 8 пікселів на відступ назви скрині плюс 40 пікселів поля, яке він додає з кожного боку.
  3. %img_gui_shop% – це сам фон.
  4. Другий відступ повертає курсор назад, тож &8Shop пишеться поверх картинки там, де має бути назва. Його значення залежить від ширини твоєї картинки; конструктор GUI рахує його за тебе.

Якщо в конструкторі GUI намалювати назву прямо на картинці, назва закінчується після плейсхолдера фону, і другого відступу немає.

Крок 4: Зареєструй меню й перезбери пак

DeluxeMenus завантажує лише меню, перелічені в його config.yml:

plugins/DeluxeMenus/config.yml
gui_menus:
  shop:
    file: shop.yml
  1. Виконай /iazip, щоб ItemsAdder перезібрав ресурспак із новим зображенням.
  2. Виконай /dm reload. Відкрий меню один раз через /dm open shop, щоб перевірити.
  3. register_command: true реєструє /shop як справжню команду, але лише під час запуску сервера. Після додавання нового меню один раз перезапусти сервер.
  4. Перезайди, прийми ресурспак і відкрий меню.

Типові помилки та рішення

Що ти бачишПричина та рішення
Назва показує %img_gui_shop% як текстНемає PlaceholderAPI або назва неправильна. Плейсхолдер використовує назву font image з конфігу, без namespace.
Порожній квадрат або не той символ замість картинкиПак не перезібрано, або в гравця старий пак. Виконай /iazip і перезайди.
У деяких гравців картинки немає взагаліВони відмовилися від серверного ресурспаку. Перевір хостинг паку та налаштування сервера в клієнті.
Картинка зсунутаПерший відступ або y_position не відповідає полям твого PNG. Експортуй ще раз замість того, щоб вгадувати числа.
Картинка сіра або темнішаПеред зображенням немає &f.
/shop – невідома командаСервер не перезапускали після додавання меню, або меню немає в config.yml.
ItemsAdder не приймає font imagey_position більший за scale_ratio, або зображення більше за 256×256.

Часті запитання

Чи потрібно гравцям щось завантажувати для власного фону GUI?

Так, серверний ресурспак, який збирає ItemsAdder. Без нього в назві видно квадратик-заглушку або нічого. ItemsAdder може надсилати пак автоматично, коли гравці заходять.

Чому назва в DeluxeMenus показує %img_…% як текст?

Плейсхолдер не замінюється. Перевір, що PlaceholderAPI встановлено, ItemsAdder завантажено, а назва після img_ точно збігається з назвою font image у твоєму конфігу.

Чи можна використати той самий фон для меню з меншою кількістю рядків?

Лише якщо картинка відповідає кількості рядків. Скриня на три рядки нижча за скриню на шість, тож їй потрібен власний PNG і власний scale_ratio. Конструктор GUI експортує правильну висоту для будь-якої кількості рядків.

Чи працює це без ItemsAdder?

Той самий трюк працює з гліфами Nexo або Oraxen. Без жодного плагіна ресурспаків усе одно можна зібрати охайне меню з кольорових скляних панелей – конструктор GUI експортує його з варіантом «Немає».

Джерела

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