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

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

webapp_banner.jpg

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

Перед началом

Куда помещаются файлы боссов?​

Файлы боссов помещаются в папку конфигурации ~/plugins/EliteMobs/custombosses.

Можно создавать подпапки, например ~/plugins/EliteMobs/custombosses/mybosses. Это рекомендуется для поддержания порядка.

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

Для создания пользовательских боссов и другого контента можно воспользоваться Forge.

Минимально возможная конфигурация​

Минимально возможный файл конфигурации пользовательского босса выглядит так:

Обратите внимание: это просто пустой файл. Он всё равно создаст пользовательского босса-зомби с пользовательским именем, поскольку таковы значения по умолчанию. Всё на этой странице необязательно!

Повторное использование другого файла босса​

Файл босса может взять за основу другой файл босса с помощью extends и изменить только то, что отличается:

extends: my_base_boss.yml
name: '&cEnraged Copy'
healthMultiplier: 3

Файл наследует все значения базового файла и переопределяет ключи, которые задаёт сам. Вложенные разделы, например patrol, объединяются по отдельным ключам; список, например uniqueLootList, целиком заменяет список базового файла. Указывайте базовый файл только по имени, без пути к папке. Это должен быть другой файл в custombosses, включая её подпапки, и он сам может расширять ещё один базовый файл.

isEnabled, spawnLocation, spawnLocations, leashRadius, powers и eliteScript никогда не наследуются, поэтому задавайте их в каждом файле, которому они нужны. Базовый файл с isEnabled: false работает как шаблон: сам он заспавниться не может, но расширяющие его файлы всё равно загружаются. EliteMobs не записывает значения по умолчанию в файл, использующий extends, поэтому он остаётся таким же коротким, каким вы его написали. Отсутствующий базовый файл, путь в extends или замкнутый круг ссылок extends отключают файл с предупреждением в консоли.

Пример босса​

Давайте посмотрим на пример того, как выглядит файл босса.

Пример
isEnabled: true
entityType: ZOMBIE
name: '&eTest boss'
level: dynamic
timeout: 10
isPersistent: false
healthMultiplier: 2.0
damageMultiplier: 0.5
helmet: GOLDEN_HELMET
chestplate: IRON_CHESTPLATE
leggings: LEATHER_LEGGINGS
boots: CHAINMAIL_BOOTS
mainHand: GOLDEN_AXE
offHand: SHIELD
isBaby: false
powers:
- invulnerability_knockback.lua
spawnMessage: A test boss has been spawned!
deathMessage: A test boss has been slain by $players!
escapeMessage: A test boss entity has escaped!
locationMessage: 'Test entity: $location'
uniqueLootList:
- magmaguys_toothpick.yml:1
dropsEliteMobsLoot: true
dropsVanillaLoot: true
trails:
- BARRIER
onDamageMessages:
- "I've hit you!"
onDamagedMessages:
- "I've been hit!"

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

isEnabled​

Определяет, включён ли босс.

КлючЗначенияПо умолчанию
isEnabledtrue / falsetrue
Пример
isEnabled: true

entityType​

Задаёт тип сущности босса. Это должен быть создаваемый тип живого существа с зарегистрированными свойствами моба EliteMobs.

КлючЗначенияПо умолчанию
entityTypeВыберите отсюда.
Значение также должно присутствовать в папке ~plugins/EliteMobs/mobproperties.
ZOMBIE
Магмовые кубы и слизни

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

Мы также рекомендуем использовать следующий EliteScript, чтобы магмовые кубы и слизни не удерживали игроков в непрерывном оглушении:

eliteScript:
NerfDamage:
Events:
- ZoneEnterEvent
- ZoneLeaveEvent
Zone:
shape: SPHERE
radius: 1
Target:
targetType: SELF
Actions:
- action: SET_MOB_AI
Target:
targetType: SELF
bValue: false
duration: 10
Пример
entityType: ZOMBIE

name​

Задаёт имя босса.

КлючЗначенияПо умолчанию
nameString, принимает color codes и перечисленные ниже плейсхолдеры"Default Name"
Пример
name: "$normalLevel &cCool boss!"

create_boss_name_pic_no_level.jpg

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

ПлейсхолдерОписаниеПримерРезультат (для босса 10 уровня)
$levelЗаменяется на уровень"$level Cool boss"10 Cool boss
$normalLevelЗаменяется на уровень, оформленный для обычных мобов"$normalLevel Cool boss"[10] Cool boss
$minibossLevelЗаменяется на уровень, оформленный для минибоссов"$minibossLevel Cool boss"〖10〗 Cool boss
$bossLevelЗаменяется на уровень, оформленный для боссов"$bossLevel Cool boss"『10』 Cool boss
$reinforcementLevelЗаменяется на уровень, оформленный для подкреплений"$reinforcementLevel Cool boss"〔10〕 Cool Boss
$eventBossLevelЗаменяется на уровень, оформленный для боссов событий"$eventBossLevel Cool boss"「10」 Cool boss
Пример
name: "$normalLevel &cCool boss!"

create_boss_name_pic.jpg


level​

Задаёт уровень босса.

КлючЗначенияПо умолчанию
levelПоложительные Integer числа или dynamicdynamic

dynamic берёт наибольший уровень естественного появления, рассчитанный для игроков в том же мире в пределах 16 * (дальность прорисовки сервера + 2) блоков, но не ниже 1. Зарегистрированные динамические боссы пересчитываются каждые 5 секунд, поэтому уровень может меняться после появления. Явно заданный при создании уровень переопределяет это поведение. Для региональных боёв со стабильной сложностью используйте фиксированный уровень.

Пример
level: 1

scale​

Задаёт масштаб (размер) босса.

КлючЗначенияПо умолчанию
scaleMultiplier1.0

При масштабировании 1.0 соответствует размеру по умолчанию. Чтобы сделать сущность крупнее, увеличьте значение (например, 1.2). Чтобы сделать сущность меньше, уменьшите значение (например, 0.8).

