Создание генераторов
Генераторы
Генераторы — самая мощная часть системы конфигурации BetterStructures. По умолчанию существует 29 генераторов, которые совместно управляют постройками, распространяемыми BetterStructures на данный момент. Вы можете создавать собственные генераторы, а также использовать существующие в качестве быстрого способа.
Генераторы указывают плагину, где именно должны появляться объекты, и определяют таблицы добычи. Генераторы по умолчанию названы так, чтобы было легко угадать, что они делают.
Параметры конфигурации генератора
| Ключ | По умолчанию | Обязательный | Описание |
|---|---|---|---|
isEnabled | true | ❌ | Включён ли генератор. Установка значения false также прекращает регистрацию всех схематик, указывающих на этот генератор, поэтому это самый быстрый способ отключить целый набор структур. |
structureType | - | ✅ | Где появляются структуры (см. таблицу ниже) |
lowestYLevel | -59 | ❌ | Минимальный уровень Y для спауна |
highestYLevel | 320 | ❌ | Максимальный уровень Y для спауна |
validWorlds | Все разрешены | ❌ | Список миров, где могут появляться структуры |
validWorldEnvironments | Все разрешены | ❌ | NORMAL, NETHER, THE_END, CUSTOM |
validBiomesV2 | Зависит от шаблона | ❌ | Список допустимых биомов (формат namespace:key); пустой итоговый список разрешает все биомы |
treasureFilename | - | ❌ | Файл сокровищ для добычи из сундуков |
generateLootInBarrels | true | ❌ | Должны ли бочки, найденные в schematics этого генератора, заполняться добычей |
barrelTreasureFilename | treasure_barrel_food.yml | ❌ | Файл сокровищ, используемый для заполнения бочек этого генератора |
structureType
Устанавливает тип структуры постройки. Вы можете указать несколько типов структур для одного генератора!
| Тип | Верхний мир / Пользовательский | Нижний мир | Край | Описание |
|---|---|---|---|---|
SURFACE | Поверхность | Точки, похожие на поверхность | Поверхность | Появляется на поверхности мира |
SKY | 80-120 блоков над самым высоким блоком | Воздушный карман между Y 45 и Y 100 | 80-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=320 | lowestYNormalCustom / highestYNormalCustom |
| Нижний мир | Y=4 до Y=120 | lowestYNether / highestYNether |
| Край | Y=0 до Y=320 | lowestYEnd / 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, которым она нужна.
Из этого следуют два практических вывода:
- Длинные списки биомов, которые вы видите в поставляемых файлах
generator_surface_*.yml, — это сгенерированный вывод, а не источник истины. При загрузке BetterStructures читаетvalidBiomesV2, ищет каждую записьminecraft:в таблице MagmaCore, добавляет все пользовательские биомы, привязанные к ней, а затем записывает расширенный список прямо обратно в файл генератора. Поэтому генератор, который вы написали в две строки, может вернуться с сотней. Правка этого расширенного списка влияет только на этот один генератор, а любая оставленная вами записьminecraft:будет заново расширена при следующей загрузке. - Добавление поддержки нового пользовательского биома для всех — это изменение в 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, и действительная конфигурация сокровищ для бочек. Переопределение схематики не обходит ни одно из этих требований. Неверное переопределение вызывает предупреждение и возврат к таблице генератора.