跳至主要内容

MegaBlock Survivors 排行榜

MegaBlock Survivors 會將每場未作弊且完成的比賽寫入持久化排行榜,儲存於 plugins/MegaBlockSurvivors/leaderboard.yml。作弊的比賽(任何使用過 /mbs cheat 的場次)會被明確排除。

分類

每筆條目都帶有一個遊戲模式標籤與一個難度標籤,因此排行榜會分成 6 個獨立的分組:

模式難度
ChallengeEasy
ChallengeMedium
ChallengeHard
EndlessEasy
EndlessMedium
EndlessHard

每個分組獨立排名,每個分組在磁碟上可保留最多 100 筆條目。前 10 名會呈現給玩家。

排名規則

模式主要排序同分時的排序依據
Challenge最快完成時間(由小到大)較新的條目勝出
Endless最高波次(由大到小)存活時間(越長越好),再以時間戳排序

這樣的拆分有其合理性:Challenge 模式有固定終點(最終首領),「最快完成」自然是顯而易見的技術指標;而 Endless 沒有終點,因此「最高波次」才是有意義的衡量方式。

世界內的全像投影

mbs_spawn 大廳世界中會生成一個 TextDisplay 全像投影(位於世界座標約 4.5, 67, -14.5)。該全像投影採用底部錨定 -- 文字的下緣始終位於錨點的 Y 座標,因此新增區段時顯示內容會向上延伸,而不是向下穿透地板。

全像投影最多會渲染六個區段(Challenge x {Easy, Medium, Hard},接著 Endless x {Easy, Medium, Hard})。沒有條目的區段會靜默略過,因此剛上線的全新伺服器不會顯示六個空分組。如果所有分組都是空的,則改為顯示一行「no highscores yet」。

全像投影會在以下情況自動重新生成:

  • 插件啟用 / 重新載入時。
  • 每次有新的排行榜條目被記錄之後。
  • mbs_spawn 中的錨點區塊重新載入時(Paper 在區塊卸載時會移除非持久顯示實體,因此監聽器會在大廳區塊再次出現時重新生成全像投影)。

如果磁碟上不存在 mbs_spawn,全像投影會靜默略過,並記錄一條 WARN 訊息。

每場比賽的聊天顯示

當一場未作弊的比賽結束時,玩家會在聊天中看見其所屬分組的前 10 名作為聊天區塊。玩家本人的列會被高亮(> #N)。如果玩家排名在前 10 名之外,會顯示一個省略列,再接著顯示其實際排名行。

作弊獲勝時則會改為顯示「Leaderboard not updated (cheating detected)」的提示。

條目欄位

每筆條目記錄:

欄位說明
playerName比賽結束時的 Bukkit 顯示名稱。
playerUUID玩家的 UUID。
timeSeconds本場比賽的總時長,單位為秒。
kills非首領擊殺總數。
level玩家最終等級。
highestWave達到的最高波次。為 Endless 模式的主要統計。
gameModeCHALLENGEENDLESS
difficultyEASYMEDIUMHARD
timestamp比賽結束時的 Epoch 毫秒數。

在此拆分之前的舊條目,會在讀取時自動標註為 Challenge / Medium,讓舊排行榜也能繼續顯示。

清除排行榜

並無遊戲內指令可以清除排行榜。如需重置,請先停止伺服器,然後刪除 plugins/MegaBlockSurvivors/leaderboard.yml