跳至主要內容

MegaBlock Survivors 開發者 API

MegaBlock Survivors 在 com.magmaguy.megaBlockSurvivors.api 下公開一個查詢類別與數個 Bukkit 事件,讓其他插件可以追蹤每一局並做出反應。所有事件都是標準的同步 Bukkit 事件。請將 MegaBlockSurvivors 加入你插件的 depend 或 softdepend 清單。

查詢​

方法回傳
MegaBlockSurvivorsAPI.getMatch(Player player)玩家正在進行或仍在設定中的 SurvivorMatchInstance,或 null
MegaBlockSurvivorsAPI.getMatches()伺服器上每一局的副本,包括仍在設定中的局

SurvivorMatchInstance 繼承 MegaBlock Survivors jar 內建之 MagmaCore 副本中的比賽類別,該類別已重新定位為 com.magmaguy.megablocksurvivors.magmacore.match.Match。它自己的 getter 包括 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意義
VICTORYChallenge 局擊敗了最終首領,並撐到 10 秒勝利延遲結束
DEFEAT玩家在沒有剩餘額外生命時死亡,或斷線。在勝利延遲期間斷線也會回報 DEFEAT,儘管排行榜項目已經記錄
ABANDONED/mbs quit、被取消或逾時的設定、遭否決的加入或開始、/mbs reload,或插件停用