Пример
scale: 1.2

bossType​

Классифицирует босса для таких систем, как автоматическая классовая добыча. Отображение здоровья использует healthMultiplier и настройки MobCombatSettings.yml, а не эту метку.

КлючЗначенияПо умолчанию
bossTypeNORMAL, MINIBOSS, BOSS, REINFORCEMENT, EVENTNORMAL

Для автоматической классовой добычи MINIBOSS задаёт ранг минибосса, BOSS и EVENT задают ранг босса, а обычные боссы используют ранг рядового моба. classLootRank может переопределить этот выбор.

REINFORCEMENT задаётся в конфигурации и не назначается автоматически каждому призванному существу. Отслеживание подкреплений и ездовых существ во время работы отдельно определяет их право на награды.

Пример
bossType: MINIBOSS

silent​

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

КлючЗначенияПо умолчанию
silentBooleanfalse

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

Пример
silent: true

healthMultiplier​

Умножает здоровье босса. Отображение здоровья также учитывает это значение: отдельная полоса босса требует включённого displayBossBarForHighMultiplier и множителя выше bossBarHealthMultiplierThreshold в MobCombatSettings.yml.

КлючЗначенияПо умолчанию
healthMultiplierMultiplier1.0
У здоровья босса есть жёсткий предел, у урона нет

Экспоненциальное базовое здоровье сначала ограничивается пределом сервера. Затем EliteMobs применяет healthMultiplier, устанавливает минимум 1 HP и снова ограничивает результат значением settings.attribute.maxHealth.max из spigot.yml. При запуске EliteMobs повышает этот параметр до 2048, если он ниже, но не выше 2048. Поэтому на сервере с настройками по умолчанию предел равен 2048.

Эти пределы относятся к базовому расчёту. Если в инстансе участвуют хотя бы два игрока, его боссы затем получают множитель группы 0.75 * playerCount без повторного ограничения со стороны плагина. Таблица ниже не гарантирует итоговое здоровье в инстансе или то, что сервер примет значение выше предела атрибута.

Базовое здоровье подчиняется формуле 2.1875 × 2^(level / 5), то есть удваивается каждые 5 уровней. В сочетании с этим ограничением у каждого healthMultiplier есть уровень, после которого босс полностью перестаёт получать здоровье, тогда как его урон продолжает расти:

healthMultiplierЗдоровье перестаёт расти на уровне
1.050
2.045
5.038
7.036
10.033
20.028
40.023

После этого уровня дальнейшее повышение уровня в конфигурации не увеличивает фактическое максимальное здоровье. Урон по-прежнему зависит от режима боя, относительных навыков, характеристик оружия и множителей. Предел здоровья не гарантирует фиксированное число ударов ни для одной стороны. EliteMobs предупреждает, когда результат умножения превышает предел, но предварительное ограничение базового здоровья проходит без предупреждения. Множитель ниже 1 применяется к уже ограниченному базовому здоровью.

Если вам действительно нужно больше 2048 HP, поднимите settings.attribute.maxHealth.max в spigot.yml самостоятельно; ограничение читает актуальное значение сервера, а не жёстко заданную константу.

Пример
healthMultiplier: 1.5

damageMultiplier​

Задаёт множитель урона босса.

КлючЗначенияПо умолчанию
damageMultiplierMultiplier1.0
Пример
damageMultiplier: 1.5

isBaby​

Определяет, использует ли босс детёныша (baby-вариант) моба. Применимо только к мобам, у которых есть baby-вариант. Если вы хотите замаскировать босса, но при этом сохранить его детёнышем и под маскировкой (убедитесь, что сущность маскировки тоже поддерживает baby-вариант), вы можете использовать эту настройку:

disguise: HOGLIN:baby
КлючЗначенияПо умолчанию
isBabytrue / falsefalse
Пример
isBaby: true

helmet/chestplate/leggings/boots/mainHand/offHand​

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

КлючЗначенияПо умолчанию
helmetMaterial, UUIDнет
chestplateMaterialнет
leggingsMaterialнет
bootsMaterialнет
mainHandMaterialнет
offHandMaterialнет

Используйте названия материалов в верхнем регистре. Эти поля создают экипировку из материалов и не загружают .yml пользовательских предметов. Для некожаных предметов добавьте целочисленное значение custom model data в формате ITEM_MATERIAL:ID. Например, DIAMOND_SWORD:1 выбирает custom model data 1 из ресурспака.

Примечание 2: Это поле также позволяет задавать пользовательские цвета кожаной брони в формате ITEM_MATERIAL:CODE, где код — шестнадцатеричное представление цвета. Пример: LEATHER_LEGGINGS:ffa500 создаст оранжевые поножи. Можно использовать hex-коды, просто уберите из них символ #. Hex-коды можно взять здесь.

Примечание 3: UUID игрока в нижнем регистре с дефисами создаёт голову через поиск профиля офлайн-игрока Bukkit. Парсер не требует присутствия игрока на сервере; отображаемый скин зависит от того, сможет ли сервер получить профиль.

Пример
helmet: 198c4123-cafc-45df-ba79-02a421eb8ce7
chestplate: DIAMOND_CHESTPLATE:1
leggings: LEATHER_LEGGINGS:ffa500
boots: NETHERITE_BOOTS
mainHand: DIAMOND_SWORD
offHand: SHIELD

create_boss_armor.jpg


powers​

Задаёт способности, которыми обладает босс.

КлючЗначенияПо умолчанию
powersСм. список ниженет
Пример
powers:
- hyper_loot.lua
- attack_arrow.lua
- mycoolpower.lua

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

Примечание: Способности могут быть файлами .yml (EliteScript) или .lua (Lua-скрипты). Оба типа поддерживаются и могут свободно смешиваться в списке powers. Почти все готовые способности теперь имеют формат .lua.

Старые имена способностей .yml по-прежнему работают

