API для разработчиков MegaBlock Survivors
MegaBlock Survivors предоставляет класс запросов и события Bukkit в пакете com.magmaguy.megaBlockSurvivors.api, чтобы другие плагины могли отслеживать забеги и реагировать на них. Все события являются стандартными синхронными событиями Bukkit. Добавьте MegaBlockSurvivors в список depend или softdepend своего плагина.
Запросы
| Метод | Возвращает |
|---|---|
MegaBlockSurvivorsAPI.getMatch(Player player) | SurvivorMatchInstance, в котором игрок играет или который он ещё настраивает, либо null |
MegaBlockSurvivorsAPI.getMatches() | Копию всех забегов на сервере, включая те, что ещё настраиваются |
SurvivorMatchInstance наследует класс матча из копии MagmaCore, встроенной в jar-файл MegaBlock Survivors и перенесённой в com.magmaguy.megablocksurvivors.magmacore.match.Match. Среди его собственных геттеров — getSurvivorPlayer(), getGameMode(), getDifficulty(), getCurrentWorld() и isCheating(). Игрок выбирает режим игры и сложность во время настройки, поэтому забег, который ещё настраивается, до выбора сообщает значения по умолчанию — CHALLENGE и MEDIUM.
События
| Событие | Отменяемое | Доступные данные | Когда срабатывает |
|---|---|---|---|
SurvivorMatchJoinEvent | Да | SurvivorMatchInstance match, Player player | После того как игрок выбрал стартовое оружие, до его допуска в забег |
SurvivorMatchStartEvent | Да | SurvivorMatchInstance match | Сразу после допуска игрока, до 3-секундного обратного отсчёта |
SurvivorMatchLeaveEvent | Нет | SurvivorMatchInstance match, Player player, SurvivorLeaveReason reason | Во время выхода допущенного игрока из забега |
SurvivorMatchEndEvent | Нет | SurvivorMatchInstance match, SurvivorMatchOutcome outcome | Один раз за забег, после выгрузки его миров для удаления |
Отмена SurvivorMatchJoinEvent отменяет забег и удаляет его мир. Игрок получает сообщение match.prepare_failed.
Отмена SurvivorMatchStartEvent тоже отменяет забег, но без сообщения.
SurvivorMatchLeaveEvent срабатывает, пока игрок ещё является участником: до его перемещения наружу, а также до сброса Soul Echo и очистки инвентаря. Игрок, отменивший забег во время настройки, так и не был допущен, поэтому для него событие выхода не срабатывает.
SurvivorMatchEndEvent срабатывает для каждого забега, включая отменённые во время настройки, завершённые через /mbs quit, а также завершённые /mbs reload или отключением плагина.
Причины выхода
SurvivorLeaveReason | Значение |
|---|---|
QUIT | Вышел до начала забега, например из-за неудачной телепортации при входе |
DISCONNECT | Отключился от сервера. После этого забег завершается поражением |
DIED | Используется собственной обработкой смертельного урона в общем ядре матчей. MegaBlock Survivors отменяет ванильный урон во время забега и сам обрабатывает смерти, поэтому смерть в забеге сообщается как MATCH_ENDED |
MATCH_ENDED | Забег завершился: победа, поражение, /mbs quit, /mbs reload или отключение плагина |
SHUTDOWN | Объявлено для выключений. Обычное отключение плагина или /mbs reload сначала завершает забеги через MegaBlock Survivors, поэтому игроки выходят с MATCH_ENDED |
Исходы
SurvivorMatchOutcome | Значение |
|---|---|
VICTORY | Забег Challenge победил финального босса и дождался конца 10-секундной задержки победы |
DEFEAT | Игрок погиб, не имея дополнительных жизней, или отключился. Отключение во время задержки победы тоже даёт DEFEAT, хотя запись в таблице рекордов к тому моменту уже сделана |
ABANDONED | /mbs quit, отменённая или прерванная по тайм-ауту настройка, отклонённый вход или старт, /mbs reload или отключение плагина |