Создание пользовательских подкреплений
Если вам интересно призывать элитных мобов во время боя для усиления босса, это руководство подробно разбирает данную тему.
Шаги для создания пользовательского босса:
- Создайте основного пользовательского босса, который будет призывать вашего пользовательского босса
- Создайте пользовательского босса для подкреплений. Помните, что пользовательские боссы могут быть сильнее ванильных мобов, но также могут быть и слабее.
- Добавьте правильную строку подкрепления в конфигурационный файл
Создание строки подкрепления
Допустим, у вас есть пользовательский босс в таком формате:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.yml
И вы хотите добавить к нему подкрепления. Вот как может выглядеть одно такое подкрепление:
- summonType:ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
А чтобы оно стало рабочим, добавьте его в список powers:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.yml
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
Теперь подкрепление добавлено к сущности босса. Однако, как видите, здесь есть несколько параметров, которые можно настроить. Давайте их разберём.
Все параметры пользовательских подкреплений
Совет: вы также можете использовать EliteScript для призыва подкреплений, подробнее об этом здесь.
summonType
Это обязательное поле. Оно задаёт, когда должно появляться подкрепление.
| Key | Values | Default |
|---|---|---|
summonType | Special [1] | none (обязательное) |
Пример
summonType: ON_HIT
Special [1]
| Key | Description |
|---|---|
ONCE | Создаёт подкрепление один раз, при первом ударе по боссу. (может зависеть от % шанса срабатывания) |
ON_HIT | Создаёт подкрепление при каждом ударе по боссу (может зависеть от % шанса срабатывания) |
ON_COMBAT_ENTER | Создаёт подкрепление, когда босс входит в бой (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | Особый: предназначен специально для размещения кристаллов Энда в боях с драконом, когда босс входит в бой (1) |
ON_DEATH | Создаёт подкрепление, когда босс умирает |
GLOBAL | Создаёт подкрепления для каждого игрока в том же мире, что и босс. Подкрепления появятся рядом с игроками, как бы далеко они ни находились от босса. Система устанавливает лимит численности в 30 подкреплений на одного онлайн-игрока, чтобы предотвратить перегрузку сервера. Подкрепления появляются каждые 10 секунд (200 тиков), пока босс находится в бою и лимит не достигнут. Для работы требуется заданное поле customSpawn! |
(1) Боссы входят в бой либо когда их атакуют игроки, либо когда они обнаруживают игрока в пределах досягаемости.
filename
Это обязательное поле, поскольку оно задаёт, какое подкрепление должно появиться. Единственное исключение, когда это поле не обязательно, — использование параметра summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL, так как кристаллы Энда не являются элитными мобами.
| Key | Values | Default |
|---|---|---|
filename | Filename | none |
Пример
filename: test_boss.yml
Важно: filename должен ссылаться на существующий конфигурационный файл босса. Если файл не существует, подкрепление будет молча проигнорировано при появлении босса. Всегда проверяйте, что файлы боссов-подкреплений правильно созданы и находятся в папке custombosses.
Минимальная работоспособность
summonType: SUMMON_TYPE и filename: filename.yml сами по себе достаточны для создания пользовательского подкрепления. Следующий пример это демонстрирует.
Примечание: ключи конфигурации не чувствительны к регистру. И summonType, и SUMMONTYPE (или любой другой вариант написания) будут работать корректно.
Пример
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.yml
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
Однако, если вы хотите или нуждаетесь в чём-то более сложном, читайте дальше ниже, чтобы узнать, что ещё можно сделать с этими параметрами.
chance
Это необязательное поле конфигурации, созданное в дополнение к параметрам summonType ONCE и ON_HIT. Оно представляет шанс появления пользовательского подкрепления при ударе по боссу.
| Key | Values | Default |
|---|---|---|
chance | Double | 1.0 |
Пример
chance: 0.5
Представляет 50% шанс появления пользовательского подкрепления.
location
location: x,y,z — это необязательное поле конфигурации, которое позволяет администраторам смещать местоположение подкрепления на некоторое количество блоков. Вот ключевые понятия, которые нужно знать об этом параметре:
Смещение местоположения является относительным. Это означает, что location: 0,10,0 создаст босса ровно на 10 блоков выше босса, а не на мировых координатах 0,10,0.
Относительное местоположение работает иначе для региональных боссов. Региональные боссы всегда используют свою точку появления в качестве начала отсчёта для относительного местоположения, а значит, если вы знаете, где находится точка появления босса, и посчитаете блоки, вы сможете заставить боссов-подкреплений появляться в определённых местах. Логово Binder of Worlds полагается на это, чтобы создавать боссов башни испытаний в крайне точных позициях блоков, независимо от того, где находится дракон-босс.
Боссы будут появляться внутри блоков, если вы ошибётесь в измерении расстояний.
| Key | Values | Default |
|---|---|---|
location | String | none |
Пример
location: 0,10,0
Для нерегионального пользовательского босса создаст подкрепление ровно на 10 блоков выше босса, где бы он ни находился.
Для регионального пользовательского босса создаст подкрепление ровно на 10 блоков выше точки появления регионального босса, где бы босс ни находился.
Важное примечание: это обязательное поле именно для summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL!
lightningRod
Особый параметр, полезный только для summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Он даёт кристаллам Энда способность бить молнией по полу вокруг себя с задержкой. Кристалл помечается как «элитный кристалл» и наследует текущую боевую цель босса. Сам кристалл непостоянен и будет удалён, если босс умрёт или выйдет из боя.
Его нельзя использовать с другими пользовательскими подкреплениями, так как те должны полагаться на powers для подобных способностей.
| Key | Values | Default |
|---|---|---|
lightningRod | Boolean | false |
Пример
lightningRod: false
inheritAggro
Это необязательное поле конфигурации, которое заставляет пользовательские подкрепления наследовать уровни угрозы (aggro) босса.
Это особенно полезно, когда вы хотите, чтобы появляющиеся подкрепления нацеливались на того, кто наносит наибольший урон.
| Key | Values | Default |
|---|---|---|
inheritAggro | Boolean | false |
Пример
inheritAggro: false
amount
Это необязательное поле конфигурации, которое задаёт количество появляющихся подкреплений.
| Key | Values | Default |
|---|---|---|
amount | Integer | 1 |
Пример
amount: 1
spawnNearby
Это необязательное поле конфигурации, которое задаёт, должно ли пользовательское подкрепление появляться поблизости, а не прямо на боссе или в определённом относительном местоположении.
Появляется в пределах области 30x30 блоков (±15 блоков по осям X и Z от босса). Система предпринимает до 30 попыток найти подходящее место появления на уровне земли, учитывая перепады рельефа. Если подходящее место не найдено после 30 попыток, подкрепление появляется точно на месте босса.
| Key | Values | Default |
|---|---|---|
spawnNearby | Boolean | false |
Пример
spawnNearby: false
inheritLevel
Это необязательное поле конфигурации, которое задаёт, должно ли пользовательское подкрепление наследовать уровень пользовательского босса, которого оно усиливает.
| Key | Values | Default |
|---|---|---|
inheritLevel | Boolean | false |
Пример
inheritLevel: false
customSpawn
Это поле конфигурации, которое используется только для глобальных подкреплений. Оно использует настройки пользовательского появления, чтобы задать, где смогут появляться подкрепления.
Это можно использовать, чтобы подкрепления могли появляться на поверхности, в освещённых местах, в определённых биомах и так далее. Подробнее см. страницу вики о пользовательских появлениях (Custom Spawns)
| Key | Values | Default |
|---|---|---|
customSpawn | Filename | none |
Пример
customSpawn: normal_surface_spawn.yml
Собираем большое подкрепление
Давайте создадим пример подкрепления, используя большинство предыдущих полей:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
Это делает следующее:
- Создаёт пользовательское подкрепление
- Пользовательское подкрепление появится, когда пользовательский босс войдёт в бой (
summonType: ON_COMBAT_ENTER) - Призываемое пользовательское подкрепление будет тем, что задано в
test_boss.yml(filename: test_boss.yml) - Пользовательское подкрепление появится в пределах 30 блоков от текущего местоположения пользовательского босса (
spawnNearby: true) - Пользовательское подкрепление унаследует aggro пользовательского босса, которого оно усиливает, то есть будет атаковать игрока, нанёсшего наибольший урон (
inheritAggro: true) - Независимо от настройки в
test_boss.yml, пользовательское подкрепление будет иметь тот же уровень, что и пользовательский босс, которого оно усиливает (inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
Это делает следующее:
- Создаёт пользовательское подкрепление
- Пользовательским подкреплением будет кристалл Энда, который размещается, когда начинается бой (
summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL) - Кристалл Энда будет бить молнией по земле вокруг с задержкой (
lightningRod: true)
# Пример: босс, который при смерти призывает миньонов мести
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true
Это делает следующее:
- Создаёт пользовательское подкрепление
- Пользовательское подкрепление появится, когда босс умрёт (
summonType: ON_DEATH) - Призываемое пользовательское подкрепление будет тем, что задано в
revenge_minion.yml(filename: revenge_minion.yml) - Появятся три подкрепления (
amount: 3) - Подкрепления появятся в пределах 30 блоков от места гибели босса (
spawnNearby: true)
Теперь применим это к пользовательскому боссу:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.yml
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
И готово! Вот ещё несколько советов:
- Поля можно задавать в любом порядке, хотя рекомендуется всегда указывать
summonTypeпервым! - Это большое улучшение по сравнению со старой системой подкреплений, которая больше не описывается. На данный момент не рекомендуется полагаться на неё, так как в будущем она может перестать работать.