Если способность .lua с тем же базовым именем уже загружена, EliteMobs автоматически направляет запрос .yml или .yaml к ней. Например, attack_arrow.yml выбирает загруженную attack_arrow.lua. Одного наличия файла на диске недостаточно. В новых конфигурациях указывайте файл .lua напрямую.


Промежуточная конфигурация: призыв подкреплений​

Подкрепления также относятся к категории powers и используют следующие настройки:

Примечание: Подкрепления настраиваются внутри секции powers файла конфигурации босса, а не в отдельной секции.

Настройки подкреплений
КлючОписаниеЗначенияПо умолчанию
summonTypeЧто вызывает появление подкрепления. Обязательно.См. список ниженет
filenameИмя файла призываемого босса. Обязательно, кроме записей кристаллов.Stringнет
chanceВероятность обычной группы призыва. GLOBAL и кристаллы игнорируют её. Необязательно.Double1.0
amountЗадаёт количество призываемых подкреплений. Необязательно.Integer1
inheritAggroЗаставляет подкрепление унаследовать агро от босса. Необязательно.true / falsefalse
spawnNearbyСоздаёт подкрепления в области 30x30 блоков вокруг точки появления, ±15 по X и Z. Необязательно.true / falsefalse
inheritLevelЗаставляет подкрепление унаследовать уровень босса. Необязательноtrue / falsefalse
customSpawnЗаставляет подкрепление появляться через систему пользовательского появления. Используется только с summonType: GLOBALИмя файла Custom Spawnнет
locationОтносительное смещение появления. Необязательно.x,y,z, всегда относительно босса. Для региональных боссов смещение отсчитывается от точки появления.нет
lightningRodНастройка summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL: кристаллы Края вызывают молнии вокруг себя. Необязательно.true / falsefalse
difficultyIDОграничивает запись определёнными сложностями инстанс-подземелья. Необязательно.String или список строкнет

Типы призыва задают условия появления подкреплений. Ниже приведён список допустимых типов призыва:

Типы призыва
ЗначениеОписание
ONCEПытается призвать группу при подходящем уроне от игрока, пока попытка не будет отмечена как выполненный призыв. Неудачная проверка вероятности допускает повтор при следующем ударе.
ON_HITПытается призвать группу при уроне от игрока. Требует активного ИИ, неотменённого события урона и как минимум 3 единиц урона.
ON_COMBAT_ENTERПризывает подкрепления, когда босс вступает в бой.
ON_DEATHПризывает подкрепления при смерти босса.
GLOBALСтавит в очередь amount призывов через customSpawn сразу после появления босса и каждые 10 секунд, в том числе вне боя. Перестаёт добавлять призывы, как только число отслеживаемых существ достигает 30 * число игроков в мире появления. Требует корректного пользовательского появления.
ON_COMBAT_ENTER_PLACE_CRYSTALПри вступлении в бой размещает один кристалл Края по заданному смещению. Игнорирует amount и chance; предназначен для пользовательских боёв с драконом.

ONCE использует те же требования активного ИИ и минимум 3 единиц урона, что и ON_HIT. GLOBAL использует собственную конфигурацию появления вместо обычных полей location, spawnNearby, inheritLevel и inheritAggro. Полное поведение описано в разделе Подкрепления.

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

Пример
powers:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
chance: 0.5
amount: 5
inheritAggro: true
spawnNearby: true
inheritLevel: true
location: 10,20,30
lightningRod: false

Экспертная конфигурация: создание собственных способностей​

Вы можете создавать собственные способности — либо прямо в файле босса, либо в виде нового файла конфигурации в папке powers. Подробнее об этом можно узнать здесь.

Примечание: Вы также можете задавать поведение босса прямо в файле конфигурации босса с помощью поля eliteScript. Полную документацию по использованию Elite Scripts смотрите в руководстве по способностям.

В качестве альтернативы EliteScript способности также можно писать на Lua. Lua-способности размещаются в папке powers с расширением .lua и указываются по имени файла в списке powers. Подробнее смотрите в руководстве Начало работы с Lua.

Ограничение способностей в зависимости от сложности инстанс-подземелья​

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

Параметры ограничения способностей
КлючОписаниеЗначенияПо умолчанию
filenameИмя файла способности.Stringнет
difficultyIDОдин ID сложности или список, разрешаемый по числовым или именованным правилам сложности подземелья.Строка, число или списокнет

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

Пример
powers:
- filename: movement_speed.lua
difficultyID:
- myDifficultyName1
- myDifficultyName2
- myDifficultyName3

spawnMessage​

Задаёт сообщение, отправляемое при появлении босса. Требует настройки announcementPriority.

КлючЗначенияПо умолчанию
spawnMessageStrings и color codesнет
Пример
announcementPriority: 3
spawnMessage: I rise once more!

create_boss_spawn_message.jpg


deathMessages​

Задаёт список сообщений при смерти босса с записанными участниками, наносившими урон. Требует включённого doCustomEliteMobsDeathMessages в MobCombatSettings.yml (по умолчанию true). Приоритет 0 отправляет сообщения лично участникам, положительные приоритеты рассылают их всем.

КлючЗначенияПо умолчанию
deathMessagesStrings, color codes и перечисленные ниже плейсхолдерынет
Пример
announcementPriority: 3
deathMessages:
- '&e&l---------------------------------------------'
- '&4The Test Boss has been killed!'
- '&c&l 1st Damager: $damager1name &cwith $damager1damage damage!'
- '&6&l 2nd Damager: $damager2name &6with $damager2damage damage!'
- '&e&l 3rd Damager: $damager3name &ewith $damager3damage damage!'
- '&4Slayers: $players'
- '&e&l---------------------------------------------'

create_boss_death_message.jpg

Сообщения о смерти используют следующие плейсхолдеры:

