Создание спавнов
Что такое пользовательские спавны?
Пользовательские спавны используются Событиями и глобальными подкреплениями для установки того, как, где и когда событие должно спавнить босса.
События и глобальные подкрепления указывают, какой спавн они используют, записывая имя файла.
Создание пользовательских спавнов
Пользовательские спавны размещаются в папке customspawns. Один пользовательский спавн может использоваться несколькими событиями одновременно, поэтому не нужно создавать один на каждое событие.
Вот пример пользовательского спавна:
isEnabled: true
validWorldEnvironments:
- NORMAL
- CUSTOM
bypassWorldGuard: false
isSurfaceSpawn: true
Создание спавна в любом месте
Чтобы создать спавн, который может происходить где угодно, ваша конфигурация должна выглядеть следующим образом:
isEnabled: true
canSpawnInLight: true
Эта конфигурация позволяет мобам спавниться в любом месте, в любом мире, в любое время и во время любой фазы луны.
Если вы хотите создать более настраиваемый спавн, читайте дальше.
Значения
isEnabled
Устанавливает, включён ли спавн.
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
Пример
isEnabled: true
lowestYLevel
Устанавливает наименьший используемый уровень Y (высоту на карте). Учтите, что значение по умолчанию 0 не даёт подземным спавнам опускаться ниже уровня моря — задайте отрицательное значение, например -64, если хотите спавны в глубоких пещерах.
| Key | Values | Default |
|---|---|---|
lowestYLevel | Integer | 0 |
Пример
lowestYLevel: 0
highestYLevel
Устанавливает наибольший используемый уровень Y (высоту на карте).
| Key | Values | Default |
|---|---|---|
highestYLevel | Integer | 320 |
Пример
highestYLevel: 320
validWorlds
Устанавливает список миров, в которых может происходить пользовательский спавн. Этот параметр можно не указывать, чтобы все ваши миры считались допустимыми.
| Key | Values | Default |
|---|---|---|
validWorlds | String List | none |
Пример
validWorlds:
- WORLD
- FUN_LAND
Если вы хотите, чтобы все ваши миры были допустимыми, вы можете просто не использовать этот параметр или оформить его так:
validWorlds: []
validWorldEnvironments
Устанавливает список допустимых типов окружения мира, в которых может происходить пользовательский спавн. Этот параметр можно не указывать, чтобы все типы окружения считались допустимыми.
| Key | Values | Default |
|---|---|---|
validWorldEnvironments | Список Environment | none |
Пример
validWorldEnvironments:
- NORMAL
- NETHER
Если вы хотите, чтобы все типы окружения были допустимыми, вы можете просто не использовать этот параметр или оформить его так:
validWorldEnvironments: []
validBiomesV2
Предназначен для задания списка допустимых биомов, в которых может происходить пользовательский спавн.
В более старых версиях EM этот параметр назывался validBiomes.
Этот параметр в настоящее время ничего не делает. EliteMobs записывает ключ в ваш файл спавна, но никогда не читает его обратно, поэтому всё, что вы в него положите, игнорируется, и спавн ведёт себя так, будто ограничения по биомам не задано.
Не полагайтесь на него, чтобы удержать босса внутри определённого биома. Используйте вместо этого validWorlds или validWorldEnvironments, либо ограничьте спавн с помощью isSurfaceSpawn / isUndergroundSpawn и настроек уровня Y.
| Key | Values | Default |
|---|---|---|
validBiomesV2 | Список Biome | none |
earliestTime
Устанавливает самое раннее внутриигровое время, в которое может происходить пользовательский спавн. В отличие от остальных настроек, earliestTime, latestTime и moonPhase проверяются в момент, когда босс вот-вот будет размещён, а не во время поиска местоположения, поэтому спавн, для которого местоположение уже найдено, просто подождёт, пока не выполнятся условия по времени и фазе луны.
| Key | Values | Default |
|---|---|---|
earliestTime | Long | 0 |
Пример
earliestTime: 0
latestTime
Устанавливает самое позднее внутриигровое время, в которое может происходить пользовательский спавн.
| Key | Values | Default |
|---|---|---|
latestTime | Long | 24000 |
Пример
latestTime: 24000
moonPhase
Устанавливает фазу луны, необходимую для того, чтобы произошёл пользовательский спавн.
| Key | Values | Default |
|---|---|---|
moonPhase | Special [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 на этом регионе.
| Key | Values | Default |
|---|---|---|
bypassWorldGuard | Boolean | false |
canSpawnInLight
Указывает, может ли пользовательский спавн происходить на блоках, освещённых источниками света. Если установлено в false, спавн происходит только при уровне освещённости 8 или ниже. Если установлено в true, спавн может происходить при любом уровне освещённости.
| Key | Values | Default |
|---|---|---|
canSpawnInLight | Boolean | false |
Пример
canSpawnInLight: false
isSurfaceSpawn
Устанавливает, может ли пользовательский спавн происходить только на поверхности мира.
| Key | Values | Default |
|---|---|---|
isSurfaceSpawn | Boolean | false |
Пример
isSurfaceSpawn: false
isUndergroundSpawn
Устанавливает, может ли пользовательский спавн происходить только под землёй.
| Key | Values | Default |
|---|---|---|
isUndergroundSpawn | Boolean | false |
Пример
isUndergroundSpawn: false
Как выбирается местоположение спавна
EliteMobs не сканирует мир в поисках места. Он выбирает случайного игрока в сети и отсчитывает смещение от него:
- Случайным образом выбирается игрок из тех, кто подходит для этого спавна. Игрок пропускается, если его мира нет в
ValidWorlds.yml, если он находится внутри арены или инстанса подземелья, если в его мире отключён спавн мобов или еслиvalidWorlds/validWorldEnvironmentsспавна исключают его мир. События по времени дополнительно пропускают игроков, находящихся внутри мира подземелья EliteMobs. - Кандидатное место выбирается на расстоянии от 24 до 128 блоков от этого игрока по обеим осям X и Z, в любом направлении.
- Уровень Y определяется в соответствии с
isSurfaceSpawn,isUndergroundSpawnили, если ни один из них не задан, поиском вверх первого блока, под которым есть твёрдая земля, а сверху — два блока воздуха. - Затем кандидат проходит через проверки ниже.
Пробуется до 100 кандидатов, по 4 за тик. Если ни один не подходит, EliteMobs ждёт минуту и пробует снова, поэтому событию может потребоваться время, чтобы действительно появиться на загруженном или сильно защищённом сервере.
Поведение проверки спавна
Когда EliteMobs пытается заспавнить босса с использованием конфигурации пользовательского спавна, он выполняет несколько автоматических проверок помимо настроенных полей:
- Близость игрока: боссы не будут спавниться в пределах 24 блоков от любого игрока
- Потолок Незера: спавн выше Y=127 заблокирован в измерении Незер
- Безопасность блоков: обеспечивает спавн на твёрдой земле с воздушным пространством над ней
- Уровень Y: итоговое местоположение должно находиться между
lowestYLevelиhighestYLevel - Игровые правила: учитывает игровое правило спавна мобов этого мира (
spawnMobsна Minecraft 1.21.11 и новее,doMobSpawningдо этого) - Флаги WorldGuard: проверяет флаги
elitemobs-events,elitemob-spawningи собственный флаг WorldGuardmob-spawning - Знамёна мира: если в
PeaceBanner.ymlвключёнsuppressEvents(а он включён по умолчанию), области, защищённые знаменем мира, пропускаются - Финальный тестовый спавн: непосредственно перед появлением босса EliteMobs спавнит и сразу же удаляет обычного ванильного зомби в этом месте. Если какой-то другой плагин защиты блокирует этого зомби, местоположение отбрасывается, и поиск начинается заново
Эти проверки выполняются автоматически и не могут быть отключены через конфигурацию.
