MegaBlock Survivors セットアップ
MegaBlock Survivors のセットアップフローは Nightbreak が管理するコンテンツパッケージを中心に構築されており、FreeMinecraftModels によるモデルサポートにも任意で対応します。
動作要件
- Java
21 1.21.4API ラインに対応した Paper/Spigot 互換サーバー
任意の連携:
FreeMinecraftModels-- カスタムモブおよび武器モデル (ソフト依存)LibsDisguises-- ビジュアル面の追加サポートを行うソフト依存
MegaBlock Survivors が作成するもの
起動時、MegaBlock Survivors は plugins/MegaBlockSurvivors/ 配下の以下のパスを初期化または使用します:
plugins/MegaBlockSurvivors/config.yml
plugins/MegaBlockSurvivors/translations.yml
plugins/MegaBlockSurvivors/content_packages/
plugins/MegaBlockSurvivors/imports/
plugins/MegaBlockSurvivors/worlds/
plugins/MegaBlockSurvivors/npcs/
plugins/MegaBlockSurvivors/leaderboard.yml
plugins/MegaBlockSurvivors/meta_progression.yml
plugins/MegaBlockSurvivors/stats-dump.log
plugins/MegaBlockSurvivors/version.txt
加えて、mbs_spawn という名前のオペレーター作成のロビーワールドがディスク上に存在する場合は自動的に読み込まれます。プラグインはこのワールドを 作成も変更もしません -- 読み込むだけです。プラグインのいくつかの機能は mbs_spawn が無い場合、無音で既定の挙動にフォールバックします:
- リーダーボードホログラム (
mbs_spawn内の(4.5, 67, -14.5)に固定) はスポーンをスキップし、警告をログに出します。 - 参加時のテレポート (
SpawnLobbyListener) は参加プレイヤーをmbs_spawn内の(0.5, 65, 0.5)(yaw 180 向き) へ送ります -- プレイヤーが試合中の場合は迂回されます。 - 試合終了後のテアダウンでは、
mbs_spawnが存在する場合プレイヤーをそこへ戻します。
設定
config.yml には以下が含まれます:
| キー | 型 | 既定値 | 説明 |
|---|---|---|---|
setupDone | boolean | false | 初回セットアップガイダンスが完了したかどうかを追跡します |
翻訳
ユーザーに表示されるすべての文字列 (チャット行、ダイアログタイトル、ボスバー、ホログラムテキスト、コマンド説明) は translations.yml から読み込まれます。サーバーオペレーターは jar に触れずに、あらゆる行をローカライズあるいはリスキンできます。サポートされている機能:
&プレフィックスのカラーコードおよび&#RRGGBBの HEX エスケープ。<gradient:#FF0000:#00FF00>text</gradient>のような MagmaCore のグラデーションタグ。- プラグインが実行時に置換する
{placeholder}トークン。 - 未設定のキーは
[translations: key.name]のマーカーとして表示されるため、ゲーム内で見落としを発見しやすくなっています。
このファイルは初回起動時およびプラグインのリロード時に既定エントリで再生成されるため、新たに追加された文字列が自動的に現れます。
プレイヤーデータの永続化
| ファイル | 用途 |
|---|---|
leaderboard.yml | バケットごとのリーダーボードエントリ (ゲームモード 2 種 x 難易度 3 種で計 6 セクション)。各バケットは 100 エントリまで保持します。 |
meta_progression.yml | プレイヤーごとの Soul Echo 残高とアップグレードトラックレベル。プレイヤー UUID をキーとします。 |
stats-dump.log | 試合終了時に書き出される、完了したすべての試合の追記専用 JSON-Lines ログ。 |
初回セットアップ警告
setupDone が false の場合、megablocksurvivors.* 権限を持つプレイヤーが参加すると、プラグインは初回セットアップ警告を表示します。ワーナーは (NightbreakFirstTimeSetupSpec 経由で) セットアップコマンドのみを持つように設定されているため、プレイヤーを初期化/ダウンロードのステップではなく /mbs setup (コンテンツブラウザ) へ案内します。/mbs initialize はこのビルドでは登録されていません。/mbs downloadall は登録されていますが、コンテンツパッケージが無効なためプラグイン jar のみを取得します (Commands ページを参照) -- 代わりに /mbs setup を使用してください。
推奨される初回フロー
- MegaBlock Survivors をインストールし、サーバーを一度起動します。翻訳ファイルと設定ファイルが初回起動時に書き出されます。
/nightbreaklogin <token>で Nightbreak アカウントをリンクします。/mbs setupを実行して Nightbreak コンテンツブラウザを開き、必要なパッケージをインストール/有効化します。imports/に手動でコンテンツを置いた場合、あるいはcontent_packages/でパッケージを切り替えた後は/mbs reloadを実行します。
/nightbreaklogin <token> は MegaBlock Survivors の plugin.yml ではなく、共有の Nightbreak/MagmaCore アカウントフローによって提供されます。
コンテンツパッケージ
コンテンツパッケージは content_packages/ フォルダー内の YAML ファイルで設定します。各パッケージは以下を定義できます:
| フィールド | 型 | 説明 |
|---|---|---|
isEnabled | boolean | パッケージが有効かどうか |
name | string | パッケージの表示名 |
description | string list | 説明行 |
downloadLink | string | 手動ダウンロード URL |
version | integer | パッケージのバージョン番号 |
nightbreakSlug | string | 自動ダウンロード用の Nightbreak コンテンツスラッグ |
schematicFiles | string list | パッケージに含まれるスケマティックファイル |
worldFolders | string list | 含まれるワールドフォルダー |
worldContainerFolders | string list | 含まれるワールドコンテナフォルダー |
modelFolders | string list | FreeMinecraftModels 用モデルフォルダー |
markerFileName | string | パッケージがインストール済みかを判定するマーカーファイル |
category | enum | FREE, PREMIUM, または RESOURCES |
toggleable | boolean | パッケージのオン/オフ切り替えが可能かどうか |
NPC 設定
NPC (ロビーのクエスト発行者、商人) は npcs/ 内の YAML ファイルで設定します。NPC はチャンクロード時にリスポーンされるため、ロビーチャンクのアンロード/リロードサイクルを跨いでも生き残ります。NPC を右クリックすると、設定された interactionCommand が実行されます。
2 体の NPC がプラグインに同梱されており、mbs_spawn ワールドが読み込まれると自動的にスポーンします:
| NPC | 既定の位置 | ディスガイズ | インタラクションコマンド |
|---|---|---|---|
| Match Starter | mbs_spawn, 0, 67, -15 | VILLAGER | mbs start |
| Meta Progression | mbs_spawn, -9, 66, -13 | PIGLIN | mbs meta |
どちらも npcs/ 内の対応する YAML を編集することで、無効化、移動、再バインドが可能です。ディスガイズの描画には LibsDisguises が必要です。これが無い場合でも、NPC は設定された位置にベースのエンティティとしてスポーンします。
NPC YAML フィールド
| フィールド | 型 | 説明 |
|---|---|---|
isEnabled | boolean | NPC をスポーンさせるかどうか |
name | string | 内部名 |
location | string | world,x,y,z,pitch,yaw 形式 |
disguise | string | LibsDisguises のエンティティタイプ (任意) |
interactionCommand | string | プレイヤーが NPC を右クリックしたときに実行されるコマンド |
nameTag | string | NPC の頭上に浮かぶホログラム (カラーコード使用可) |
バージョン更新通知
プラグインが (version.txt との比較で) バージョン変更を検知すると、コンソールおよびオンラインの全 OP に通知します。