Плейсхолдеры
ЗначениеОписание
$damager1nameОтображаемое имя игрока с наибольшим уроном
$damager1NameНикнейм игрока с наибольшим уроном
$damager2nameОтображаемое имя игрока со вторым по величине уроном
$damager2NameНикнейм игрока со вторым по величине уроном
$damager3nameОтображаемое имя игрока с третьим по величине уроном
$damager3NameНикнейм игрока с третьим по величине уроном
$damager1damageВеличина урона игрока с наибольшим уроном
$damager2damageВеличина урона игрока со вторым по величине уроном
$damager3damageВеличина урона игрока с третьим по величине уроном
$playersСписок отображаемых имён всех, кто наносил урон
$playersNameСписок никнеймов всех, кто наносил урон

deathMessage​

Задаёт одно сообщение при смерти босса. Используется, когда deathMessages пуст, с теми же глобальным переключателем и правилами приоритета. Поддерживает $players и $playersName, но не плейсхолдеры отдельных мест в рейтинге урона.

КлючЗначенияПо умолчанию
deathMessageString, цветовые коды, $players и $playersNameнет
Пример
announcementPriority: 3
deathMessage: '&4The Test Boss has been killed by $players!'

onKillMessage​

Задаёт сообщение о смерти игрока, убитого этим боссом. Использует обработку смерти игрока и не требует announcementPriority.

КлючЗначенияПо умолчанию
onKillMessageStrings и color codesнет

Плейсхолдеры:

ЗначениеОписание
$playerОтображаемое имя убитого игрока
$playerNameНикнейм убитого игрока
$entityИмя босса
Пример
announcementPriority: 3
onKillMessage: I win, you lose!

create_boss_spawn_message.jpg


slimeSize​

Задаёт размер босса-слизня, но работает только для слизней и магмовых кубов.

КлючЗначенияПо умолчанию
slimeSizeInteger4
Пример
slimeSize: 5

neutral​

Отключает принудительное назначение игроков целью для нейтральных сущностей, таких как волки и железные големы. Также предотвращает запуск программы поведения Mind. Собственное поведение сущности сохраняется; настройка не делает враждебный тип сущности пассивным.

КлючЗначенияПо умолчанию
neutralBooleanfalse
Пример
neutral: true

Расширенные настройки​

timeout​

Задаёт время в минутах до исчезновения пользовательского босса. 0 отключает таймаут.

КлючЗначенияПо умолчанию
timeoutВремя (в минутах), Integer0
Пример
timeout: 20

Заставляет босса скрыться через 20 минут.


isPersistent​

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

КлючЗначенияПо умолчанию
isPersistenttrue / falsefalse
Пример

Пример:

isPersistent: true

damageModifiers​

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

КлючЗначенияПо умолчанию
damageModifiersMaterialнет
Пример
damageModifiers:
- material:DIAMOND_SWORD,multiplier:0.8
- material:TRIDENT,multiplier:2.0

В этом примере боссы будут получать от алмазных мечей только 80% урона (то есть на 20% меньше), но от трезубцев — 200% урона (то есть в 2 раза больше).


normalizedCombat​

Использует normalizedDamageToEliteMultiplier и normalizedDamageToPlayerMultiplier из ~/plugins/EliteMobs/mobproperties. Расчёт нормализованного урона описан в разделе Система урона. Глобальный normalizeRegionalBosses принудительно включает нормализацию для региональных боссов, даже если здесь стоит false. Для боссов с фазами используются настройки первой фазы.

КлючЗначенияПо умолчанию
normalizedCombattrue / falsefalse
Пример

Пример:

normalizedCombat: true

scaledCombat​

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

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

Если задано scaledCombat: true, эта настройка имеет приоритет, даже если босс в остальном использовал бы нормализованный бой. Естественно появляющиеся элитные мобы по умолчанию используют масштабируемый бой (управляется параметром useScaledCombatForNaturalElites в MobCombatSettings.yml).

Полное описание работы масштабируемого боя смотрите на странице Система урона.

КлючЗначенияПо умолчанию
scaledCombattrue / falsefalse
Пример
scaledCombat: true

escapeMessage​

Задаёт сообщение, которое рассылается игрокам, когда босс скрывается по механике timeout. Требует настроенного announcementPriority.

КлючЗначенияПо умолчанию
escapeMessageStringнет
Пример
announcementPriority: 3
timeout: 60
escapeMessage: "Sayonara!"

create_boss_escape_message.jpg


locationMessage​

Задаёт текст полосы для отслеживания здоровья и положения босса. Требует announcementPriority не ниже 1 и включённого глобального showCustomBossLocation. Ключ необязателен; по умолчанию используется $name: $distance blocks away!.

КлючЗначенияПо умолчанию
locationMessageString, цветовые коды и перечисленные ниже плейсхолдеры$name: $distance blocks away!

Плейсхолдеры:

ЗначениеОписание
$nameИмя босса
$distanceЗаменяется на расстояние от игрока до пользовательского босса. Это предпочтительный вариант.
$locationЗаменяется на координаты x y z пользовательского босса
Пример
announcementPriority: 3
locationMessage: "&4Cool boss: At $location only $distance blocks away!"

create_boss_location_message.jpg

Это выведет что-то вроде Cool boss: At 414,55,347 only 10 blocks away!


uniqueLootList​

Задаёт пользовательские предметы, выпадающие из босса.

КлючЗначенияПо умолчанию
uniqueLootListListнет

Записи добычи в Custom Loot следуют формату таблиц добычи. Информация об этом здесь! Учтите, что некоторые более старые файлы могут использовать устаревшие таблицы добычи, выглядящие иначе, чем в примере.

Пример
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.02
- minecraft:type=DIAMOND:amount=1:chance=0.9
- magmaguys_toothpick.yml:0.5:elitemobs.*

dropsEliteMobsLoot​

Определяет, будет ли из босса выпадать добыча EliteMobs, за исключением предметов из uniqueLootList. Включает монеты.

КлючЗначенияПо умолчанию
dropsEliteMobsLoottrue / falsetrue

Для мобов-подкреплений рекомендуется устанавливать значение false.

