MegaBlock Survivors Bestenliste
MegaBlock Survivors zeichnet jeden nicht gecheateten, abgeschlossenen Durchlauf in einer dauerhaften Bestenliste auf, die in plugins/MegaBlockSurvivors/leaderboard.yml gespeichert wird. Gecheatete Durchläufe (jedes Match, in dem /mbs cheat verwendet wurde) sind ausdrücklich ausgeschlossen.
Kategorien
Jeder Eintrag trägt ein Spielmodus- und ein Schwierigkeits-Tag, sodass die Bestenliste in 6 unabhängige Buckets aufgeteilt ist:
| Modus | Schwierigkeit |
|---|---|
| Challenge | Easy |
| Challenge | Medium |
| Challenge | Hard |
| Endless | Easy |
| Endless | Medium |
| Endless | Hard |
Die Buckets werden unabhängig voneinander gerankt und jeder Bucket fasst auf der Festplatte bis zu 100 Einträge. Den Spielern werden die Top 10 angezeigt.
Ranking-Regeln
| Modus | Primäre Sortierung | Tiebreaker |
|---|---|---|
| Challenge | Schnellste Abschlusszeit (aufsteigend) | Bei Gleichstand gewinnen neuere Einträge |
| Endless | Höchste erreichte Welle (absteigend) | Überlebenszeit (länger gewinnt), dann Zeitstempel |
Diese Aufteilung ist sinnvoll, weil der Challenge-Modus einen festen Endpunkt hat (den Endboss), sodass "schnellste Abschlusszeit" die naheliegende Skill-Metrik ist. Endless hat kein Ende, daher ist "höchste erreichte Welle" das aussagekräftige Maß.
In-Welt-Hologramm
Ein einzelnes TextDisplay-Hologramm wird in der Lobby-Welt mbs_spawn (an den Weltkoordinaten ca. 4.5, 67, -14.5) erzeugt. Das Hologramm ist unten verankert -- die untere Kante des Textes liegt stets auf dem Anker-Y, sodass das Hinzufügen neuer Sektionen die Anzeige nach oben wachsen lässt, anstatt sich nach unten durch den Boden zu schieben.
Das Hologramm rendert bis zu sechs Sektionen (Challenge x {Easy, Medium, Hard} gefolgt von Endless x {Easy, Medium, Hard}). Sektionen mit null Einträgen werden stillschweigend übersprungen, damit ein frischer Server nicht sechs leere Buckets anzeigt. Ist jeder Bucket leer, wird stattdessen eine einzelne Zeile "no highscores yet" gezeigt.
Das Hologramm wird automatisch neu erzeugt:
- Beim Aktivieren / Reload des Plugins.
- Nachdem ein neuer Bestenlisten-Eintrag aufgezeichnet wurde.
- Wenn der Anker-Chunk in
mbs_spawnneu geladen wird (Paper entfernt nicht-persistente Display-Entities beim Entladen von Chunks, daher erzeugt der Listener das Hologramm jedes Mal neu, wenn der Lobby-Chunk zurückkehrt).
Existiert mbs_spawn nicht auf der Festplatte, wird das Hologramm stillschweigend übersprungen und ein WARN protokolliert.
Chat-Anzeige pro Durchlauf
Endet ein nicht-gecheateter Durchlauf, sieht der Spieler die Top 10 seines Buckets als Chat-Block. Die eigene Zeile des Spielers ist hervorgehoben (> #N). Liegt der Rang des Spielers außerhalb der Top 10, wird eine Ellipsen-Zeile gefolgt von seiner tatsächlichen Rangzeile angezeigt.
Gecheatete Siege zeigen stattdessen den Hinweis "Leaderboard not updated (cheating detected)".
Eintrags-Schema
Jeder Eintrag verfolgt:
| Feld | Beschreibung |
|---|---|
playerName | Der Bukkit-Anzeigename am Ende des Durchlaufs. |
playerUUID | Die UUID des Spielers. |
timeSeconds | Gesamtdauer des Durchlaufs in Sekunden. |
kills | Gesamtzahl der Nicht-Boss-Kills. |
level | Finales Level des Spielers. |
highestWave | Höchste erreichte Welle. Primärer Wert für Endless. |
gameMode | CHALLENGE oder ENDLESS. |
difficulty | EASY, MEDIUM oder HARD. |
timestamp | Epoch-Millisekunden, zu denen der Durchlauf endete. |
Altdaten-Einträge aus der Zeit vor dieser Aufteilung werden beim Lesen automatisch mit Challenge / Medium getaggt, damit alte Bestenlisten weiterhin gerendert werden.
Bestenliste leeren
Es gibt keinen In-Game-Befehl, um die Bestenliste zu leeren. Zum Zurücksetzen den Server stoppen und plugins/MegaBlockSurvivors/leaderboard.yml löschen.