Главная Статьи DeluxeMenus: как сделать меню сервера Minecraft без ковыряния YAML

DeluxeMenus: как сделать меню сервера Minecraft без ковыряния YAML

Собираем меню в DeluxeMenus от первого файла до рабочей кнопки: где лежат конфиги, как считать слоты, как повесить команду на клик и почему меню молча не открывается.

DeluxeMenus: как сделать меню сервера Minecraft без ковыряния YAML

Меню на сервере открывают чаще любой другой команды: /menu, донат, варпы, киты. DeluxeMenus делает такие меню без программиста, но платить приходится YAML-ом. Один лишний пробел, и меню молча не грузится. Ниже рабочий порядок: как собрать меню руками, где оно обычно ломается и как сделать то же быстрее.

Что поставить

  • DeluxeMenus под вашу версию ядра. Jar в папку plugins, затем полный перезапуск.
  • PlaceholderAPI. Без него не работают подстановки вроде %player_name% или баланса в описании кнопки.
  • Расширения PlaceholderAPI под нужные плейсхолдеры: /papi ecloud download Player, /papi ecloud download Vault, затем /papi reload.

Если плагины ставите впервые, сначала загляните в разбор обязательных плагинов: там порядок установки и частые конфликты.

Как устроены файлы

После первого запуска появятся plugins/DeluxeMenus/config.yml и папка gui_menus. Каждое меню лучше держать отдельным файлом в этой папке. Но плагин увидит файл только тогда, когда он прописан в config.yml:

gui_menus:
  main_menu:
    file: main_menu.yml
  shop_menu:
    file: shop_menu.yml

main_menu здесь внутреннее имя. По нему меню открывают командой /dm open main_menu и ссылаются на него из других меню.

Первое меню по шагам

  1. Создать файл plugins/DeluxeMenus/gui_menus/main_menu.yml.
  2. Задать заголовок, размер и команду, которой игрок будет открывать меню.
  3. Описать кнопки в разделе items.
  4. Прописать файл в config.yml, как показано выше.
  5. Выполнить /dm reload и сразу посмотреть консоль.
menu_title: '&8Главное меню'
open_command:
- menu
- m
size: 27
items:
  spawn:
    material: COMPASS
    slot: 11
    display_name: '&aНа спавн'
    lore:
    - '&7Телепорт на точку спавна'
    left_click_commands:
    - '[player] spawn'
    - '[close]'
  shop:
    material: EMERALD
    slot: 13
    display_name: '&eМагазин'
    left_click_commands:
    - '[openguimenu] shop_menu'
  profile:
    material: head-%player_name%
    slot: 15
    display_name: '&b%player_name%'
    lore:
    - '&7Баланс: &f%vault_eco_balance_formatted%'

Кнопка профиля покажет голову самого игрока и его баланс. Для этого и нужны расширения Player и Vault из списка выше.

Как считать слоты

Размер меню кратен девяти: от 9 до 54, то есть от одного до шести рядов. Слоты нумеруются с нуля, слева направо и сверху вниз. Формула простая: ряд × 9 + столбец, оба тоже с нуля.

РядСлотыСередина ряда
10–84
29–1713
318–2622
427–3531
536–4440
645–5349

Рамку из стекла не надо расписывать по кнопке на слот. Один предмет можно поставить сразу в несколько ячеек списком: slots: [0, 1, 2, 3, 4, 5, 6, 7, 8].

Что можно повесить на клик

ДействиеЧто делает
[player] командакоманда от имени игрока, пишется без слеша
[console] командакоманда от консоли: выдать предмет, группу, деньги
[message] текстсообщение игроку в чат
[openguimenu] имяоткрыть другое меню по внутреннему имени
[close]закрыть меню
[refresh]перерисовать меню, например после покупки

Списки действий разделены по кнопкам мыши: left_click_commands, right_click_commands и click_commands, который срабатывает на любой клик. Действия выполняются по порядку сверху вниз.

Кнопка только для VIP