Пример
dropsEliteMobsLoot: true

dropsVanillaLoot​

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

КлючЗначенияПо умолчанию
dropsVanillaLoottrue / falsetrue
Пример
dropsVanillaLoot: true

dropsRandomLoot​

Определяет, будет ли из пользовательского босса выпадать процедурно сгенерированная добыча EliteMobs. Не включает элитные монеты.

КлючЗначенияПо умолчанию
dropsRandomLoottrue / falsetrue
Пример
dropsRandomLoot: true

dropsSkillXP​

Определяет, даёт ли убийство босса опыт навыков. Он развивает навыки оружия и брони и их бонусы. Обработчик опыта исключает подкрепления и ездовых существ даже при true.

КлючЗначенияПо умолчанию
dropsSkillXPtrue / falsetrue

Рекомендуется устанавливать значение false для мобов-подкреплений или боссов, которые не должны влиять на прогресс навыков.

Пример
dropsSkillXP: false

Автоматическая классовая добыча​

classLoot включает отдельный розыгрыш базовой экипировки. По умолчанию включён, кроме bossType: REINFORCEMENT. classLootDifficulty принимает AUTO, NORMAL, HARD или MYTHIC; classLootRank принимает AUTO, TRASH, MINIBOSS или BOSS. Оба по умолчанию равны AUTO. Недопустимое значение вызывает предупреждение и заменяется на AUTO.

Авторскую классовую экипировку определяйте как обычные предметы itemType: CLASS_LOOT, указанные в uniqueLootList. Они участвуют в выборе классовой экипировки, а не в независимых розыгрышах уникальных предметов. Старое поле босса classLootItems не читается. Условия получения, пределы, охват семейств, профили и определение сложности описаны в разделе Автоматическая классовая добыча.


trails​

Задаёт след, который босс оставляет за собой при движении.

КлючЗначенияПо умолчанию
trailsЧастицы или материалы предметовнет

Для следов подходят только частицы без дополнительных данных, то есть простые частицы из списка допустимых частиц. Требующие данных DUST и ITEM пропускаются. BLOCK и LAVA прекращают обработку оставшегося списка, поэтому не используйте их. Названия материалов создают анимированный след из предметов. Следы работают, пока босс действителен, даже когда он стоит на месте.

Пример
trails:
- CLOUD

onDamageMessages​

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

КлючЗначенияПо умолчанию
onDamageMessagesListнет
Пример
onDamageMessages:
- "I hit you!"
- "Haha I hit you!"

create_boss_damage_message.jpg


onDamagedMessages​

При событии урона EliteMobs случайная строка временно заменяет имя босса. Это не ограничено уроном от игроков. Имя восстанавливается через 80 тиков. Повторные события могут заменить строку, а более ранний таймер может восстановить имя до истечения срока последней строки.

КлючЗначенияПо умолчанию
onDamagedMessagesListнет
Пример
onDamagedMessages:
- "You hit me!"
- "I've been hit!"

create_boss_damaged_message.jpg


mountedEntity​

Задаёт сущность, на которую сядет верхом босс.

КлючЗначенияПо умолчанию
mountedEntityИмя файла босса, на которого нужно сесть верхом или тип сущностинет

Не пытайтесь заставить босса сесть верхом на самого себя.

Пример
mountedEntity: wild_wolf.yml

create_boss_mounted.jpg

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


announcementPriority​

Задаёт уровень приоритета объявлений. Низкие приоритеты означают, что объявления не делаются, а более высокие позволяют объявлять не только в чате, но и в Discord, если он настроен.

КлючЗначенияПо умолчанию
announcementPriorityInteger0

Примечание: Если ключ отсутствует, но есть locationMessage, spawnMessage, deathMessage, escapeMessage или непустой список deathMessages, при загрузке EliteMobs записывает в файл announcementPriority: 0. Так параметр становится видимым и его проще повысить. До изменения босс продолжает работать с приоритетом 0.

Ниже приведён список того, что делают приоритеты:

ЗначениеОписание
0Значение по умолчанию. Нет объявлений о появлении и побеге или отслеживания; настроенный текст смерти всё ещё можно отправить лично наносившим урон игрокам.
1Босс может отправлять настроенные сообщения о появлении, смерти и побеге в чат. Отслеживание через /em доступно при включённом showCustomBossLocation; locationMessage необязателен.
2Идентично 1 для пользовательских боссов — отдельной ветки кода для приоритета 2 не существует. (А вот пользовательские события обрабатывают 2 иначе; см. Система приоритета объявлений.)
3Вдобавок к возможностям 1 широковещательные сообщения будут дублироваться в Discord, если он настроен. Информация о настройке Discord здесь.

Вот пример босса, которого можно отслеживать и который умеет отправлять сообщения о появлении/смерти/побеге в чат и в Discord:

Пример
announcementPriority: 3

Примечание: Настройте spawnMessage, deathMessage/deathMessages и escapeMessage для соответствующих объявлений в чате и Discord. У отслеживания есть текст положения по умолчанию; задавайте locationMessage, только чтобы изменить его.


followDistance​

Задаёт расстояние, на котором боссы получают агро и вступают в бой. Измеряется от самого моба.

КлючЗначенияПо умолчанию
followDistanceInteger0

Положительный followDistance переопределяет стандартный атрибут дальности преследования живой сущности; 0 оставляет его без изменений.

Примечание 1: Региональные боссы без состояния готовности делят текущую дальность на 3 при замедлении после появления или выхода из боя. Вступление в бой восстанавливает записанную дальность. Это предотвращает привлечение целей со слишком большого расстояния и конфликты с привязью.

Примечание 2: Чем выше followDistance, тем сильнее босс нагружает процессор сервера. Используйте с осторожностью и ответственно!

Пример
followDistance: 30

Задаёт радиус в 30 блоков: если игрок окажется в пределах этого расстояния от босса, тот начнёт преследовать и атаковать игрока.


onDeathCommands​

Задаёт список команд, выполняемых при смерти пользовательского босса.

