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

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 или отключение плагина