Skip to main content

MegaBlock Survivors Leaderboard

MegaBlock Survivors records every non-cheated completed run to a persistent leaderboard stored in plugins/MegaBlockSurvivors/leaderboard.yml. Cheated runs (any match where /mbs cheat was used) are explicitly excluded.

Categories

Each entry carries a game mode and a difficulty tag, so the leaderboard is split into 6 independent buckets:

ModeDifficulty
ChallengeEasy
ChallengeMedium
ChallengeHard
EndlessEasy
EndlessMedium
EndlessHard

Buckets are ranked independently, and each bucket holds up to 100 entries on disk. The top 10 are surfaced to players.

Ranking Rules

ModePrimary sortTiebreaker
ChallengeFastest completion time (ascending)Newer entries win ties
EndlessHighest wave reached (descending)Time survived (longer wins), then timestamp

This split makes sense because Challenge mode has a fixed endpoint (the final boss), so "fastest completion" is the obvious skill metric. Endless has no end, so "highest wave reached" is the meaningful measure.

In-World Hologram

A single TextDisplay hologram is spawned in the mbs_spawn lobby world (at world coordinates ~4.5, 67, -14.5). The hologram is bottom-anchored -- the bottom edge of the text always sits at the anchor Y so adding new sections grows the display upward rather than downward through the floor.

The hologram renders up to six sections (Challenge x {Easy, Medium, Hard} followed by Endless x {Easy, Medium, Hard}). Sections with zero entries are silently skipped so a fresh server doesn't display six empty buckets. If every bucket is empty, a single "no highscores yet" line is shown instead.

The hologram is respawned automatically:

  • On plugin enable / reload.
  • After every new leaderboard entry is recorded.
  • When the anchor chunk in mbs_spawn reloads (Paper removes non-persistent display entities on chunk unload, so the listener re-spawns the hologram every time the lobby chunk comes back).

If mbs_spawn does not exist on disk, the hologram is silently skipped and a WARN is logged.

Per-Run Chat Display

When a non-cheated run ends, the player sees the top 10 of their run's bucket as a chat block. The player's own row is highlighted (> #N). If the player's rank is outside the top 10, an ellipsis row is shown followed by their actual rank line.

Cheated victories show a "Leaderboard not updated (cheating detected)" notice instead.

Entry Schema

Each entry tracks:

FieldDescription
playerNameThe Bukkit display name at run-end.
playerUUIDThe player's UUID.
timeSecondsTotal duration of the run in seconds.
killsTotal non-boss kills.
levelPlayer's final level.
highestWaveHighest wave reached. Primary stat for Endless.
gameModeCHALLENGE or ENDLESS.
difficultyEASY, MEDIUM, or HARD.
timestampEpoch millis when the run ended.

Legacy entries from before this split are auto-tagged with Challenge / Medium on read so old leaderboards continue to render.

Clearing the Leaderboard

There is no in-game command to wipe the leaderboard. To reset, stop the server and delete plugins/MegaBlockSurvivors/leaderboard.yml.