MegaBlock Survivors 排行榜
MegaBlock Survivors 會將每場未作弊且完成的比賽寫入持久化排行榜,儲存於 plugins/MegaBlockSurvivors/leaderboard.yml。作弊的比賽(任何使用過 /mbs cheat 的場次)會被明確排除。
分類
每筆條目都帶有一個遊戲模式標籤與一個難度標籤,因此排行榜會分成 6 個獨立的分組:
| 模式 | 難度 |
|---|---|
| Challenge | Easy |
| Challenge | Medium |
| Challenge | Hard |
| Endless | Easy |
| Endless | Medium |
| Endless | Hard |
每個分組獨立排名,每個分組在磁碟上可保留最多 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 模式的主要統計。 |
gameMode | CHALLENGE 或 ENDLESS。 |
difficulty | EASY、MEDIUM 或 HARD。 |
timestamp | 比賽結束時的 Epoch 毫秒數。 |
在此拆分之前的舊條目,會在讀取時自動標註為 Challenge / Medium,讓舊排行榜也能繼續顯示。
清除排行榜
並無遊戲內指令可以清除排行榜。如需重置,請先停止伺服器,然後刪除 plugins/MegaBlockSurvivors/leaderboard.yml。