КлючЗначенияПо умолчанию
onDeathCommandsListнет

Команды выполняются от консоли. Команда $chance=x$, содержащая $players, проверяет вероятность отдельно для каждого наносившего урон игрока. Поддерживаются следующие плейсхолдеры:

ЗначениеОписание
$levelПлейсхолдер уровня босса.
$nameПлейсхолдер имени босса.
$chance=x$Задаёт команде шанс срабатывания.
$playersЗаставляет команду выполниться один раз для каждого игрока из списка нанёсших урон, подставляя каждый раз никнейм другого игрока из этого списка.
$locationWorldNameИмя мира в момент смерти.
$locationXКоордината X босса в момент смерти.
$locationYКоордината Y босса в момент смерти.
$locationZКоордината Z босса в момент смерти.
$damager1nameНикнейм игрока, нанёсшего наибольший урон
$damager2nameНикнейм игрока, нанёсшего второй по величине урон
$damager3nameНикнейм игрока, нанёсшего третий по величине урон

Посмотрите на пример ниже, чтобы лучше понять, как это работает.

Пример
onDeathCommands:
- "say $players has killed $name! That was level $level!"
- "$chance=0.5$ say What a kill!"

create_boss_mounted.jpg

Если Player1, Player2 и Player3 наносили боссу урон перед тем, как убить его, вывод команды в консоли будет таким:

say Player1 has killed CustomBossName! That was level X!
say Player2 has killed CustomBossName! That was level X!
say Player3 has killed CustomBossName! That was level X!

Кроме того, с вероятностью 50% будет также выведено следующее:

say What a kill!

onSpawnCommands​

Задаёт список команд, которые выполнятся при появлении босса.

КлючЗначенияПо умолчанию
onSpawnCommandsListнет

Выполняется от консоли и поддерживает маркер вероятности $chance=x$. Плейсхолдеры босса, положения и игроков из команд смерти не подставляются.

Пример
onSpawnCommands:
- say Boss has spawned!

create_boss_mounted.jpg


onCombatEnterCommands​

Задаёт список команд, которые выполнятся, когда босс вступит в бой.

КлючЗначенияПо умолчанию
onCombatEnterCommandsListнет

Выполняется от консоли и поддерживает маркер вероятности $chance=x$. Плейсхолдеры босса, положения и игроков из команд смерти не подставляются.

Пример
onCombatEnterCommands:
- say Boss has entered combat!

create_boss_mounted.jpg


onCombatLeaveCommands​

Задаёт список команд, выполняемых, когда босс выходит из боя.

КлючЗначенияПо умолчанию
onCombatLeaveCommandsListнет

Выполняется от консоли и поддерживает маркер вероятности $chance=x$. Плейсхолдеры босса, положения и игроков из команд смерти не подставляются.

Пример
onCombatLeaveCommands:
- say Boss has left combat!

create_boss_mounted.jpg


disguise​

Задаёт маскировку LibsDisguises, если этот плагин включён. Подробнее здесь.

КлючЗначенияПо умолчанию
disguiseStringнет
customDisguiseDataStringнет
Пример маскировки
disguise: CHICKEN

create_boss_mounted.jpg

Пример пользовательской маскировки
disguise: custom:the_beast_sanctuary_beast
customDisguiseData: player the_beast_sanctuary_beast setskin {"id":"44e6d42b-bd8d-4e48-873b-fae7afed36e4","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTY2NjcwNjYwODA1MCwKICAicHJvZmlsZUlkIiA6ICI3MmY5MTdjNWQyNDU0OTk0YjlmYzQ1YjVhM2YyMjIzMCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGF0X0d1eV9Jc19NZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YmYyMTY4NmM1MGQ1ODhmZmExMDZhZDdjNmViZTk1ZWZiMjE2NDU5ODRjZDFjZWYwODkzNDc4NzMzNmI2YTI3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=","signature":"jSsQvpUeWVtyqjtnydPadormkrZLVihetiX4dFQb3+BF/1x6wOgsNKRnnwj6J1mfu2im79LYEJbL+fQ9p1SJIW1uZ6hV7vPSAGUopyXGHNibNXorfV/dGjM77S0t86Jls50XWgJAnLn5RdhQcHahDAHHZ8to6K0HW5gvKKSalR5X/myaiV0E5ujJ+LUFWIiuDmtsmyxTX1zsohyYrVMo/4sD0DpBN+as95wO476gLb5fDTDV569QwExlDOt60W8qSzPw6ncYsOKJIiRE3EddspUm3/NrfDiKApUh8UbzVtwu1XlVAxWNgYN3PkqhWKuE4kvORQuoSJzOgSHkiqdXsQOED2HXfOKdfsnpZUwjepIU5A+/mu0gc3mPQPToKSss2bC1nXn//0bOZZSuQRgTS6PkKDHIQ1nClSZQZlJIsiLmaaN2k1tIHTIlDquKN6G1Ta9c3t6G5kugjqRo78ebbt7l3e0Z3BcdOkuO2WbvBjIg5Uiqyf+cYDZedJ+OEOqL/U6VVlsmbw0rd5deHrbnPn9cRzmWGjrXnxIlAszl+0Uqabj/BrkWcbBCwZJEPaV1hHpC4nJX1m5xvKZHB2Bw0AYWaQ3f3tRBbCA/xqwCS0Px1QohzV0nvtiMbjB38ziT1M5DgLtAVLcHPio7THZMxXAi4IjEIMac9ODbh5OxthA="}],"legacy":false}

create_boss_mounted.jpg

Задаёт пользовательскую маскировку из skindex. Загляните на эту страницу, чтобы узнать, как правильно оформить эти данные.


customModel​

Задаёт пользовательскую модель, если у вас есть такая модель и плагины FreeMinecraftModels или ModelEngine. Подробнее о создании и использовании пользовательских моделей здесь.

КлючЗначенияПо умолчанию
customModelStringнет
Пример
customModel: your_model

