Онлайн-игроки
Главный сценарий для GeneratedMenu: постраничный браузер онлайн-игроков. Каждая голова собирается автоматически из каталога PLAYERS, в lore - здоровье и мир. ЛКМ телепортирует админа к игроку, Shift+ЛКМ кикает. Доступ ограничен админами через общий сниппет rulesAdmin.
Чему учит пример
Заголовок раздела «Чему учит пример»- Сборка генерируемого меню из каталога + матрицы + шаблонов
- Использование плейсхолдеров каталога (
%ctg_player_name%,%ctg_player_health%,%ctg_player_world%) - Различение типов кликов:
click { left { ... } shift_left { ... } } - Действие
commandсconsole:для запуска команд от имени консоли - Встроенная пагинация через
pageNext/pagePrev(общие${buttonNext}и${buttonPrev}) - Плейсхолдеры пагинации:
%page%,%pages_count%,%pages_total% - Ограничение доступа на уровне меню: верхнеуровневое
rules: ${rulesAdmin}
Как устроен GeneratedMenu
Заголовок раздела «Как устроен GeneratedMenu»Генерируемое меню собирается из трёх блоков:
catalog { type: PLAYERS } # источник динамического содержимого
matrix { # как разложить элементы cells: [ "_________", "_xxxxxxx_", ... ] templates { "x" { ... шаблон предмета ... } }}
items: [ # статичные предметы (рамки, кнопки, счётчик) ...]Каталог выдаёт поток объектов. Матрица решает, куда какой объект каталога попадёт (ячейки x поочерёдно занимают записи из каталога). Статичные предметы из items: рендерятся на каждой странице на одних и тех же местах.
Плейсхолдеры каталога
Заголовок раздела «Плейсхолдеры каталога»Внутри шаблонов матрицы текущий объект каталога доступен через %ctg_<key>%. У каталога PLAYERS объект игрока имеет ключи name, health, food_level, world, gamemode и ещё несколько. У разных типов каталогов - разные ключи, полную таблицу смотрите в документации по генерации.
Типы кликов
Заголовок раздела «Типы кликов»Блок click позволяет задать обработчики на конкретный тип нажатия:
left { ... }- только ЛКМright { ... }- только ПКМshift_left { ... }- Shift + ЛКМshift_right { ... }- Shift + ПКМdrop { ... }- клавиша дропа (Q)
Если описан только один вариант клика, остальные клики ничего не делают. В этом меню left отвечает за телепорт, а shift_left - за кик. Так обычный shift+ЛКМ не приведёт случайно к телепорту.
Пагинация
Заголовок раздела «Пагинация»Генерируемые меню автоматически разбиваются на страницы, если в каталоге больше записей, чем влезает в матрицу. Действия pageNext и pagePrev переключают страницы. Общие шаблоны ${buttonNext} и ${buttonPrev} уже навешивают эти действия на стрелки.
Если меню умещается на одну страницу (записей в каталоге меньше, чем слотов в матрице), кнопки next/prev всё равно отрисуются, но их действия станут no-op.
Плейсхолдеры %page%, %pages_count% и %pages_total% показывают состояние пагинации - удобно для заголовков вида “Страница 2 / 5” или счётчика в футере.
Кастомизация
Заголовок раздела «Кастомизация»Чтобы оставить только часть игроков, добавьте фильтры в каталог:
catalog { type: PLAYERS filters { permission: "myserver.online_visible" notWorld: ["staff_world"] }}Чтобы добавить ещё админских действий, расширьте блок click хендлерами right, shift_right и т.д. - каждый со своей командой через действие command.
Чтобы полностью поменять источник данных (просматривать миры, регионы, BungeeCord-серверы), замените catalog { type: ... } на WORLDS, BUNGEE_SERVERS или любой другой зарегистрированный тип каталога.
Попробовать
Заголовок раздела «Попробовать»После установки набора примеров:
- Положите бандл в
plugins/AbstractMenus/menus/example/. /am reload.- Убедитесь, что у вашей учётки есть право
abstractmenus.admin. - Введите
/ame_onlineв игре. - ЛКМ по голове игрока - телепорт. Shift+ЛКМ - кик.