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

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

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

Шаги для создания пользовательского босса:

  1. Создайте основного пользовательского босса, который будет призывать вашего пользовательского босса
  2. Создайте пользовательского босса для подкреплений. Помните, что пользовательские боссы могут быть сильнее ванильных мобов, но также могут быть и слабее.
  3. Добавьте правильную строку подкрепления в конфигурационный файл

Создание строки подкрепления

Допустим, у вас есть пользовательский босс в таком формате:

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

Это обязательное поле. Оно задаёт, когда должно появляться подкрепление.

KeyValuesDefault
summonTypeSpecial [1]none (обязательное)
Пример
summonType: ON_HIT

Special [1]

KeyDescription
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, так как кристаллы Энда не являются элитными мобами.

KeyValuesDefault
filenameFilenamenone
Пример
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. Оно представляет шанс появления пользовательского подкрепления при ударе по боссу.

KeyValuesDefault
chanceDouble1.0
Пример
chance: 0.5

Представляет 50% шанс появления пользовательского подкрепления.


location

location: x,y,z — это необязательное поле конфигурации, которое позволяет администраторам смещать местоположение подкрепления на некоторое количество блоков. Вот ключевые понятия, которые нужно знать об этом параметре:

Смещение местоположения является относительным. Это означает, что location: 0,10,0 создаст босса ровно на 10 блоков выше босса, а не на мировых координатах 0,10,0.

Относительное местоположение работает иначе для региональных боссов. Региональные боссы всегда используют свою точку появления в качестве начала отсчёта для относительного местоположения, а значит, если вы знаете, где находится точка появления босса, и посчитаете блоки, вы сможете заставить боссов-подкреплений появляться в определённых местах. Логово Binder of Worlds полагается на это, чтобы создавать боссов башни испытаний в крайне точных позициях блоков, независимо от того, где находится дракон-босс.

Боссы будут появляться внутри блоков, если вы ошибётесь в измерении расстояний.

KeyValuesDefault
locationStringnone
Пример
location: 0,10,0

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

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

Важное примечание: это обязательное поле именно для summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL!


lightningRod

Особый параметр, полезный только для summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Он даёт кристаллам Энда способность бить молнией по полу вокруг себя с задержкой. Кристалл помечается как «элитный кристалл» и наследует текущую боевую цель босса. Сам кристалл непостоянен и будет удалён, если босс умрёт или выйдет из боя.

Его нельзя использовать с другими пользовательскими подкреплениями, так как те должны полагаться на powers для подобных способностей.

KeyValuesDefault
lightningRodBooleanfalse
Пример
lightningRod: false

inheritAggro

Это необязательное поле конфигурации, которое заставляет пользовательские подкрепления наследовать уровни угрозы (aggro) босса.

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

KeyValuesDefault
inheritAggroBooleanfalse
Пример
inheritAggro: false

amount

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

KeyValuesDefault
amountInteger1
Пример
amount: 1

spawnNearby

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

Появляется в пределах области 30x30 блоков (±15 блоков по осям X и Z от босса). Система предпринимает до 30 попыток найти подходящее место появления на уровне земли, учитывая перепады рельефа. Если подходящее место не найдено после 30 попыток, подкрепление появляется точно на месте босса.

KeyValuesDefault
spawnNearbyBooleanfalse
Пример
spawnNearby: false

inheritLevel

Это необязательное поле конфигурации, которое задаёт, должно ли пользовательское подкрепление наследовать уровень пользовательского босса, которого оно усиливает.

KeyValuesDefault
inheritLevelBooleanfalse
Пример
inheritLevel: false

customSpawn

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

Это можно использовать, чтобы подкрепления могли появляться на поверхности, в освещённых местах, в определённых биомах и так далее. Подробнее см. страницу вики о пользовательских появлениях (Custom Spawns)

KeyValuesDefault
customSpawnFilenamenone
Пример
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 первым!
  • Это большое улучшение по сравнению со старой системой подкреплений, которая больше не описывается. На данный момент не рекомендуется полагаться на неё, так как в будущем она может перестать работать.