customModelMountPointID​

Задаёт ID точки крепления для пользовательских моделей, когда босс садится верхом на другую сущность или когда на него садятся верхом.

КлючЗначенияПо умолчанию
customModelMountPointIDStringнет
Пример
customModelMountPointID: your_mount_point_id


frozen​

Устанавливает атрибут скорости движения в 0. Обработчик урона EliteMobs также обнуляет вектор скорости сразу и на следующем тике. ИИ и скрипты всё ещё могут атаковать или телепортировать босса; настройка не блокирует все виды перемещения.

КлючЗначенияПо умолчанию
frozentrue / falsefalse
Пример
frozen: true

ai​

Определяет, включён ли у босса ИИ. При значении false босс не будет двигаться и атаковать самостоятельно. Это полезно для боссов, полностью управляемых через Elite Scripts.

КлючЗначенияПо умолчанию
aitrue / falsetrue
Пример
ai: false

behavior​

behavior выбирает многократно используемую программу Lua Mind из plugins/EliteMobs/behaviors/. Например:

entityType: ZOMBIE
ai: true
behavior: basic_melee.lua

Встроенная basic_melee.lua объединяет модули выбора цели, преследования, ближнего боя и блуждания из behaviors/modules/. Редактируйте или копируйте программу в каталоге поведения. Это не файл способности, и ему не место в powers/.

Если behavior не задан, используется настройка свойств соответствующего типа моба. Явное behavior: native выбирает нативный ИИ. При ai: false и у нейтральных боссов программа поведения не запускается. Обычный загрузчик босса по-прежнему управляет появлением, экипировкой, способностями, сохранением и очисткой.

Программы требуют нативной службы Mind на поддерживаемой версии сервера. Неизвестный или некорректный файл вызывает ошибку конфигурации, а не незаметный переход на другой ИИ. ID программ должны использовать пространство имён elitemobs:; ссылки на подпапки используют прямые косые черты. API описан в справочнике контекста Mind.

alwaysShowName​

Сохраняет имя босса видимым вне боя. Глобальный alwaysShowEliteMobNameTags также может включить это поведение. Текущий FreeMinecraftModels размещает имя у кости tag_, например tag_head, если она есть; иначе над хитбоксом модели. Старые сборки FMM могут требовать заданную автором точку привязки. Особенности моделей описаны в разделе Пользовательские модели.

КлючЗначенияПо умолчанию
alwaysShowNametrue / falsefalse
Пример
alwaysShowName: true

reinforcement​

Помечает определение босса как подкрепление. Это пропускает обычную инициализацию региональных точек появления и исключает автоматическую классовую добычу. Регистрация точек в инстансах выполняется отдельно. Флаг сам не призывает босса и не задаёт призывателя; остальные исключения наград отдельно определяются отслеживанием подкреплений и ездовых существ во время работы.

КлючЗначенияПо умолчанию
reinforcementtrue / falsefalse
Пример
reinforcement: true

song​

Задаёт музыку для находящихся рядом игроков после появления босса. Ключ звука и соответствующий файл .ogg должны быть определены в ресурспаке.

КлючЗначенияПо умолчанию
songStringнет

Положительный followDistance задаёт дальность начала воспроизведения. Каждые 10 тиков босс проверяет игроков своего мира в пределах этой настроенной дистанции. После начала музыка продолжается, пока игрок онлайн, остаётся в том же мире и не удаляется дальше 1,5 записанной рабочей дальности преследования босса. Удаление босса останавливает музыку. Музыка босса имеет приоритет над фоновой музыкой подземелья; игрок слышит один управляемый трек за раз.

Используйте name=SOUND_KEY length=MILLISECONDS с пробелом между полями. Длительность задаётся целым числом миллисекунд, переводится в тики с округлением вниз; минимальная задержка планировщика составляет один тик. Воспроизведение использует категорию MUSIC, громкость 1 и высоту тона 1.

Пример

Настроить музыку можно двумя способами. Вот первый:

song: name=elitemobs:ice_queen.idle length=76370

Это проиграет композицию ice_queen.idle в течение 76370 миллисекунд, а затем зациклит её. Учтите, что расположение композиции определяется ресурспаком.

Вот второй способ настройки музыки:

song: name=elitemobs:ice_queen.end_transition length=14328->name=elitemobs:ice_queen.end_loop length=28657

Это проиграет композицию ice_queen.end_transition в течение 14328 миллисекунд, затем перейдёт к ice_queen.end_loop на 28657 миллисекунд и зациклит end_loop.

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


cullReinforcements​

Определяет, удаляются ли отслеживаемые подкрепления, включая призывы GLOBAL, при очистке босса. Выход из боя и полное восстановление здоровья отдельно удаляют обычные отслеживаемые подкрепления. Поэтому false не гарантирует сохранение всех призванных существ.

КлючЗначенияПо умолчанию
cullReinforcementstrue / falsetrue
Пример
cullReinforcements: true

movementSpeedAttribute​

Задаёт скорость передвижения босса.
Примечание: значения выше 0.36 могут оказаться слишком быстрыми.

КлючЗначенияПо умолчанию
movementSpeedAttributeDoubleнет
Пример
movementSpeedAttribute: 0.3

patrol​

Добавляет пользовательскому боссу встроенный маршрут с автоматическим поиском пути. Узлы являются смещениями от заданной точки появления босса или, с patrol.relative: false, точными координатами в его мире. patrol.startNodeWaitSeconds заставляет босса отдыхать у первого узла один раз за круг. Длинные участки рассчитываются и делятся автоматически без принудительной загрузки чанков; в бою патруль приостанавливается и затем продолжается. Боссу нужны ai: true, положительная скорость, и он не должен быть пассажиром. Схема, редактор, сохранение и Lua описаны в разделе Патрули NPC и боссов.

Фазы боссов​

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

