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

Создание спавнов

webapp_banner.jpg

Что такое пользовательские спавны?

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

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

Создание пользовательских спавнов

Пользовательские спавны размещаются в папке customspawns. Один пользовательский спавн может использоваться несколькими событиями одновременно, поэтому не нужно создавать один на каждое событие.

Вот пример пользовательского спавна:

isEnabled: true
validWorldEnvironments:
- NORMAL
- CUSTOM
bypassWorldGuard: false
isSurfaceSpawn: true

Создание спавна в любом месте

Чтобы создать спавн, который может происходить где угодно, ваша конфигурация должна выглядеть следующим образом:

isEnabled: true
canSpawnInLight: true

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

Если вы хотите создать более настраиваемый спавн, читайте дальше.

Значения


isEnabled

Устанавливает, включён ли спавн.

KeyValuesDefault
isEnabledBooleantrue
Пример
isEnabled: true

lowestYLevel

Устанавливает наименьший используемый уровень Y (высоту на карте). Учтите, что значение по умолчанию 0 не даёт подземным спавнам опускаться ниже уровня моря — задайте отрицательное значение, например -64, если хотите спавны в глубоких пещерах.

KeyValuesDefault
lowestYLevelInteger0
Пример
lowestYLevel: 0

highestYLevel

Устанавливает наибольший используемый уровень Y (высоту на карте).

KeyValuesDefault
highestYLevelInteger320
Пример
highestYLevel: 320

validWorlds

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

KeyValuesDefault
validWorldsString Listnone
Пример
validWorlds:
- WORLD
- FUN_LAND

Если вы хотите, чтобы все ваши миры были допустимыми, вы можете просто не использовать этот параметр или оформить его так:

validWorlds: []

validWorldEnvironments

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

KeyValuesDefault
validWorldEnvironmentsСписок Environmentnone
Пример
validWorldEnvironments:
- NORMAL
- NETHER

Если вы хотите, чтобы все типы окружения были допустимыми, вы можете просто не использовать этот параметр или оформить его так:

validWorldEnvironments: []

validBiomesV2

Предназначен для задания списка допустимых биомов, в которых может происходить пользовательский спавн. В более старых версиях EM этот параметр назывался validBiomes.

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

Не полагайтесь на него, чтобы удержать босса внутри определённого биома. Используйте вместо этого validWorlds или validWorldEnvironments, либо ограничьте спавн с помощью isSurfaceSpawn / isUndergroundSpawn и настроек уровня Y.

KeyValuesDefault
validBiomesV2Список Biomenone

earliestTime

Устанавливает самое раннее внутриигровое время, в которое может происходить пользовательский спавн. В отличие от остальных настроек, earliestTime, latestTime и moonPhase проверяются в момент, когда босс вот-вот будет размещён, а не во время поиска местоположения, поэтому спавн, для которого местоположение уже найдено, просто подождёт, пока не выполнятся условия по времени и фазе луны.

KeyValuesDefault
earliestTimeLong0
Пример
earliestTime: 0

latestTime

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

KeyValuesDefault
latestTimeLong24000
Пример
latestTime: 24000

moonPhase

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

KeyValuesDefault
moonPhaseSpecial [1]none
Пример
moonPhase: FULL_MOON

Special [1]

Развернуть таблицу
Фаза луныПревью
NEW_MOON🌑
WAXING_CRESCENT🌒
FIRST_QUARTER🌓
WAXING_GIBBOUS🌔
FULL_MOON🌕
WANING_GIBBOUS🌖
WANING_CRESCENT🌘
LAST_QUARTER🌗

bypassWorldGuard

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

Этот параметр в настоящее время ничего не делает. EliteMobs читает ключ из вашего файла спавна, но никогда его не использует, поэтому флаги WorldGuard проверяются всегда, независимо от того, что вы здесь зададите. Чтобы разрешить спавн внутри защищённого региона, вместо этого выставьте соответствующие флаги WorldGuard на этом регионе.

KeyValuesDefault
bypassWorldGuardBooleanfalse

canSpawnInLight

Указывает, может ли пользовательский спавн происходить на блоках, освещённых источниками света. Если установлено в false, спавн происходит только при уровне освещённости 8 или ниже. Если установлено в true, спавн может происходить при любом уровне освещённости.

KeyValuesDefault
canSpawnInLightBooleanfalse
Пример
canSpawnInLight: false

isSurfaceSpawn

Устанавливает, может ли пользовательский спавн происходить только на поверхности мира.

KeyValuesDefault
isSurfaceSpawnBooleanfalse
Пример
isSurfaceSpawn: false

isUndergroundSpawn

Устанавливает, может ли пользовательский спавн происходить только под землёй.

KeyValuesDefault
isUndergroundSpawnBooleanfalse
Пример
isUndergroundSpawn: false

Как выбирается местоположение спавна

EliteMobs не сканирует мир в поисках места. Он выбирает случайного игрока в сети и отсчитывает смещение от него:

  1. Случайным образом выбирается игрок из тех, кто подходит для этого спавна. Игрок пропускается, если его мира нет в ValidWorlds.yml, если он находится внутри арены или инстанса подземелья, если в его мире отключён спавн мобов или если validWorlds / validWorldEnvironments спавна исключают его мир. События по времени дополнительно пропускают игроков, находящихся внутри мира подземелья EliteMobs.
  2. Кандидатное место выбирается на расстоянии от 24 до 128 блоков от этого игрока по обеим осям X и Z, в любом направлении.
  3. Уровень Y определяется в соответствии с isSurfaceSpawn, isUndergroundSpawn или, если ни один из них не задан, поиском вверх первого блока, под которым есть твёрдая земля, а сверху — два блока воздуха.
  4. Затем кандидат проходит через проверки ниже.

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

Поведение проверки спавна

Когда EliteMobs пытается заспавнить босса с использованием конфигурации пользовательского спавна, он выполняет несколько автоматических проверок помимо настроенных полей:

  • Близость игрока: боссы не будут спавниться в пределах 24 блоков от любого игрока
  • Потолок Незера: спавн выше Y=127 заблокирован в измерении Незер
  • Безопасность блоков: обеспечивает спавн на твёрдой земле с воздушным пространством над ней
  • Уровень Y: итоговое местоположение должно находиться между lowestYLevel и highestYLevel
  • Игровые правила: учитывает игровое правило спавна мобов этого мира (spawnMobs на Minecraft 1.21.11 и новее, doMobSpawning до этого)
  • Флаги WorldGuard: проверяет флаги elitemobs-events, elitemob-spawning и собственный флаг WorldGuard mob-spawning
  • Знамёна мира: если в PeaceBanner.yml включён suppressEvents (а он включён по умолчанию), области, защищённые знаменем мира, пропускаются
  • Финальный тестовый спавн: непосредственно перед появлением босса EliteMobs спавнит и сразу же удаляет обычного ванильного зомби в этом месте. Если какой-то другой плагин защиты блокирует этого зомби, местоположение отбрасывается, и поиск начинается заново

Эти проверки выполняются автоматически и не могут быть отключены через конфигурацию.