Создание событий
Это руководство для EliteMobs 10 и новее
Что такое Кастомные события?
Кастомные события здесь относятся к событиям, которые происходят в игре случайным образом, будь то на основе действий игрока или по триггеру-таймеру. Плагин поставляется с рядом предзагруженных Кастомных событий, таких как событие Балрога, событие Кракена и события Гоблина сокровищ, и это лишь некоторые из них.
Эта система называется Кастомными событиями, потому что события можно не только настраивать, но и создавать с нуля. Ниже приведено руководство о том, как создавать и настраивать свои собственные события.
Создание ваших Кастомных событий
Конфигурационные файлы кастомных событий следует создавать в:
plugins/EliteMobs/customevents/
Файлы должны иметь формат .yml. При ссылке на событие указывайте полное имя файла, включая расширение .yml.
Пример: my_cool_event.yml указывается как my_cool_event.yml
Сохраните файлы и выполните /em reload, чтобы загрузить изменения. В events.yml также должен быть включён соответствующий переключатель событий-действий или событий по времени.
Общие настройки конфигурации
Следующие настройки можно/следует использовать как для событий-действий, так и для событий по времени.
isEnabled
Задаёт, включено ли событие.
| Ключ | Значения | По умолчанию |
|---|---|---|
isEnabled | Логическое значение | true |
Пример
isEnabled: true
eventType
Задаёт тип события.
| Ключ | Значения | По умолчанию |
|---|---|---|
eventType | BREAK_BLOCK / FISH / TILL_SOIL / TIMED | DEFAULT |
Учтите, что BREAK_BLOCK, FISH и TILL_SOIL — это События-действия, а TIMED — это События по времени.
eventType обязателен. DEFAULT — это заглушка, к которой EliteMobs откатывается, когда настройка отсутствует или не совпадает ни с одним из типов выше. Событие, оставшееся на DEFAULT, выводит предупреждение и вообще не регистрируется, поэтому ни одна из расположенных ниже настроек даже не читается.
Пример
eventType: BREAK_BLOCK
bossFilenames
Перечисляет файлы кастомных боссов, которые появятся вместе, включая расширение .yml. Обязательно! Это не случайный выбор одного босса из списка. Проверьте все ссылки перед использованием события. События по времени пропускают неверные имена файлов и не встают в очередь без допустимых боссов. Событие-действие с любым неверным именем файла отменяется до появления кого-либо, а если спавн одного из боссов отклонён, уже появившиеся боссы удаляются.
| Ключ | Значения | По умолчанию |
|---|---|---|
bossFilenames | Список строк | нет |
Пример
bossFilenames:
- balrog.yml
- my_event_boss.yml
announcementPriority
Определяет получателей сообщений о начале и конце события. Приоритеты событий работают иначе, чем приоритеты объявлений боссов:
| Приоритет | Получатели |
|---|---|
0 | Игроки в мире события; сообщения не отключаются |
1 | Все игроки онлайн, а при announcementBroadcastWorldOnly: true — только игроки мира события |
2 | Игроки в мире события |
3 и выше | Игроки в мире события и настроенный DiscordSRV |
Не указывайте startMessage или endMessage, чтобы отключить соответствующее сообщение события. Собственное объявление о появлении босса работает отдельно.
| Ключ | Значения | По умолчанию |
|---|---|---|
announcementPriority | Целое число | 0 |
Пример
announcementPriority: 1
startMessage
Задаёт сообщение при фактическом начале события, а не при постановке события по времени в очередь. Начальное и конечное сообщения поддерживают цвета, но система не подставляет значения вместо маркеров босса или игрока вроде $boss и $player.
| Ключ | Значения | По умолчанию |
|---|---|---|
startMessage | Строка | нет |
Пример
startMessage: An event has started!
![]()
endMessage
Задаёт сообщение, отправляемое в конце события.
| Ключ | Значения | По умолчанию |
|---|---|---|
endMessage | Строка | нет |
Пример
endMessage: An event has ended!
eventStartCommands
Задаёт консольные команды при начале события, без начального / и без подстановок игрока или босса. Команды выполняются независимо; необязательное $chance=0.5$ даёт конкретной команде шанс 50%. Используйте вероятность от 0 до 1; без этого маркера команда выполняется всегда.
| Ключ | Значения | По умолчанию |
|---|---|---|
eventStartCommands | Список строк | нет |
Пример
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

eventEndCommands
Задаёт консольные команды, запланированные на следующую задачу сервера при завершении события. Синтаксис и вероятность каждой команды такие же, как у eventStartCommands, без подстановок игрока или босса.
| Ключ | Значения | По умолчанию |
|---|---|---|
eventEndCommands | Список строк | нет |
Пример
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