Условие показа задаётся через view_requirement. Если условие не выполнено, кнопки не видно. Чтобы обычный игрок видел не пустоту, а замок с подсказкой, в тот же слот ставят вторую кнопку с меньшим приоритетом. В DeluxeMenus главнее та, у которой число priority меньше.

  vip_kit:
    material: DIAMOND
    slot: 22
    priority: 1
    display_name: '&6Набор VIP'
    view_requirement:
      requirements:
        is_vip:
          type: has permission
          permission: group.vip
    left_click_commands:
    - '[player] kit vip'
    - '[close]'
  vip_kit_locked:
    material: BARRIER
    slot: 22
    priority: 2
    display_name: '&cТолько для VIP'

group.vip это право, которое LuckPerms сам даёт каждому участнику группы vip. Как устроить донат-группы, разобрали в статье про LuckPerms. Набор выдаётся от имени игрока, а не консолью: так Essentials сам проверит перезарядку и право на кит.

Для платной кнопки есть click_requirement с типом has money и списком deny_commands: что сказать игроку, если денег не хватает. Нужен Vault и эконом-плагин.

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

  • Меню не прописано в gui_menus. Файл лежит в папке, а /dm open отвечает, что такого меню нет.
  • Табуляция вместо пробелов. YAML её не принимает. Отступы только пробелами и одинаковые по всему файлу.
  • Апостроф внутри одинарных кавычек. Строка вида 'Don't' ломает весь файл. Апостроф удваивают или берут строку в двойные кавычки.
  • Слеш в [player]. Пишите [player] spawn, без слеша перед командой.
  • Две кнопки в одном слоте без priority. Показывается не та, и кажется, что условие не работает.
  • Плейсхолдер виден текстом. Не скачано расширение PlaceholderAPI или опечатка в имени.
  • Название материала из старой версии. Плагин пишет ошибку в консоль, кнопка пропадает. Названия берите под свою версию игры.
  • Команда открытия занята. Если /menu уже есть у другого плагина, откроется чужое. Возьмите другую команду или уберите дубль.
  • /reload всего сервера. Для меню хватает /dm reload.
Перед /dm reload прогоните файл через любой онлайн-валидатор YAML. Это быстрее, чем искать лишний пробел глазами по консоли.

Как то же сделать быстрее

В Cloud Panel меню собирается мышкой. Перетаскиваете предмет в ячейку, кликаете по нему и задаёте название, описание и что происходит при нажатии: ничего, закрыть меню или выполнить команду. Число рядов выбирается переключателем, лишний предмет вытаскивается за край окна. Цвета в названии и описании видно сразу, как в игре. Слоты считать не нужно.

Файл DeluxeMenus панель пишет сама, остальные строки не трогает. Каждая правка попадает в журнал, откат возвращает файл байт в байт. Меню можно повесить на клик по НПС из той же панели. А сам конструктор можно потрогать без установки: на странице панели меню собирается в браузере, готовый конфиг DeluxeMenus забираете бесплатно.

Хотите сначала попробовать без установки? Бесплатный генератор меню DeluxeMenus собирает кнопки в браузере и отдаёт готовый YAML.

Чек-лист

  1. DeluxeMenus и PlaceholderAPI стоят, нужные расширения скачаны.
  2. Каждое меню прописано в gui_menus в config.yml.
  3. size кратен девяти, слоты посчитаны с нуля.
  4. Команды в [player] без слеша.
  5. Закрытые кнопки сделаны через view_requirement и запасную кнопку в том же слоте.
  6. После /dm reload консоль без ошибок.
  7. Меню проверено обычным игроком без оператора.
  8. Рабочая версия файла сохранена до следующей правки.

Хотите собирать меню мышкой на своём сервере: 3 дня бесплатно, без карты.

Не хотите собирать всё это руками?

Мы делаем сборки, плагины и сайты для серверов Minecraft с 2022 года. Готовое решение ставится на ваш хостинг за вечер, установку делаем бесплатно.