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

Создание генераторов

Генераторы​

Генераторы — самая мощная часть системы конфигурации BetterStructures. По умолчанию существует 29 генераторов, которые совместно управляют постройками, распространяемыми BetterStructures на данный момент. Вы можете создавать собственные генераторы, а также использовать существующие в качестве быстрого способа.

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

Параметры конфигурации генератора​

КлючПо умолчаниюОбязательныйОписание
isEnabledtrue❌Включён ли генератор. Установка значения false также прекращает регистрацию всех схематик, указывающих на этот генератор, поэтому это самый быстрый способ отключить целый набор структур.
structureType-✅Где появляются структуры (см. таблицу ниже)
lowestYLevel-59❌Минимальный уровень Y для спауна
highestYLevel320❌Максимальный уровень Y для спауна
validWorldsВсе разрешены❌Список миров, где могут появляться структуры
validWorldEnvironmentsВсе разрешены❌NORMAL, NETHER, THE_END, CUSTOM
validBiomesV2Зависит от шаблона❌Список допустимых биомов (формат namespace:key); пустой итоговый список разрешает все биомы
treasureFilename-❌Файл сокровищ для добычи из сундуков
generateLootInBarrelstrue❌Должны ли бочки, найденные в schematics этого генератора, заполняться добычей
barrelTreasureFilenametreasure_barrel_food.yml❌Файл сокровищ, используемый для заполнения бочек этого генератора

structureType​

Устанавливает тип структуры постройки. Вы можете указать несколько типов структур для одного генератора!

ТипВерхний мир / ПользовательскийНижний мирКрайОписание
SURFACEПоверхностьТочки, похожие на поверхностьПоверхностьПоявляется на поверхности мира
SKY80-120 блоков над самым высоким блокомВоздушный карман между Y 45 и Y 10080-120 блоков над самым высоким блокомПоявляется в небе (настраивается в config.yml)
UNDERGROUND_SHALLOWНачальный Y 0-49Поиск твёрдой области на Y 60-119Поиск твёрдой области на Y 0-79Неглубокие подземные структуры
UNDERGROUND_DEEPНачальный Y от -53 до -1Поиск твёрдой области вниз по Y 60-6Начинает с Y 0 до поправок на смещение и границыГлубокие подземные структуры
LIQUID_SURFACEЖидкость на самом высоком блокеЛава на Y 31 с воздухом над нейНет начальной проверки жидкости; проверка пригодности местности сохраняетсяПоявляется на поверхностях жидкостей
DUNGEON✅✅✅Зарезервирован для отдельной системы генераторов модулей; сам по себе этот тип не превращает схематику в модульное подземелье

Диапазоны для неба — смещения над самым высоким блоком колонки, а не абсолютные координаты Y. Подземные диапазоны описывают начальный выбор или поиск до поправок на смещение схематики и границы измерения. Поиск неба в Нижнем мире проверяет Y 45-99.

Пример нескольких типов структур
structureType:
- SURFACE
- UNDERGROUND_SHALLOW

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

Примечание: Существует два подземных параметра, поскольку в Minecraft много подземного пространства. Оба обеспечивают равномерное распределение по глубинам и предотвращают пропуск структур игроками.


Диапазоны Y-уровней по измерениям​

Диапазоны высот по умолчанию по измерениям (настраиваемые в config.yml):

ИзмерениеДиапазон по умолчаниюНастройки конфигурации
Верхний мир/ПользовательскийY=-60 до Y=320lowestYNormalCustom / highestYNormalCustom
Нижний мирY=4 до Y=120lowestYNether / highestYNether
КрайY=0 до Y=320lowestYEnd / highestYEnd
Небо (Верхний мир/Пользовательский)80-120 блоков над самым высоким блокомnormalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude
Небо (Край)80-120 блоков над самым высоким блокомendAirBuildMinAltitude / endAirBuildMaxAltitude

lowestYLevel и highestYLevel генератора фильтруют начальные точки привязки. Они не заменяют подземные границы измерения и не меняют диапазон небесных смещений.

Две строки про небо — смещения над самым высоким блоком колонки, а не абсолютные координаты Y. В Верхнем/пользовательском мире и Крае смещение при каждом размещении выбирается случайно между минимумом и максимумом.

