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

eventEndCommands
Задаёт команды, выполняющиеся в конце события.
| Key | Values | Default |
|---|---|---|
eventEndCommands | String List | none |
Пример
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

minimumPlayerCount
Задаёт минимальное количество онлайн-игроков, необходимое для старта события.
Это проверяется только для Событий-действий. События по времени его игнорируют — им нужен лишь как минимум один игрок в сети.
| Key | Values | Default |
|---|---|---|
minimumPlayerCount | Integer | 1 |
Пример
minimumPlayerCount: 5
Пример конфигурации события
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
minimumPlayerCount: 1
События-действия
События, у которых есть шанс запуститься, когда происходит определённое действие, например ломание блока или рыбалка.
Примечание: события-действия автоматически применяют перезарядку для каждого игрока, чтобы один и тот же игрок не запускал события многократно. Перезарядка по умолчанию равна 4 минутам и настраивается через actionEventMinimumCooldownMinutes в events.yml. События-действия также можно отключить на всём сервере, задав actionEventsEnabled равным false в том же файле.
Три типа действий срабатывают следующим образом:
eventType | Триггер |
|---|---|
BREAK_BLOCK | Игрок ломает блок. Сначала разыгрывается chance, затем сломанный блок сверяется с breakableMaterials. |
FISH | Игрок что-то вытягивает. Забросы, при которых ничего не поймано, никогда не запускают событие. |
TILL_SOIL | Игрок кликает правой кнопкой по DIRT или GRASS_BLOCK, держа любую мотыгу. |
В любом случае местоположение должно находиться в мире, для которого включён EliteMobs, не должно быть внутри мира подземелья EliteMobs или идущего инстанса и должно пройти проверку флага WorldGuard elitemobs-events.
chance
Задаёт шанс того, что событие произойдёт при выполнении действия.
| Key | Values | Default |
|---|---|---|
chance | Значение между 0.0 и 1.0 | 0 |
Пример
chance: 0.001
breakableMaterials
Задаёт список материалов для проверки, если действие установлено в BREAK_BLOCK.
| Key | Values | Default |
|---|---|---|
breakableMaterials | Список материалов | none |
Пример
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
События по времени
События по времени — это события, которые происходят с настраиваемыми временными интервалами. Как только перезарядка события по времени заканчивается, из списка событий по времени выбирается случайное событие на основе веса события.
Ничего не выбирается, пока на сервере нет игроков в сети, а уже запущенное событие никогда не выбирается повторно. События по времени можно отключить на всём сервере, задав timedEventsEnabled равным false в events.yml.
spawnType
Задаёт Кастомный спавн, используемый событием, который определяет, где может заспавниться босс.
| Key | Values | Default |
|---|---|---|
spawnType | Filename | none |
Пример
spawnType: nether_spawn.yml
localCooldown
Задаёт количество времени в минутах, прежде чем это событие сможет быть выбрано снова.
| Key | Values | Default |
|---|---|---|
localCooldown | Double | 0 |
Пример
localCooldown: 120
globalCooldown
Задаёт количество времени в минутах, прежде чем будет выбрано следующее событие.
| Key | Values | Default |
|---|---|---|
globalCooldown | Double | 0 |
Пример
globalCooldown: 60
weight
Задаёт вес события, влияющий на шанс того, что оно будет выбрано вместо других событий. Рекомендуется: 100.
Система весов определяет относительную вероятность выбора события. Например:
- Событие A с весом 100 против События B с весом 50 = Событие A вдвое вероятнее будет выбрано
- Выше вес = выше шанс быть выбранным
- Планировщик событий по времени запускается примерно через 5 минут после старта сервера, а затем раз в минуту проверяет, истекла ли глобальная перезарядка и можно ли выбрать событие
| Key | Values | Default |
|---|---|---|
weight | Double | 0 |
Пример
weight: 60.5
eventDuration
Задаёт максимальную длительность события в минутах.
| Key | Values | Default |
|---|---|---|
eventDuration | Double | 0 |
Пример
eventDuration: 30
endEventWithBossDeath
Задаёт, заканчивается ли событие со смертью босса.
| Key | Values | Default |
|---|---|---|
endEventWithBossDeath | Boolean | true |
Пример
endEventWithBossDeath: true
eventEndTime
Задаёт внутриигровое время (в тиках), когда событие заканчивается. Используйте систему времени Minecraft, где 0=рассвет, 6000=полдень, 12000=сумерки, 18000=полночь, 23000=поздняя ночь. Установите -1, чтобы отключить завершение по времени.
| Key | Values | Default |
|---|---|---|
eventEndTime | Integer (0-24000, -1 для отключения) | -1 |
Пример
eventEndTime: 23000
Учтите, что события ставятся в очередь, то есть они начнутся только когда будут выполнены условия, заданные в 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!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000
minimumPlayerCount: 5
Запуск события вручную
/em event <event filename>
Ставит событие по времени в очередь на старт в ближайшее подходящее время и в подходящем месте — ровно так, как если бы его выбрал планировщик. Требует право elitemobs.event.start, должна запускаться игроком и принимает только имена файлов включённых событий, у которых eventType равен TIMED.
Если событие не удаётся поставить в очередь, вам сообщат почему: не задан spawnType, spawnType не указывает на корректный файл кастомного спавна, ни одно из bossFilenames не является корректным, либо событие отменено другим плагином.
Общесерверные настройки событий
Они находятся в ~/plugins/EliteMobs/events.yml и применяются ко всем событиям:
| Key | Описание | Default |
|---|---|---|
actionEventsEnabled | Происходят ли события-действия вообще | true |
timedEventsEnabled | Происходят ли события по времени вообще | true |
actionEventMinimumCooldownMinutes | Перезарядка на игрока, в минутах, после срабатывания события-действия | 4 |
timedEventMinimumCooldownMinutes | Минимальное время в минутах между стартом одного события по времени и разрешением стартовать следующему | 4 |
announcementBroadcastWorldOnly | Ограничены ли объявления о событии тем миром, где происходит событие | false |
