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 に揃うため、新しいセクションが追加されると表示は下方向に床を突き抜けるのではなく上方向に伸びていきます。
ホログラムは最大 6 セクション (Challenge x {Easy, Medium, Hard}、続いて Endless x {Easy, Medium, Hard}) を描画します。エントリが 0 件のセクションは静かにスキップされる ため、新しいサーバーで空のバケットが 6 つ並ぶことはありません。すべてのバケットが空の場合は、単一の「no highscores yet」行が代わりに表示されます。
ホログラムは以下のタイミングで自動的に再スポーンされます:
- プラグインの有効化時 / リロード時。
- 新しいリーダーボードエントリが記録された直後。
mbs_spawn内のアンカーチャンクがリロードされたとき (Paper はチャンクのアンロード時に非永続的な display エンティティを削除するため、リスナーはロビーチャンクが戻るたびにホログラムを再スポーンします)。
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 | ラン終了時のエポックミリ秒。 |
この分割が導入される前のレガシーエントリは、読み込み時に自動的に Challenge / Medium のタグが付与され、古いリーダーボードも引き続き描画されます。
リーダーボードの消去
リーダーボードを消去するゲーム内コマンドはありません。リセットするには、サーバーを停止し plugins/MegaBlockSurvivors/leaderboard.yml を削除してください。