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 模式有明确的终点(最终 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 的主要指标。 |
gameMode | CHALLENGE 或 ENDLESS。 |
difficulty | EASY、MEDIUM 或 HARD。 |
timestamp | 对局结束时的 epoch 毫秒数。 |
此次切分之前的旧条目在读取时会自动打上 Challenge / Medium 标签,因此旧排行榜仍能正常渲染。
清空排行榜
游戏内没有用于清空排行榜的指令。如需重置,请停止服务器并删除 plugins/MegaBlockSurvivors/leaderboard.yml。