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 | 意義 |
|---|---|
VICTORY | Challenge 局擊敗了最終首領,並撐到 10 秒勝利延遲結束 |
DEFEAT | 玩家在沒有剩餘額外生命時死亡,或斷線。在勝利延遲期間斷線也會回報 DEFEAT,儘管排行榜項目已經記錄 |
ABANDONED | /mbs quit、被取消或逾時的設定、遭否決的加入或開始、/mbs reload,或插件停用 |