Нижний мир полностью игнорирует эти смещения: BetterStructures ищет между Y 45 и Y 100 воздушный карман высотой не менее 20 блоков и размещает структуру внутри. Если подходящего кармана нет, в этом чанке ничего не появляется.


Поддержка пользовательских биомов​

BetterStructures автоматически поддерживает пользовательские биомы из генераторов миров, таких как Terralith, Iris, Terra и TerraformGenerator.

Когда вы указываете ванильный биом в validBiomesV2, плагин автоматически включает совместимые пользовательские биомы:

validBiomesV2:
- minecraft:plains
- minecraft:forest

Это разрешает структуры в ванильных биомах И всех сопоставленных им пользовательских биомах при прохождении остальных проверок размещения. Например, terralith:brushland сопоставлен с plains.

Пустой или отсутствующий список validBiomesV2 сохраняет встроенный набор биомов готового генератора, а не снимает его ограничения. У нового пользовательского генератора без встроенных биомов итоговый список пуст и разрешены все биомы. Чтобы заменить выбор готового шаблона, задайте явный непустой список. Имена ванильного перечисления без пространства имён допустимы, но формат namespace:key понятнее; записи с пространством имён переводятся в нижний регистр без проверки существования биома.

Где на самом деле находятся сопоставления​

Таблица сопоставления пользовательских биомов ванильным не хранится в BetterStructures. Это единственная жёстко заданная таблица внутри MagmaCore — общей библиотеки, встроенной в BetterStructures, — и она используется совместно с другими плагинами MagmaGuy, которым она нужна.

Из этого следуют два практических вывода:

  1. Длинные списки биомов, которые вы видите в поставляемых файлах generator_surface_*.yml, — это сгенерированный вывод, а не источник истины. При загрузке BetterStructures читает validBiomesV2, ищет каждую запись minecraft: в таблице MagmaCore, добавляет все пользовательские биомы, привязанные к ней, а затем записывает расширенный список прямо обратно в файл генератора. Поэтому генератор, который вы написали в две строки, может вернуться с сотней. Правка этого расширенного списка влияет только на этот один генератор, а любая оставленная вами запись minecraft: будет заново расширена при следующей загрузке.
  2. Добавление поддержки нового пользовательского биома для всех — это изменение в MagmaCore, а не в конфиге. Если генератор миров поставляет биом, который BetterStructures не распознаёт, добавление его в validBiomesV2 генератора — это локальный обходной путь для этого одного генератора. Правильное сопоставление означает добавление его в таблицу сопоставлений MagmaCore, а это изменение кода — оформите запрос вместо попыток решить это в yml-файлах.

Можно указать пользовательский биом напрямую в validBiomesV2. Пространства имён, отличные от minecraft:, используются напрямую и не расширяются. Это подходит генератору, который должен размещать структуры только в одном конкретном пользовательском биоме.

Биомы, которые MagmaCore сопоставляет с nothing, намеренно исключены — это пользовательские биомы, считающиеся непригодными для структур, и ни один ванильный биом их не подтянет.


treasureFilename​

Устанавливает файл сокровищ для добычи из сундуков. Это применяется ко всем постройкам, использующим этот генератор, если не переопределено в конфигурации schematic.

Для заполнения сундуков генератор всё равно должен найти действительную конфигурацию сокровищ. Переопределение схематики не компенсирует отсутствующий или неверный файл сокровищ генератора. Неверное переопределение вызывает предупреждение и возврат к таблице генератора.


generateLootInBarrels и barrelTreasureFilename​

BetterStructures теперь рассматривает бочки как второй контейнер добычи наряду с сундуками.

  • generateLootInBarrels (по умолчанию true) переключает заполнение бочек внутри структур, размещаемых этим генератором. Установите false, чтобы оставить бочки нетронутыми.
  • barrelTreasureFilename (по умолчанию treasure_barrel_food.yml) выбирает, какой файл сокровищ разыгрывается при заполнении этих бочек. По умолчанию поставляется лёгкая таблица добычи, ориентированная на еду, но вы можете указать любой файл сокровищ.

Поле схематики barrelTreasureFilename может заменить таблицу добычи. Генератору нужны и generateLootInBarrels: true, и действительная конфигурация сокровищ для бочек. Переопределение схематики не обходит ни одно из этих требований. Неверное переопределение вызывает предупреждение и возврат к таблице генератора.