minimumPlayerCount
Задаёт минимум игроков онлайн, учитывая все миры и режимы игры. Это не число подходящих участников рядом с событием.
События-действия проверяют его, когда их запускает действие. События по времени проверяют его, когда автоматический выбор отбирает события, перед тем как событие в очереди начнёт искать место, и ещё раз непосредственно перед появлением боссов. Событие по времени в очереди ждёт, пока онлайн не наберётся достаточно игроков; его кастомный спавн должен дополнительно найти подходящее место согласно собственным проверкам игроков и расположения.
| Ключ | Значения | По умолчанию |
|---|---|---|
minimumPlayerCount | Целое число | 1 |
Пример
minimumPlayerCount: 5
Пример конфигурации события
Здесь только общие настройки; полному событию по времени также нужны spawnType и положительный вес выбора.
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
Полный пример события по времени
isEnabled: true
eventType: TIMED
bossFilenames:
- "my_timed_boss.yml"
announcementPriority: 3
startMessage: "A timed event has started!"
endMessage: "The timed event has ended!"
eventStartCommands:
- say The timed event began!
eventEndCommands:
- say The timed event concluded!
spawnType: "my_spawn_location.yml"
localCooldown: 120
globalCooldown: 30
weight: 100
eventDuration: 15
endEventWithBossDeath: true
События-действия
События, у которых есть шанс запуститься, когда происходит определённое действие, например ломание блока или рыбалка.
При начале события-действия включается перезарядка для игрока: по умолчанию 4 минуты, настраивается через actionEventMinimumCooldownMinutes в events.yml. Одно действие запускает только одно событие: как только начинается подходящий файл, для игрока включается перезарядка, и остальные файлы пропускаются. Событие, которое не удалось запустить, не расходует перезарядку. Настройка actionEventsEnabled: false отключает эти события на всём сервере.
Три типа действий срабатывают следующим образом:
eventType | Триггер |
|---|---|
BREAK_BLOCK | Игрок ломает блок. Сначала разыгрывается chance, затем сломанный блок сверяется с breakableMaterials. |
FISH | У события рыбалки есть пойманная сущность, в том числе зацепленный моб. Без пойманной сущности оно не срабатывает. Спавн происходит в позиции этой сущности. |
TILL_SOIL | Игрок нажимает правой кнопкой на DIRT или GRASS_BLOCK с деревянной, каменной, железной, золотой, алмазной или незеритовой мотыгой в основной руке. Фактическое превращение блока в пашню не проверяется. |
Отменённые события Bukkit игнорируются. Место должно находиться в мире с включённым EliteMobs, вне миров подземелий EliteMobs и инстансовых областей подземелий, арен и классовых испытаний, а флаг WorldGuard elitemobs-events должен разрешать событие. Эти обработчики отдельно не ограничивают режим игры.
Боссы появляются в точке взаимодействия: в центре X/Z разрушенного блока, на месте пойманной сущности или на блок выше нажатой земли. События-действия не используют spawnType, веса и перезарядки выбора событий по времени.
Защита Peace Banner тоже предотвращает событие при включённом suppressEvents. Описанные ниже проверки длительности, времени окончания и удаления боссов применяются также к событиям-действиям.
chance
Задаёт шанс того, что событие произойдёт при выполнении действия.
| Ключ | Значения | По умолчанию |
|---|---|---|
chance | Значение между 0.0 и 1.0 | 0 |
Пример
chance: 0.001
breakableMaterials
Задаёт список материалов для проверки, если действие установлено в BREAK_BLOCK.
| Ключ | Значения | По умолчанию |
|---|---|---|
breakableMaterials | Список материалов | нет |
Пример
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD
Пример конфигурации
chance: 0.001
breakableMaterials:
- COAL_ORE
Задаёт 0.1%-ный шанс запуска события при разрушении блока угольной руды, при условии что тип события — BREAK_BLOCK.
Полный пример события-действия
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE
События по времени
События по времени проходят автоматический взвешенный выбор, затем попадают в очередь кастомного спавна. Выбор не гарантирует немедленное появление или фиксированное расписание. События из разных файлов могут одновременно ждать в очереди или выполняться.
Без игроков онлайн автоматического выбора нет. Автоматический выбор исключает файл, пока копия события из него стоит в очереди или выполняется, а также пока онлайн меньше игроков, чем его minimumPlayerCount. Настройка timedEventsEnabled: false в events.yml отключает события по времени на всём сервере.
spawnType
Задаёт Кастомный спавн, используемый событием, который определяет, где может заспавниться босс.
| Ключ | Значения | По умолчанию |
|---|---|---|
spawnType | Имя файла | нет |
Пример
spawnType: nether_spawn.yml
localCooldown
Задаёт задержку в минутах до следующего автоматического выбора этого события, начиная с момента выбора. Она расходуется, даже если последующая проверка или другой плагин не позволит поставить событие в очередь. Копия в очереди или в процессе выполнения также блокирует повторный автоматический выбор, даже после истечения задержки.
| Ключ | Значения | По умолчанию |
|---|---|---|
localCooldown | Дробное число | 0 |
Пример
localCooldown: 120
globalCooldown
Задаёт глобальную задержку автоматического выбора в минутах. Она назначается после успешной постановки в очередь и повторно при фактическом начале, в том числе у событий, добавленных вручную. Отсчёт не начинается при завершении события. Новое назначение заменяет предыдущий срок.
| Ключ | Значения | По умолчанию |
|---|---|---|
globalCooldown | Дробное число | 0 |
Пример
globalCooldown: 60
weight
Задаёт относительный вес среди доступных сейчас событий по времени. Используйте конечное положительное значение. Рекомендуется: 100. Нулевой вес ненадёжно отключает событие, особенно когда все доступные веса равны нулю; используйте isEnabled: false.
Система весов определяет относительную вероятность выбора события. Например:
- Событие A с весом 100 против События B с весом 50 = Событие A вдвое вероятнее будет выбрано
- Выше вес = выше шанс быть выбранным
- Планировщик впервые проверяет события примерно через 5 минут после инициализации, затем раз в минуту. Лаг сервера может задержать проверки.
| Ключ | Значения | По умолчанию |
|---|---|---|
weight | Дробное число | 0 |
Пример
weight: 60.5
eventDuration
Задаёт ограничение длительности в минутах от фактического начала. 0 отключает его, как и отрицательные значения. Проверка выполняется каждые 20 серверных тиков, поэтому событие может завершиться с опозданием до секунды, а при лагах сервера и позже. Применяется также к событиям-действиям.
| Ключ | Значения | По умолчанию |
|---|---|---|
eventDuration | Дробное число | 0 |
Пример
eventDuration: 30
endEventWithBossDeath
Завершает событие, когда больше не существует ни одного из объектов основных боссов. При нескольких bossFilenames удаления или победы над одним недостаточно, пока остаётся другой. Подкрепления не считаются дополнительными основными боссами. Проверяется существование, а не убийство, засчитанное игроку. При любом завершении события оставшиеся основные боссы удаляются как боссы с истёкшим сроком. Применяется также к событиям-действиям.
| Ключ | Значения | По умолчанию |
|---|---|---|
endEventWithBossDeath | Логическое значение | true |
Пример
endEventWithBossDeath: true
eventEndTime
Задаёт внутриигровое время (в тиках), когда событие заканчивается. Используйте систему времени Minecraft, где 0=рассвет, 6000=полдень, 12000=сумерки, 18000=полночь, 23000=поздняя ночь. Установите -1, чтобы отключить завершение по времени.
Условие — время мира > eventEndTime; оно не ждёт следующего дня или точного пересечения порога. Событие, начавшееся позже указанного времени, может закончиться при первой проверке. Согласуйте окно спавна со временем окончания. Время мира лежит в диапазоне 0–23999, поэтому пороги 23999 и выше никогда не превышаются. Применяется также к событиям-действиям.
| Ключ | Значения | По умолчанию |
|---|---|---|
eventEndTime | Целое число (0–23998 для достижимого порога; -1 отключает) | -1 |
Пример
eventEndTime: 23000
Постановка в очередь запускает поиск места и повторные попытки кастомного спавна. Он может ждать подходящего времени или фазы луны в сохранённой позиции; во время ожидания повторяются не все проверки места. Их ограничения описаны в руководстве по кастомному спавну по ссылке выше. Одновременно появляется только одно событие по времени, и спавн также ждёт выполнения minimumPlayerCount и истечения интервала timedEventMinimumCooldownMinutes. Сообщение и команды начала выполняются после того, как событие по времени подтвердит существование основных боссов.
Пример конфигурации событий
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000
Запуск события вручную
/em event <event filename>
Ставит событие по времени в очередь для подходящего места и времени. Требует elitemobs.event.start, выполняется игроком и принимает только загруженные шаблоны событий по времени. Они создаются из включённых файлов TIMED, когда активен timedEventsEnabled.
Команда обходит взвешенный выбор, локальную/глобальную перезарядку выбора и проверку уже ожидающей или работающей копии. Повторный вызов может поставить дубликаты в очередь. Условия места и времени кастомного спавна, minimumPlayerCount события и интервал timedEventMinimumCooldownMinutes остаются в силе.
При отказе сообщается причина: отсутствующий или неверный spawnType, отсутствие допустимых bossFilenames или отмена другим плагином. Сообщение об успехе подтверждает принятие в очередь, а не видимый спавн. Проверьте самих боссов и сообщения о повторных попытках в консоли.
Общесерверные настройки событий
Они находятся в plugins/EliteMobs/events.yml. После изменения выполните перезагрузку настроек:
| Ключ | Описание | По умолчанию |
|---|---|---|
actionEventsEnabled | Происходят ли события-действия вообще | true |
timedEventsEnabled | Происходят ли события по времени вообще | true |
actionEventMinimumCooldownMinutes | Перезарядка на игрока, в минутах, после срабатывания события-действия | 4 |
timedEventMinimumCooldownMinutes | Задержка в минутах после начала события по времени, прежде чем другое событие по времени сможет искать место или спавнить своих боссов, включая событие, уже ожидающее в сохранённой позиции | 4 |
announcementBroadcastWorldOnly | Ограничивает сообщения приоритета 1 миром события; другие приоритеты уже отправляют игровые сообщения только в этот мир | false |
