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

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

webapp_banner.jpg

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

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

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

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

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

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

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

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

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

isEnabled: true
canSpawnInLight: true

Эта конфигурация снимает ограничение освещения и не добавляет собственных фильтров мира, времени или луны. Список включённых миров, стандартный диапазон Y, подходящие игроки поблизости, загруженные чанки, флаги защиты и описанные ниже проверки размещения по-прежнему действуют.

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

Значения​


isEnabled​

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

КлючЗначенияПо умолчанию
isEnabledЛогическое значениеtrue
Пример
isEnabled: true

lowestYLevel​

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

КлючЗначенияПо умолчанию
lowestYLevelЦелое число0
Пример
lowestYLevel: 0

highestYLevel​

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

КлючЗначенияПо умолчанию
highestYLevelЦелое число320
Пример
highestYLevel: 320

validWorlds​

Фильтрует миры при обычном выборе игроков, в том числе для событий по времени. Если параметр опущен, собственный фильтр не добавляется, но ValidWorlds.yml и остальные проверки действуют. Глобальные подкрепления выбирают игроков непосредственно из мира призывателя и не применяют этот фильтр.

КлючЗначенияПо умолчанию
validWorldsСписок строкнет
Пример
validWorlds:
- WORLD
- FUN_LAND

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

validWorlds: []

validWorldEnvironments​

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

КлючЗначенияПо умолчанию
validWorldEnvironmentsСписок Environmentнет
Пример
validWorldEnvironments:
- NORMAL
- NETHER

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

validWorldEnvironments: []

validBiomesV2​

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

Каждая запись — это ключ биома. Имя без пространства имён, например plains или DEEP_OCEAN, читается как minecraft:<name>, регистр не важен. Если какая-либо запись не является зарегистрированным биомом, EliteMobs выводит предупреждение и отключает весь файл спавна, поэтому использующие его события и глобальные подкрепления не смогут заспавниться.

Биом определяется в случайно выбранной точке-кандидате до того, как EliteMobs рассчитает итоговый уровень Y. См. раздел Как выбирается местоположение спавна.

КлючЗначенияПо умолчанию
validBiomesV2Список Biomeнет
Пример
validBiomesV2:
- minecraft:plains
- desert

earliestTime​

Задаёт самое раннее игровое время спавна. Обе границы включены. Интервал не может переходить через полночь: если earliestTime больше latestTime, спавн не произойдёт.

Найдя место, EliteMobs каждый тик проверяет earliestTime, latestTime и moonPhase и ждёт там выполнения условий. После ожидания расстояние до игроков, освещение, загрузка чанка и WorldGuard повторно не проверяются. Финальный тест с зомби и проверка знамени мира по-прежнему выполняются перед размещением босса.

КлючЗначенияПо умолчанию
earliestTimeLong0
Пример
earliestTime: 0

latestTime​

Задаёт самое позднее игровое время спавна включительно. Оно должно быть не меньше earliestTime.

КлючЗначенияПо умолчанию
latestTimeLong24000
Пример
latestTime: 24000

moonPhase​

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

КлючЗначенияПо умолчанию
moonPhaseОсобое [1]нет
Пример
moonPhase: FULL_MOON

Особое [1]

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

bypassWorldGuard​

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

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

КлючЗначенияПо умолчанию
bypassWorldGuardЛогическое значениеfalse

canSpawnInLight​

Управляет проверкой освещения при выборе места. При false общий уровень света блока, включая свет неба, должен быть не выше 8. При true эта проверка пропускается.

КлючЗначенияПо умолчанию
canSpawnInLightЛогическое значениеfalse
Пример
canSpawnInLight: false

isSurfaceSpawn​

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

КлючЗначенияПо умолчанию
isSurfaceSpawnЛогическое значениеfalse
Пример
isSurfaceSpawn: false

isUndergroundSpawn​

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

КлючЗначенияПо умолчанию
isUndergroundSpawnЛогическое значениеfalse
Пример
isUndergroundSpawn: false

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

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

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

Глобальные подкрепления используют всех игроков в мире призывателя вместо отфильтрованного списка из шага 1. Они пропускают проверки загруженных данных, мира, окружения, инстанса и игрового правила спавна мобов из этого шага. Кандидаты по-прежнему проходят проверки биома, высоты, близости игроков, освещения и WorldGuard.

Проверяется до 100 кандидатов, по одному за тик. Если ни один не подходит, EliteMobs ждёт минуту и повторяет поиск. Начальный Y выбирается от 0 до 255. Обычный поиск вверх начинается с этого значения и заканчивается на highestYLevel или за два блока до предела высоты мира, в зависимости от того, что ниже. Подземный поиск вниз заканчивается на Y=-63, даже если lowestYLevel ниже. У поверхностного и подземного режимов свои алгоритмы поиска; если включены оба, приоритет у поверхности.

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

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

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

Эти проверки выполняются автоматически. У освещения и знамени мира есть описанные выше переключатели; bypassWorldGuard не отключает проверки WorldGuard.