Руководство по конфигурационным файлам
Общий загрузчик MagmaCore отклоняет нечитаемый или некорректный YAML до применения значений по умолчанию, включая наследуемые конфигурации. При сохранении сначала записывается и синхронизируется временный файл, затем он заменяет целевой файл; при поддержке используется атомарная замена. В Windows, если другой процесс, например антивирус или индексатор файлов, ненадолго удерживает файл и замена отклоняется, сохранение повторяется ещё до четырёх раз, ожидая в сумме не более 250 миллисекунд. Ошибка сохранения передаётся вызывающему коду. Устраните проблему с файлом перед повторной попыткой.
Эта страница поможет вам правильно редактировать файл .yml (.yaml). Плагины Nightbreak используют конфигурационные файлы .yml. Некорректный YAML или неподдерживаемые значения могут помешать загрузке файла; некоторые настройки возвращаются к значениям по умолчанию. Сохраняйте резервную копию и проверяйте консоль после перезагрузки.
Ниже вы найдёте все типы записей конфигурации и то, как их следует форматировать, если вы изменяете значения.
Как редактировать файлы .yml
Файлы хранятся в формате .yml, и Notepad++ является рекомендуемой программой для редактирования конфигурационных файлов. Разумеется, вы можете использовать любой другой текстовый редактор по вашему выбору.
Устаревшие конфигурационные файлы
Когда обновление плагина прекращает поддержку формата конфигурации, MagmaCore перемещает соответствующие файлы в plugins/MagmaCore/outdated files/<PluginName>/<archive batch>/, сохраняя содержимое и относительные пути. Консоль сообщает расположение архива. Эта обработка также выполняется вокруг импорта контента, чтобы старый пакет не мог незаметно вернуть устаревший файл в использование. Импорт контента также перемещает в эту папку файлы, которые обновлённый пакет больше не поставляет; см. Файлы, которые обновление пакета перестаёт поставлять.
Плагин заново создаёт встроенные настройки по умолчанию там, где существуют замены. Устаревшие файлы DLC требуют обновлённого пакета контента. Пользовательские файлы нужно переписать в текущем формате; сравните архивный файл с соответствующим справочником и перенесите нужные настройки. Восстановление архивного файла без изменений может привести к повторной архивации.
Архивация использует конкретные правила, поставляемые плагином-владельцем. Неизвестная настройка или некорректный файл сами по себе не доказывают, что формат устарел. Продолжайте проверять консоль на обычные ошибки загрузки.
Некоторые правила выводят из использования не формат, а старое встроенное значение по умолчанию. Правило может указать точное значение, которое встречается только в более старой версии по умолчанию, например старый слот меню или список квестов, и тогда весь файл архивируется, если это значение в нём ещё есть. Правило для встроенного Lua-скрипта сравнивает контрольную сумму SHA-256 файла, без учёта символов возврата каретки, с прежними встроенными версиями этого скрипта. Совпадает только неотредактированная копия, поэтому изменённый вами скрипт остаётся на месте, а плагин затем записывает свою текущую версию по умолчанию.
Например, BetterStructures заменяет старую конфигурацию Valid worlds на Valid worlds v2. EliteMobs архивирует отдельные устаревшие встроенные предметы, старый приветственный квест гильдии и неотредактированные копии прежних встроенных Lua-способностей и скриптов зачарований. FreeMinecraftModels также архивирует распознанные устаревшие Lua-скрипты экипированных предметов; текущие скрипты объектов и эффекты зачарований используют собственные поддерживаемые контракты.
Повторяющиеся имена файлов
Плагины, загружающие контент через MagmaCore, определяют каждый файл контента по имени файла, включая файлы во вложенных папках. Если у двух файлов в одной папке контента одинаковое имя, загружается только тот, чей полный путь идёт первым при сортировке без учёта регистра. Консоль выводит предупреждение с путями загруженного и пропущенного файлов. Предупреждения нет, если копии идентичны или если это YAML-файлы и каждое значение в пропущенной копии совпадает с загруженной, как бывает, когда два пакета контента поставляют один и тот же общий файл. Давайте файлам, которые должны загружаться отдельно, уникальные имена. Некоторые папки строже. Повторяющиеся имена схематик в папке modules BetterStructures останавливают загрузку модулей.
Boolean
Значения Boolean — это true или false. Вот как они выглядят:
value1: true
value2: false
Boolean принимают только значения true или false. Обычно они используются для включения или отключения определённых функций.
String
Значения String обычно представляют собой обычный текст. Настоятельно рекомендуется заключать значения String в кавычки, следуя этому формату:
value: "String"
Заключайте строки с цветовыми кодами в кавычки, особенно если первый символ &. В поддерживаемом текстовом поле "&aTest" создаёт зелёный текст. Доступность цветного текста зависит от настройки. Список цветовых кодов см. на этой странице.
Details
Почему?
Строки конфигурации могут содержать специальные символы, например&. Если такой символ стоит в начале, как в value: "&aString", но строка не заключена в кавычки, YAML может интерпретировать & как якорь вместо обычного текста. Заключайте всю строку в кавычки, чтобы избежать ошибки разбора или непреднамеренного значения.Serialized Location
Serialized Location — это особый тип String, который выглядит так:
location: world,1.0,2.0,3.0,4.0,5.0
Они используются для хранения и настройки местоположений. Формат: worldName,X,Y,Z,YAW,PITCH. Yaw и pitch определяют направление взгляда игрока и используют те же значения, что и местоположения Minecraft.
Multiplier
Значения Multiplier умножают значения плагина на это число. Эти значения никогда не должны быть в кавычках. Вот пример:
damageMultiplier: 1.0
В этом случае множитель урона будет умножен на 1, то есть значение по умолчанию не изменится. Если бы Multiplier был 2.0, значение было бы умножено на 2.0. Если бы он был 0.5, оно было бы умножено на 0.5.
Умножение на 0.5 равнозначно делению на 2. Допустимый диапазон зависит от конкретной настройки; проверьте её справочник перед использованием нуля, отрицательного значения или большого множителя.
Integer
Значения Integer — это просто целые числа. Пример:
value: 10
Символ ~ принимают только поля, в документации скриптов которых явно поддерживаются числовые диапазоны. Это строка, разбираемая конкретной функцией, а не число YAML или общая настройка. Пример:
value: 1~10
Главное правило для значений Integer — они должны быть целыми числами. То есть 10.1 недопустимо.
Double
Double — это десятичные числа, которые могут иметь дробную часть. Пример:
value: 10.01
Символ ~ принимают только поля, в документации скриптов которых явно поддерживаются числовые диапазоны. Это строка, разбираемая конкретной функцией, а не число YAML или общая настройка. Пример:
value: 1.0~10.01
Double также могут быть целыми числами, как integers, например 10.0 или даже представлены как 10.
Float
Float — это 32-битные десятичные числа с меньшей точностью, чем у Double. Пример:
value: 10.42452
Символ ~ принимают только поля, в документации скриптов которых явно поддерживаются числовые диапазоны. Это строка, разбираемая конкретной функцией, а не число YAML или общая настройка. Пример:
value: 1.0~10.42452
Float также могут быть целыми числами, например 10.0 или даже представлены как 10.
String List
String List — это списки значений String. Они, как правило, являются самыми сложными для настройки, так как требуют очень специфического формата конфигурации:
valuesList:
- "value,1"
- "value,2"
- "value,3"
Как и в случае со String, рекомендуется заключать значения в кавычки. Каждый String List имеет собственный формат, поэтому вам придётся найти конкретный формат, требуемый для редактируемого вами значения; однако в целом общий формат должен выглядеть именно так.
Map List
Список отображений содержит несколько записей-отображений. В этом примере YAML каждое значение вложено в именованное отображение; фактические ключи зависят от настройки:
parentMap:
- Map1:
key: value
- Map2:
key: value
keyForList:
- "value1"
- "value2"
Как видите, Map List могут содержать любой формат внутри себя, но если вы используете их в скриптинге, вам придётся обратиться к документации, чтобы узнать, какие ключи и значения допустимы для разных карт.
Color Codes
Вы также можете назначать цвета или делать текст жирным с помощью следующих модификаторов:
| Код | Цвет | Пример |
|---|---|---|
| &4 | Тёмно-красный | &4Пример тёмно-красного. |
| &c | Красный | &cПример красного. |
| &6 | Оранжевый | &6Пример оранжевого. |
| &e | Жёлтый | &eПример жёлтого. |
| &2 | Тёмно-зелёный | &2Пример тёмно-зелёного. |
| &a | Зелёный | &aПример зелёного. |
| &b | Аква | &bПример аква. |
| &3 | Тёмно-аква | &3Пример тёмно-аква. |
| &1 | Тёмно-синий | &1Пример тёмно-синего. |
| &9 | Синий | &9Пример синего. |
| &d | Светло-фиолетовый | &dПример светло-фиолетового. |
| &5 | Тёмно-фиолетовый | &5Пример тёмно-фиолетового. |
| &f | Белый | &fПример белого. |
| &7 | Серый | &7Пример серого. |
| &8 | Тёмно-серый | &8Пример тёмно-серого. |
| &0 | Чёрный | &0Пример чёрного. |
| &r | Сброс цвета | &rПример сброса. |
| &l | Жирный | &lПример жирного. |
| &o | Курсив | &oПример курсива. |
| &n | Подчёркнутый | &nПример подчёркнутого. |
| &m | Зачёркнутый | |
| &k | Случайный | &k &fпример. |
Как видно в примерах, модификаторы следуют обычному синтаксису Minecraft, за исключением того, что § заменяется на & при использовании с EliteMobs. Вы можете использовать это для изменения большей части текста EliteMobs, например, имён мобов, текста квестов, названий подземелий и т.д.
Обратите внимание, что при правильной работе сами модификаторы не отображаются в вашем тексте. Они показаны здесь только в демонстрационных целях.
Также можно комбинировать цвета и другие модификаторы текста. Например, можно сделать:
Если бы мы хотели, чтобы наш кастомный моб имел красивое цветное имя, мы бы сделали следующее:
name: "$normalBossLevel &aScary &dDragon"
Начиная с EliteMobs 10, для любого текста EliteMobs также можно использовать цветовые градиенты, как показано в этом примере:
name: "&cNormal Red Text <gradient:#FF6B00:#FFD700:#FFFF00> Cool Gradient Text </gradient>"
В этом примере:
&cприменяет стандартное красное форматирование к тексту перед градиентом.<gradient:...>начинает определение градиента.#FF6B00,#FFD700и#FFFF00— цвета, используемые в градиенте.Cool Gradient Text— текст, к которому применяется градиент.</gradient>завершает участок градиента.
Затрагивается только текст внутри тегов градиента; форматирование за пределами тегов остаётся без изменений.
Градиенты больше не ограничены EliteMobs. Парсер текста находится в MagmaCore, поэтому тот же синтаксис работает в поддерживаемых текстовых полях каждого плагина, включающего эту библиотеку, вместе с остальными тегами MiniMessage (<rainbow>, <#RRGGBB>, именованные цвета вроде <red>, оформление вроде <bold> и так далее).
Material
Значения Material — это просто Material, которые можно найти в Minecraft, например IRON_CHESTPLATE. Список допустимых Material см. на этой странице.
helmet: IRON_HELMET
Material используются как значения в нескольких настройках, таких как снаряжение мобов, выпадение лута, награды за квесты и т.д.
Filename
Значения Filename — это просто конфигурационные файлы .yml, отформатированные для использования с плагинами MagmaGuy. Это может быть что угодно — от предметов до квестов.
uniqueLootList:
- filename: magmaguys_toothpick.yml
Обрезка миров
Чтобы уменьшить размер мира для распространения, обрежьте ненужную территорию совместимым инструментом, например WorldBorder. Проверьте поддержку конкретной версии сервера и работайте с резервной копией; старый список совместимости не подтверждает поддержку нового формата мира.
Details
Совет
Если вы делаете это впервые, возможно, будет хорошей идеей создать резервную копию вашего мира на случай, если что-то пойдёт не так.После установки плагина перейдите к центру мира или к конкретной области, которую вы хотите обрезать. Затем выполните команду /wb set x, где x — это приблизительный радиус нужной вам области.
Details
Совет
Если/wb не работает, попробуйте /worldborder:wb.После выполнения этой команды полетите к краям вашего мира, чтобы убедиться, что граница мира установлена правильно и охватывает нужный размер. Вы поймёте, что достигли края границы мира, когда вас оттолкнёт назад с соответствующим сообщением в чате.

На изображении выше мы хотим обрезать мир вокруг фиолетовых блоков, оставив вокруг них всего несколько чанков. Чтобы добиться этого, мы стоим посередине фиолетовой области на красных квадратах и выполняем /wb set 50, устанавливая границу мира чуть за пределами фиолетовой области.
Затем используйте /wb trim [freq] [pad]. Отступ измеряется в блоках, а частота определяет число проверяемых чанков в секунду. /wb trim 200 20 проверяет до 200 чанков в секунду, сохраняя 20 блоков за границей. Проверьте этот запас и при необходимости увеличьте отступ перед подтверждением через /wb trim confirm. Единицы определены в команде trim WorldBorder.
Удалите границу плагина для этого мира командой /wb clear, находясь в нём, либо оставьте её.
Обрезка папки мира
Остановите сервер и работайте с резервной копией. Не удаляйте всё, кроме region, raids.dat и level.dat: данные ландшафта, сущностей, точек интереса и измерений могут быть необходимы. Сохраните фактическую структуру каталогов вашего сервера и плагина.
В старых мирах Vanilla Нижний мир использует DIM-1, а Край использует DIM1. В Vanilla 26.1 стандартные измерения перенесены в dimensions/minecraft/overworld, dimensions/minecraft/the_nether и dimensions/minecraft/the_end вместе с каталогами region, entities и poi. Требуемая структура зависит от ПО и версии сервера. Импортируйте копию на отдельном сервере и проверьте мир перед распространением.