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

BetterStructures FAQ

Если ваш вопрос касается первоначальной привязки Nightbreak, загрузки пакетов или ручного импорта, сначала обратитесь к общим страницам Global. Этот FAQ содержит только ответы, специфичные для BetterStructures.

Почему структуры не появляются?​

Наиболее распространённая причина — вы тестируете на территории, которая уже была исследована до установки BetterStructures.

BetterStructures предназначен для генерации в неисследованной территории и не заполняет старые чанки ретроактивно. Если вы хотите быстро увидеть естественную генерацию:

  • летите в новые чанки
  • создайте новый тестовый мир
  • или используйте команды размещения и настройки вместо ожидания естественной генерации

Почему BetterStructures отключился сам после перезагрузки?​

/bs reload очищает каждый реестр контента, прежде чем рабочий поток пересоберёт их. Если при пересборке возникнет исключение, продолжение работы оставило бы плагин, который выглядит включённым, но имеет неполный или пустой контент. Поэтому BetterStructures намеренно отключается, чтобы не работать в таком состоянии.

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

Почему моя команда отклоняется во время перезагрузки?​

/bs place, /bs lootify, /bs pregenerate и /bs generateModules читают или изменяют реестры контента, которыми владеет поток перезагрузки, поэтому на это время они отклоняются с сообщением о перезагрузке контента. Сканирование новых чанков и ожидающие проверки подземелий продолжаются после успешной перезагрузки. Если чанк в очереди выгрузился, его проверка ждёт повторной загрузки чанка. Дождитесь сообщения об успешной перезагрузке и попробуйте снова.

Повторный запуск /bs reload во время перезагрузки не приводит к ошибке — ваш запрос ставится в очередь, и после завершения первой выполнится ещё одна полная перезагрузка, поэтому изменения файлов, сделанные вами в процессе, всё равно будут подхвачены.

Как отключить предупреждения администратора о новых структурах?​

BetterStructures имеет переключатель warnAdminsAboutNewBuildings в config.yml, а /betterstructures silent переключает это значение за вас.

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

Переключатель действует на весь сервер. Сообщения получают игроки онлайн с правом betterstructures.warn, которое по умолчанию есть у OP, поэтому это право можно также отозвать у отдельных сотрудников.

Что означает setupDone?​

setupDone отслеживает, был ли завершён процесс первоначальной настройки BetterStructures.

  • false означает, что процесс настройки всё ещё считается незавершённым
  • true означает, что процесс настройки уже был завершён

Если вы намеренно хотите перезапустить настройку, установите setupDone: false, перезагрузите плагин и снова выполните /bs initialize.

Требуется ли BetterStructures WorldEdit?​

Да. WorldEdit является обязательной зависимостью в plugin.yml, поэтому BetterStructures не рассчитан на работу без него.

Как работает интеграция с WorldGuard?​

Если и WorldGuard, и EliteMobs установлены, BetterStructures регистрирует и использует флаг betterstructures-protect для своих защищённых зон. Оба плагина должны быть установлены для активации защиты WorldGuard.

Соответствующий переключатель конфигурации:

protectEliteMobsRegions: true

Установите значение false, если вы не хотите управляемую BetterStructures защиту WorldGuard для поддерживаемого контента.

Сообщение, показываемое игрокам при попытке сломать или поставить блок в защищённой зоне, также настраивается:

regionProtectedMessage: "&8[BetterStructures] &cDefeat the zone's bosses to edit blocks!"

Могу ли я добавить пользовательские предметы в сокровища BetterStructures?​

Да. BetterStructures включает:

/betterstructures lootify <generator> <rarity> <minAmount> <maxAmount> <weight>

Используйте команду, держа предмет, который хотите зарегистрировать. Команда записывает удерживаемый предмет в выбранную запись генератора сокровищ.

Текущие правила валидации из реализации команды:

  • генератор сокровищ должен существовать
  • редкость уже должна существовать в этой конфигурации сокровищ
  • minAmount должен быть не менее 1
  • maxAmount должен быть не более 64
  • удерживаемый предмет не может быть воздухом

Поддерживает ли BetterStructures записи сокровищ MMOItems?​

Да. BetterStructures имеет поддержку MMOItems в проекте, и существующий рабочий процесс сокровищ поддерживает сторонние предметы. Для синтаксиса, специфичного для MMOItems, придерживайтесь точных примеров конфигурации в ваших файлах сокровищ в соответствии с текущей документацией страницы сокровищ, а не полагайтесь на старые фрагменты FAQ.

Как EliteMobs и BetterStructures работают вместе?​

BetterStructures поддерживает необязательную интеграцию с EliteMobs.

На высоком уровне:

  • BetterStructures может размещать маркеры контента EliteMobs внутри сгенерированных структур
  • BetterStructures также может управлять защищёнными зонами, которые важны для контента, поддерживаемого EliteMobs, когда интеграция включена

Для общего процесса настройки, привязки токенов и официального жизненного цикла пакетов используйте документацию Global и страницы настройки/контента BetterStructures, а не рассматривайте этот FAQ как основной источник.

Могу ли я безопаснее предварительно сгенерировать мир?​

