Перейти к основной части

Основы конфигурирования

ECInventory использует формат HOCON для файлов конфигурации. Файлы конфигурации используют расширение файла .conf.

Основы HOCON

HOCON (Human-Optimized Config Object Notation) — это удобный для человека формат конфигурации, надстройка над JSON.

совет

Это краткое описание формата HOCON для пользователей, уже знакомых с YAML. Если вы хотите узнать все о HOCON, прочитайте спецификацию.

Свойства в HOCON имеют ключ и значение, разделенные разделителем:

  • ключ — это строка, описывающая "значение"
  • значение может быть строкой, числом, объектом, логическим значением, перечисляемым типом или null
  • разделитель разделяет ключ и значение, должен быть либо : (как в YAML), либо = (как в JSON)

Если строка в конфиге начинается с // или #, она считается комментарием.

# Это комментарий. Он может содержать дополнительную информацию о свойстве.
# Здесь «display-name» — это ключ, «:» — это разделитель, а «Лучший инвентарь» — это значение.
display-name: "Лучший инвентарь"

Конфигурация HOCON может быть очень похожа на YAML, но имеет существенные отличия в объявлении объектов и списков.

Объекты

YAML использует отступы для объявления свойств объекта, а HOCON использует фигурные скобки {}:

## YAML
my-slot:
display-name: "Мой слот"
type: storage

## HOCON
my-slot {
display-name: "Мой слот"
type: storage
}
# HOCON также поддерживает однострочное объявление объекта.
my-slot { display-name: "Мой слот", type: storage }

Массивы и списки

В YAML есть два стиля для объявления элементов списка — с помощью квадратных скобок [] или с помощью дефиса - в начале строки. HOCON поддерживает только стиль с квадратными скобками:

## YAML
description:
- "Первая строка"
- "Вторая строка"
# Также поддерживается однострочное объявление списка
description: ["Первая строка", "Вторая строка"]

## HOCON
description: [
"Первая строка",
"Вторая строка"
]
# Объявление однострочного списка выглядит точно так же, как в YAML
description: ["Первая строка", "Вторая строка"]

Список объектов

YAML позволяет объявлять список объектов, используя нотацию элементов списка через дефис, но в HOCON мы должны использовать фигурные скобки для объявления объектов в списке:

## YAML
actions:
- on: [right_click]
do: ["weather clear"]

## HOCON
actions: [
{
on: [right_click]
do: ["weather clear"]
}
]
# Или более компактный вариант с однострочным объявлением объекта
actions: [
{on: [right_click], do: ["weather_clear"]}
]

Типы

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

Строка

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

quoted-string: "Это просто строка"
unquoted-string: Такая запись также допустима, но не рекомендуется

Число

Числа могут быть целыми или с плавающей запятой. Допустимый диапазон обычно указывается в спецификации поля.

integer-value: 42
float-value: 0.5

Логическое значение

Примитивный логический тип, который может принимать значения true (алиасы: yes, on) или false (алиасы: no, off).

boolean-field: true

Предмет

Идентификатор предмета, который можно использовать для получения предмета через Mimic. Вы можете добавить пространство имен перед идентификатором, если хотите получить предмет из определенного источника.

minecraft-item: minecraft:iron_sword
custom-item: mmoitems:iron_sword
item-without-namespace: iron_sword
совет

Вы можете проверить список доступных предметов, используя команду:

/mimic item give <player> <item_id>

Продвинутое использование HOCON

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

Путь в качестве ключа

Вы можете использовать пути в качестве ключей для значений чтобы настроить вложенные объекты:

my-slot {
display-name: "Поменяй мой тип"
}

# HOCON перейдет к «my-slot» и изменит его свойство под названием «type».
my-slot.type: generic

# Это также допустимый формат для объявления объекта «other-slot»
other-slot.display-name: "Этот слот создан через путь в ключе"
other-slot.type: generic

Подстановки

HOCON позволяет использовать в значениях другие свойства из конфигурации. Ссылка на свойство должна иметь формат ${absolute.path.to.field}.

Например, вы можете создать переменную и использовать внутри значений:

server-name: "Лучший сервер"

server-info-slot {
display-name: Информация про ${server-name}
description: ["Это определённо "${server-name}]
type: gui
}
совет

Подстановки внутри кавычек " не работают. Вы должны вынести подстановку за кавычки следующим образом:

# Не работает
"Это определённо ${server-name}!"

# Работает
"Это определённо "${server-name}"!"

Конкатенация и наследование

HOCON позволяет "склеивать" значения, включая объекты и списки. В сочетании с подстановкам это мощная функция.

Конкатенацию списков можно использовать для переиспользования общих настроек:

offhand {
allowed-items: [dagger, shield]
}

# Мы можем держать в основной руке все, что можем держать во второй руке, а ещё меч и топор.
mainhand {
allowed-items: ${offhand.allowed-items} [sword, axe]
}

Конкатенацию объектов можно использовать для наследования:

ammo-base {
type: generic
max-stack-size: 16
}

# Слот arrows унаследует все поля от "ammo-base"
arrows: ${ammo-base} {
allowed-items: [arrow]
}
совет

Помните, что для подстановки вы должны использовать абсолютный путь к объекту. В реальных конфигах пути будут выглядеть как slots.ammo-base вместо ammo-base.