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

Создание событий

webapp_banner.jpg

Это руководство для EliteMobs 10 и новее

Что такое Кастомные события?

Кастомные события здесь относятся к событиям, которые происходят в игре случайным образом, будь то на основе действий игрока или по триггеру-таймеру. Плагин поставляется с рядом предзагруженных Кастомных событий, таких как событие Балрога, событие Кракена и события Гоблина сокровищ, и это лишь некоторые из них.

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

Создание ваших Кастомных событий

Конфигурационные файлы кастомных событий следует создавать в: plugins/EliteMobs/customevents/

Файлы должны использовать формат .yml. Имя файла (без расширения .yml) становится идентификатором события.

Пример: my_cool_event.yml указывается как my_cool_event

Общие настройки конфигурации

Следующие настройки можно/следует использовать как для событий-действий, так и для событий по времени.


isEnabled

Задаёт, включено ли событие.

KeyValuesDefault
isEnabledBooleantrue
Пример
isEnabled: true

eventType

Задаёт тип события.

KeyValuesDefault
eventTypeBREAK_BLOCK / FISH / TILL_SOIL / TIMEDDEFAULT

Учтите, что BREAK_BLOCK, FISH и TILL_SOIL — это События-действия, а TIMED — это События по времени.

eventType обязателен. DEFAULT — это заглушка, к которой EliteMobs откатывается, когда настройка отсутствует или не совпадает ни с одним из типов выше. Событие, оставшееся на DEFAULT, выводит предупреждение и вообще не регистрируется, поэтому ни одна из расположенных ниже настроек даже не читается.

Пример
eventType: BREAK_BLOCK

bossFilenames

Задаёт список боссов, которые будут заспавнены. Обязательно!

KeyValuesDefault
bossFilenamesString Listnone
Пример
bossFilenames:
- balrog.yml
- my_event_boss.yml

announcementPriority

Задаёт приоритет объявлений.

KeyValuesDefault
announcementPriorityInteger0
Пример
announcementPriority: 1

startMessage

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

KeyValuesDefault
startMessageStringnone
Пример
startMessage: An event has started!

create_events_start_message.jpg


endMessage

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

KeyValuesDefault
endMessageStringnone
Пример
endMessage: An event has ended!

create_events_end_message.jpg


eventStartCommands

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

KeyValuesDefault
eventStartCommandsString Listnone
Пример
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

create_events_start_commands.jpg


eventEndCommands

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

KeyValuesDefault
eventEndCommandsString Listnone
Пример
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

create_events_end_commands.jpg


minimumPlayerCount

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

Это проверяется только для Событий-действий. События по времени его игнорируют — им нужен лишь как минимум один игрок в сети.

KeyValuesDefault
minimumPlayerCountInteger1
Пример
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

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

KeyValuesDefault
chanceЗначение между 0.0 и 1.00
Пример
chance: 0.001

breakableMaterials

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

KeyValuesDefault
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

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

KeyValuesDefault
spawnTypeFilenamenone
Пример
spawnType: nether_spawn.yml

localCooldown

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

KeyValuesDefault
localCooldownDouble0
Пример
localCooldown: 120

globalCooldown

Задаёт количество времени в минутах, прежде чем будет выбрано следующее событие.

KeyValuesDefault
globalCooldownDouble0
Пример
globalCooldown: 60

weight

Задаёт вес события, влияющий на шанс того, что оно будет выбрано вместо других событий. Рекомендуется: 100.

Система весов определяет относительную вероятность выбора события. Например:

  • Событие A с весом 100 против События B с весом 50 = Событие A вдвое вероятнее будет выбрано
  • Выше вес = выше шанс быть выбранным
  • Планировщик событий по времени запускается примерно через 5 минут после старта сервера, а затем раз в минуту проверяет, истекла ли глобальная перезарядка и можно ли выбрать событие
KeyValuesDefault
weightDouble0
Пример
weight: 60.5

eventDuration

Задаёт максимальную длительность события в минутах.

KeyValuesDefault
eventDurationDouble0
Пример
eventDuration: 30

endEventWithBossDeath

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

KeyValuesDefault
endEventWithBossDeathBooleantrue
Пример
endEventWithBossDeath: true

eventEndTime

Задаёт внутриигровое время (в тиках), когда событие заканчивается. Используйте систему времени Minecraft, где 0=рассвет, 6000=полдень, 12000=сумерки, 18000=полночь, 23000=поздняя ночь. Установите -1, чтобы отключить завершение по времени.

KeyValuesDefault
eventEndTimeInteger (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