Создание спавнов
Что такое пользовательские спавны?
Пользовательские спавны используются Событиями и глобальными подкреплениями для установки того, как, где и когда событие должно спавнить босса.
События и глобальные подкрепления указывают, какой спавн они используют, записывая имя файла.
Создание пользовательских спавнов
Пользовательские спавны размещаются в папке 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 повторно не проверяются. Финальный тест с зомби и проверка знамени мира по-прежнему выполняются перед размещением босса.
| Ключ | Значения | По умолчанию |
|---|---|---|
earliestTime | Long | 0 |
Пример
earliestTime: 0
latestTime
Задаёт самое позднее игровое время спавна включительно. Оно должно быть не меньше earliestTime.
| Ключ | Значения | По умолчанию |
|---|---|---|
latestTime | Long | 24000 |
Пример
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 не сканирует мир в поисках места. Он выбирает случайного игрока в сети и отсчитывает смещение от него:
- Случайно выбирается подходящий игрок. Игрока пропускают, если его данные EliteMobs не загружены, мира нет в
ValidWorlds.yml, он находится в инстансовом регионе подземелья, арены или классового испытания, мир запрещает спавн мобов или исключён черезvalidWorlds/validWorldEnvironments. События по времени также исключают игроков в мирах подземелий EliteMobs. Режим игры не служит причиной исключения. - По X и Z берутся смещения от 24 до 127 блоков, знак каждого выбирается независимо. Кандидаты в незагруженных чанках отклоняются; поиск не загружает чанки.
- Y определяется через
isSurfaceSpawnилиisUndergroundSpawn. Если оба отключены, поиск идёт вверх до двух блоков воздуха над непроходимым блоком. - Затем кандидат проходит через проверки ниже.
Глобальные подкрепления используют всех игроков в мире призывателя вместо отфильтрованного списка из шага 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и собственный флаг WorldGuardmob-spawning - Знамёна мира: если
suppressEventsвPeaceBanner.ymlвключён, как по умолчанию, защищённое место отменяет текущую попытку. Событие по времени планирует следующее событие; эта проверка не запускает новый поиск места для текущей попытки. - Финальный тестовый спавн: непосредственно перед появлением босса EliteMobs спавнит и сразу же удаляет обычного ванильного зомби в этом месте. Если какой-то другой плагин защиты блокирует этого зомби, местоположение отбрасывается, и поиск начинается заново
Эти проверки выполняются автоматически. У освещения и знамени мира есть описанные выше переключатели; bypassWorldGuard не отключает проверки WorldGuard.
