跳到主要内容

MegaBlock Survivors 排行榜

MegaBlock Survivors 会把每一场未作弊的完整对局记录到持久化排行榜中,存储位置为 plugins/MegaBlockSurvivors/leaderboard.yml。作弊对局(任何使用过 /mbs cheat 的对局)会被明确排除。

类别

每条条目都带有 游戏模式难度 标签,因此排行榜被切分为 6 个相互独立的分桶:

模式难度
ChallengeEasy
ChallengeMedium
ChallengeHard
EndlessEasy
EndlessMedium
EndlessHard

每个分桶独立排名,磁盘上每个分桶最多保留 100 条 条目。展示给玩家的是前 10 名

排名规则

模式主要排序平局判定
Challenge通关时间最短(升序)新条目在平局时胜出
Endless抵达波次最高(降序)生存时长(长者胜),其次按时间戳

这样切分的原因是:Challenge 模式有明确的终点(最终 Boss),因此「最快通关」是显而易见的实力衡量。Endless 没有终点,所以「最高波次」才是有意义的指标。

世界内全息图

会在 mbs_spawn 大厅世界中生成一个单一的 TextDisplay 全息图(世界坐标约 4.5, 67, -14.5)。该全息图采用底部对齐——文本的底边始终位于锚点 Y 上,因此新增段落会让显示内容向上扩展,而不是穿过地板向下延伸。

全息图最多渲染六段内容(Challenge × {Easy, Medium, Hard},随后是 Endless × {Easy, Medium, Hard})。没有任何条目的段落会被静默跳过,这样全新的服务器就不会显示六个空桶。如果全部分桶都为空,则只显示一行「no highscores yet」。

全息图会在以下情形自动重生:

  • 插件启用 / 重载时。
  • 每条新的排行榜条目被记录后。
  • mbs_spawn 中的锚点区块重新加载时(Paper 会在区块卸载时移除非持久化的 display 实体,因此监听器会在大厅区块每次重新加载时重新生成全息图)。

如果磁盘上不存在 mbs_spawn,则全息图会被静默跳过,并记录一条 WARN 日志。

单场对局的聊天展示

当一场未作弊的对局结束时,玩家会以聊天块的形式看到所属分桶的前 10 名。玩家自身那一行会被高亮(> #N)。如果玩家的名次在前 10 名之外,则会显示一行省略号,再接上他们的实际名次行。

作弊获胜则会改为显示「Leaderboard not updated (cheating detected)」提示。

条目结构

每条条目会记录:

字段描述
playerName对局结束时的 Bukkit 显示名。
playerUUID玩家的 UUID。
timeSeconds对局总时长(秒)。
kills非 Boss 总击杀数。
level玩家最终等级。
highestWave抵达的最高波次。Endless 的主要指标。
gameModeCHALLENGEENDLESS
difficultyEASYMEDIUMHARD
timestamp对局结束时的 epoch 毫秒数。

此次切分之前的旧条目在读取时会自动打上 Challenge / Medium 标签,因此旧排行榜仍能正常渲染。

清空排行榜

游戏内没有用于清空排行榜的指令。如需重置,请停止服务器并删除 plugins/MegaBlockSurvivors/leaderboard.yml