Як працює текстурне 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 експортує для меню на шість рядків:
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>% для порожнього простору, який може бути від’ємним.
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'&fна початку зберігає справжні кольори картинки. Без нього зображення забарвлюється в колір назви.%img_offset_-48%зсуває курсор на 48 пікселів ліворуч перед картинкою. Конструктор GUI використовує це значення для свого полотна: 8 пікселів на відступ назви скрині плюс 40 пікселів поля, яке він додає з кожного боку.%img_gui_shop%– це сам фон.- Другий відступ повертає курсор назад, тож
&8Shopпишеться поверх картинки там, де має бути назва. Його значення залежить від ширини твоєї картинки; конструктор GUI рахує його за тебе.
Якщо в конструкторі GUI намалювати назву прямо на картинці, назва закінчується після плейсхолдера фону, і другого відступу немає.
Крок 4: Зареєструй меню й перезбери пак
DeluxeMenus завантажує лише меню, перелічені в його config.yml:
gui_menus:
shop:
file: shop.yml- Виконай
/iazip, щоб ItemsAdder перезібрав ресурспак із новим зображенням. - Виконай
/dm reload. Відкрий меню один раз через/dm open shop, щоб перевірити. register_command: trueреєструє/shopяк справжню команду, але лише під час запуску сервера. Після додавання нового меню один раз перезапусти сервер.- Перезайди, прийми ресурспак і відкрий меню.
Типові помилки та рішення
| Що ти бачиш | Причина та рішення |
|---|---|
Назва показує %img_gui_shop% як текст | Немає PlaceholderAPI або назва неправильна. Плейсхолдер використовує назву font image з конфігу, без namespace. |
| Порожній квадрат або не той символ замість картинки | Пак не перезібрано, або в гравця старий пак. Виконай /iazip і перезайди. |
| У деяких гравців картинки немає взагалі | Вони відмовилися від серверного ресурспаку. Перевір хостинг паку та налаштування сервера в клієнті. |
| Картинка зсунута | Перший відступ або y_position не відповідає полям твого PNG. Експортуй ще раз замість того, щоб вгадувати числа. |
| Картинка сіра або темніша | Перед зображенням немає &f. |
/shop – невідома команда | Сервер не перезапускали після додавання меню, або меню немає в config.yml. |
| ItemsAdder не приймає font image | y_position більший за scale_ratio, або зображення більше за 256×256. |