Перейти к основному содержимому

Представления, вкладки и наследование

Представление (view) — это один экран меню. Все представления используют одну и ту же оболочку (полосу вкладок, нижнюю часть), а меняется только содержимое.

Объявление представлений​

В views добавьте по одной записи на каждый экран:

ПолеРоль
idИспользуется в gui:view и во вкладках.
nameПодпись, используемая в навигационной цепочке (breadcrumb). Если не задана, берётся id.
titleЗаголовок этого представления. Пустое значение оставляет заголовок меню. Допускает {breadcrumb}, {view} и {root}.
parentIdРодительское представление: для навигационной цепочки и чтобы вкладка родителя оставалась подсвеченной.
framesЯвное соответствие id фрейма и id макета.
criteria, viewPermissionЕсли они не выполняются, представление недоступно, а его вкладка скрыта.
activeStyleКак выглядит вкладка, пока она активна: glint, material, customModelData, nameFormat, loreSuffix.

В Open GUI defaultViewId — это представление, открываемое первым (если пусто, первое из объявленных). breadcrumbSeparator — текст MiniMessage между сегментами навигационной цепочки, а pushHistoryOnViewSwitch заставляет gui:back возвращаться к предыдущему представлению после смены вкладки.

Заполнение фреймов​

В макете frame задайте layoutId фрейма равным @view. Для активного представления расширение ищет макет в таком порядке:

  1. соответствие frames представления для id этого фрейма;
  2. макет с именем <view id>_<frame id>, например island_content для фрейма content и представления island;
  3. те же два поиска по цепочке parentId.

Фрейм, для которого ничего не найдено, остаётся пустым. Фреймы @view разрешаются только в корневом макете меню (mainLayoutId).

Вкладки​

Задайте предмету-вкладке buttonPrefix view: и buttonType, равный id представления. Клик по нему переключает на представление, и вкладка принимает activeStyle представления, пока оно или один из его дочерних элементов активно. Вкладки недоступных представлений скрыты.

Если запрошенное представление скрыто, используется первое представление, доступное игроку. Запрошенное несуществующее представление записывается в лог как Unknown view.

Наследование меню​

baseMenuId — это id записи шаблонного Open GUI. Дочернее меню наследует его layoutPool, views, mainLayoutId, defaultViewId и size, причём цепочка прослеживается до корня, поэтому меню может наследовать шаблон предметной области, который сам наследует глобальную оболочку. Макет дочернего меню с тем же id заменяет унаследованный, то же относится и к представлениям. storagePool наследуется только от непосредственного родителя. Пустой mainLayoutId у дочернего меню использует родительский.

Проверьте, что родитель существует, что каждый layoutId есть в объединённом пуле и что два меню не наследуют друг друга.

На практике​

Создайте шаблонное меню с фиксированным фреймом вкладок и фреймом содержимого @view, затем создайте по одному дочернему меню на каждую область, которые переопределяют только макеты содержимого. Макеты содержимого могут быть simple, scrollable или paginated, не затрагивая полосу вкладок.