КлючОписаниеЗначенияПо умолчанию
phasesЗадаёт фазы, которые будут у босса. ОбязательноListнет
phaseSpawnLocationЗадаёт, где появляется босс фазы. НеобязательноStringнет
Пример

Для этого примера мы покажем три разных файла конфигурации.

Первый файл конфигурации босса: phase_1_boss.yml

name: "Phase 1"
entityType: ZOMBIE
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

Второй файл конфигурации босса: phase_2_boss.yml

name: "Phase 2"
entityType: SKELETON

Третий файл конфигурации босса: phase_3_boss.yml

name: "Phase 3"
phaseSpawnLocation: same_as_boss,10,64,100,0,0
entityType: RAVAGER

Этот босс перейдёт к файлу конфигурации phase_2_boss.yml при 60% здоровья, а к файлу конфигурации phase_3_boss.yml — при 30% здоровья, в том же мире, что и фаза 2, и по координатам x=10, y=64 и z=100. Тип сущности и имя босса также изменятся.

Формат записи — filename:healthPercentage, где процент задаётся долей не меньше 0 и меньше 1. Запись в другом формате, доля вне допустимого диапазона или отсутствующий файл босса не дают боссу заспавниться.

phaseSpawnLocation необязателен; если он не задан, босс сменит фазу там, где он стоит.

При проектировании босса с фазами важно знать следующее:

  • Файл конфигурации первой фазы задаёт все фазы босса.
  • Угроза / учтённый урон сохраняются между фазами для игроков.
  • Удар, пересекающий порог, отменяется, а следующая фаза начинается с настроенного процента здоровья. Изменение healthMultiplier меняет абсолютное HP на этом пороге. Избыточный урон не переносится в следующую форму.
  • Боссы с фазами вне инстансов возвращаются к фазе 1 при полном восстановлении здоровья, в том числе благодаря настроенной регенерации после боя. Инстанс-боссы пропускают этот сброс.
  • Боссы с фазами, которые также являются региональными боссами, используют общий радиус привязи и механику таймаута для всех фаз и возрождаются как босс фазы 1 по истечении таймера.
  • Файл конфигурации последней фазы задаёт добычу с босса.
  • Фазы нельзя пропустить — избыточный урон всё равно заставит босса сменить фазу на заданном проценте.
  • Смена фазы удаляет прежнее ездовое существо. Новая фаза может определить собственное.
  • Смена фаз и сброс при полном здоровье используют появление без оповещения, поэтому обычное объявление о появлении босса не отправляется.

Региональные боссы​

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

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

КлючОписаниеЗначенияПо умолчанию
isRegionalBossОпределяет, является ли босс региональным. Должно быть true, если вам нужен региональный босс.true / falsefalse
spawnLocationsЗадаёт места появления босса.Добавляйте их с помощью команды /em place boss [filename.yml]!нет
spawnCooldownЗадаёт задержку возрождения босса в минутах.Integer0
leashRadiusЗадаёт расстояние, на которое босс может отойти от точки появления, прежде чем его притянет обратно. Измеряется от точки появления.Doubleнет
onSpawnBlockStatesЗадаёт блоки, которые босс изменит при появлении.См. команды ниженет
onRemoveBlockStatesПрименяет сохранённые блоки при смерти, убийстве командой или переходе к следующей фазе; не применяется при таймауте, сбросе после полного лечения, перезагрузке конфигурации и остановке сервера.См. команды ниженет

Как указано выше, у региональных боссов могут быть onSpawnBlockStates и onRemoveBlockStates.

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

Формат для них слишком сложен, чтобы писать его вручную, поэтому существует несколько команд, помогающих их настроить:

КомандаОписание
/em transitiveBlocks register [regional_boss_file.yml] [ON_SPAWN/ON_REMOVE]Начинает регистрацию ручного выделения блоков для состояний при появлении или при удалении.
/em transitiveBlocks edit [regional_boss_file.yml] [ON_SPAWN/ON_REMOVE]Редактирует состояния блоков при появлении или при удалении.
/em transitiveBlocks registerArea [regional_boss_file.yml] [ON_SPAWN/ON_REMOVE]Позволяет администраторам выделять крупные области блоков для сохранения в качестве состояний.
/em transitiveBlocks editArea [regional_boss_file.yml] [ON_SPAWN/ON_REMOVE]Позволяет администраторам редактировать крупные области блоков для сохранения в качестве состояний.
Пример использования:

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

Для этого вам понадобятся две фазы босса и регистрация трёх разных наборов состояний блоков. В этом примере я назову эти фазы phase_1_boss.yml и phase_2_boss.yml соответственно.

  1. Используйте /em transitiveBlocks register phase_1_boss.yml ON_SPAWN или /em transitiveBlocks edit phase_1_boss.yml ON_SPAWN, чтобы зарегистрировать блоки двери в открытом состоянии.

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

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

  1. Используйте /em transitiveBlocks register phase_2_boss.yml ON_SPAWN или /em transitiveBlocks edit phase_2_boss.yml ON_SPAWN, чтобы зарегистрировать блоки двери в закрытом состоянии.

Это означает регистрацию сплошных блоков двери, которые не дадут игроку выйти.

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

  1. Используйте /em transitiveBlocks register phase_2_boss.yml ON_REMOVE или /em transitiveBlocks edit phase_2_boss.yml ON_REMOVE, чтобы зарегистрировать блоки двери в открытом состоянии.

Это означает повторную регистрацию тех же блоков, что и на первом шаге (блоков воздуха).

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


alert​

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

КлючЗначенияПо умолчанию
alertBooleanfalse
Пример
alert: true

removeAfterDeath​

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

КлючЗначенияПо умолчанию
removeAfterDeathBooleanfalse
Пример
removeAfterDeath: true

Инстанс-боссы​

Инстанс-боссы — это подтип региональных боссов, используемый в инстанс-подземельях.

КлючОписаниеЗначенияПо умолчанию
instancedДелает пользовательского босса инстансовым. Обязательно.true / falsefalse

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

Пример
instanced: true