Да. BetterStructures предоставляет ориентированные на производительность настройки предварительной генерации в config.yml, включая:

  • percentageOfTickUsedForPregeneration (по умолчанию: 0.1) — какая часть каждого серверного тика используется для предгенерации чанков
  • pregenerationTPSPauseThreshold (по умолчанию: 12.0) — TPS, ниже которого предгенерация приостанавливается
  • pregenerationTPSResumeThreshold (по умолчанию: 14.0) — TPS, выше которого предгенерация возобновляется

Для обычной вставки структур основная настройка темпа:

percentageOfTickUsedForPasting: 0.2

Более низкие значения уменьшают воздействие на тик, но замедляют вставку структур.

Как определяются местоположения структур?​

BetterStructures хранит настройки расстояния и случайного смещения для каждого типа структур в config.yml. Полный справочник см. в разделе Настройка.

Каждый тип структуры размещается на собственной ромбовидной сетке, задаваемой сидом. Значения расстояния и смещения измеряются в чанках, а не в блоках — distanceSurface, равное 27, — это примерно одна наземная структура каждые 27 чанков, или около 432 блоков.

Основные настройки расстояния:

  • distanceSurface (по умолчанию: 27)
  • distanceShallow (по умолчанию: 22)
  • distanceDeep (по умолчанию: 22)
  • distanceSky (по умолчанию: 90)
  • distanceLiquid (по умолчанию: 60)
  • distanceDungeonV2 (по умолчанию: 80)

Связанные настройки смещения:

  • maxOffsetSurface (по умолчанию: 5)
  • maxOffsetShallow (по умолчанию: 5)
  • maxOffsetDeep (по умолчанию: 5)
  • maxOffsetSky (по умолчанию: 5)
  • maxOffsetLiquid (по умолчанию: 5)
  • maxOffsetDungeonV2 (по умолчанию: 18)

Расстояния должны быть не меньше 1. Смещения должны находиться в диапазоне от 0 до 1073741823 (максимальное значение, которое генератор случайного размещения может безопасно использовать). Если значение выходит за допустимый диапазон, BetterStructures выводит предупреждение, записывает значение по умолчанию для этого ключа обратно в config.yml и продолжает работу со значением по умолчанию, а не прерывает генерацию.

На практике это означает, что генерация остаётся управляемой сидом и конфигурацией, а не перетасовывается случайным образом при каждом перезапуске.

Что делает modularChunkPastingSpeed?​

На данный момент — ничего. modularChunkPastingSpeed (по умолчанию: 10) по-прежнему записывается в config.yml, но ничто в плагине его не читает, поэтому его изменение ни на что не влияет. Темп вставки задаётся ключом percentageOfTickUsedForPasting — используйте его, если хотите настроить, какую часть каждого тика BetterStructures тратит на размещение блоков.

Что делает spawnProtectionRadius?​

spawnProtectionRadius (по умолчанию: 100) определяет минимальное расстояние в блоках от мировых координат 0, 0, в пределах которого структуры не будут размещаться. Это применяется ко всем мирам. Установите значение 0, чтобы отключить защиту спавна.

Как отключить структуры в определённых мирах?​

BetterStructures поддерживает конфигурационный файл ValidWorlds.yml, который контролирует, в каких мирах доступна генерация структур. Каждый мир указан с булевым переключателем:

New worlds spawn structures: true
Valid worlds v2:
world: true
world_nether: true
world_the_end: true

Установите для мира значение false, чтобы предотвратить размещение структур BetterStructures в этом мире. Настройка New worlds spawn structures контролирует, будут ли вновь обнаруженные миры автоматически включены для генерации структур.

Если старый файл использует Valid worlds, обновление архивирует его и создаёт новый файл с текущими значениями по умолчанию. Перенесите нужные настройки в Valid worlds v2, следуя инструкции по обновлению конфигурации.

Также учитывайте две особенности:

  • Новые миры под управлением EliteMobs исключаются по умолчанию. BetterStructures проверяет реестр владельцев миров EliteMobs и добавляет такие миры со значением false, даже если New worlds spawn structures равно true. Существующие настройки сохраняются, включая явно заданное true. Для включённого управляемого мира выводится предупреждение. Имя мира с префиксом em_ не устанавливает его владельца; старая метка миграции больше не используется.
  • Записи удалённых миров удаляются. При запуске и примерно через десять секунд после выгрузки мира BetterStructures удаляет из Valid worlds v2 любую запись, чей мир не загружен и отсутствует на диске, чтобы в файле не накапливались мёртвые записи.

Можно ли применить обновление плагина без перезапуска?​

Да. После того как /bs downloadpluginupdate, /bs downloadall или меню настройки загрузили обновление, выполните /bs applypluginupdate. Чтобы загруженные обновления применялись автоматически, задайте nightbreak.applyPluginUpdatesWithoutRestart в config.yml значение when-empty или immediately. Что перезагружается при замене и когда команда отказывает, см. в разделе Команды.

Как починить сломанный или частично удалённый пакет контента?​

Используйте /bs forcereinstallcontent <package|all>. Обычные загрузки сравнивают версии и пропускают всё, что уже актуально, — а это ровно то поведение, которое не нужно, когда файлы на диске повреждены. Принудительная переустановка прогоняет пакет заново через тот же авторизованный конвейер загрузки, импорта и перезагрузки независимо от версии.

all охватывает все пакеты, которые BetterStructures сейчас видит как загруженные, установленные или устаревшие. Если файлы пакета исчезли полностью, BetterStructures его больше не видит, поэтому укажите его слаг напрямую — автодополнение перечисляет все известные слаги.