Формат HOCON
Меню в AbstractMenus описываются на HOCON (.conf файлы), а не на YAML (.yml). На первый взгляд формат может показаться непривычным, но дальше станет понятно, почему он удобнее для гибких меню.
Базовый синтаксис HOCON
Заголовок раздела «Базовый синтаксис HOCON»HOCON - это JSON, доработанный под конфиги. Если знаком с JSON, разобраться будет легко.
Ключ-значение
Заголовок раздела «Ключ-значение»Все данные в HOCON записываются так:
<ключ>: <значение>где:
<ключ>
Уникальное имя ключа, как в YAML.
<значение>
Само значение. Бывает одного из типов, описанных ниже.
Несколько примеров:
name: "AbstractMenus"age: 20Здесь name и age - ключи, "AbstractMenus" и 20 - значения. Про типы данных - в разделе Типы данных HOCON ниже.
Комментарии
Заголовок раздела «Комментарии»Плагин их игнорирует, так что можно оставлять заметки для себя. Комментарий начинается с // или #.
# Это мой первый комментарий// Это мой другой комментарийТипы данных HOCON
Заголовок раздела «Типы данных HOCON»Действия, правила, активаторы и прочее описываются через типы данных: String, Number, Boolean, Object, List. У каждого типа своя форма записи. Все типы, которые понадобятся для меню, разобраны ниже.
Формат простой:
param_name: "Какой-то текст"Текст заключается в двойные кавычки ":
name: "Peter Piper"Если в тексте нет пробелов и спецсимволов, кавычки можно не ставить:
name: PeterЧисла записываются как в YAML:
count: 5age: 21Числа с плавающей точкой - через точку:
x: 224.5y: 16.0Boolean
Заголовок раздела «Boolean»Boolean (true или false) - тоже как в YAML:
glow: trueunbreakable: falseObject (в этой документации иногда называется block) - параметр, внутри которого собраны другие параметры. Записывается в фигурных скобках {} с именем перед ними:
item { material: IRON_SWORD name: "&eМой супер-меч"}Здесь мы описали объект item (кнопку) с параметрами material и name. Двоеточие перед скобками можно опустить. Оба варианта валидны:
item: {item {Объекты можно вкладывать друг в друга на любую глубину. Например:
item { material: LEATHER_BOOTS color { r: 255 g: 255 b: 255 }}Тут объект color лежит внутри item. Это просто иллюстрация - подробно про описание предметов есть отдельная страница формат предмета.
Содержимое объекта можно записать в одну строку через запятую:
object1 { param1: "value1" }
object2 { param1: "value1", param2: 12, param3: true }List - гибкий тип. Список может содержать любые из перечисленных выше типов, но в пределах одного списка - только один тип. Записывается через двоеточие и квадратные скобки []:
list: []Это пустой список. Дальше - какие списки встречаются в плагине.
Список строк
Заголовок раздела «Список строк»lore: [ "Строка 1", "Строка 2"]Элементы разделяются запятой , - она говорит “дальше будет ещё элемент”. После последнего запятую можно не ставить.
Список чисел
Заголовок раздела «Список чисел»Так же, как список строк, только без кавычек:
numbers: [ 52, 12, 36]Список объектов
Заголовок раздела «Список объектов»Объект записывается в фигурных скобках {} - это правило работает и внутри списка. Единственное отличие: в списке у объектов нет имени. Например:
items: [ { material: STONE name: "Камешек" }, { material: IRON_SWORD name: "Экскалибур" }]Это список предметов. Каждый объект - в фигурных скобках, элементы разделяются запятой.
Однострочные списки
Заголовок раздела «Однострочные списки»Список, как и объект, можно записать в одну строку:
list: [ "строка1", "строка2", "строка3" ]Полезная фича списков
Заголовок раздела «Полезная фича списков»Если в списке всего один элемент, его можно записать как обычный параметр.
Например, список строк с единственным значением. Вот это:
regionJoin: [ "my_region"]можно превратить в это:
regionJoin: "my_region"Аналогично со списком объектов. Это:
items: [ { material: STONE name: "Камешек" }]можно превратить в это:
items { material: STONE name: "Камешек"}В следующих уроках разберёмся с возможностями меню и примерами их использования. Эта страница поможет лучше понимать будущие примеры и написать первое интерактивное меню на AbstractMenus.