MegaBlock Survivors セットアップ
MegaBlock SurvivorsはNightbreakのコンテンツパッケージを使います。敵と武器がモデルクラスを直接使用するため、記述ファイルではソフト依存でも、試合にはFreeMinecraftModelsの導入が必要です。
動作要件
- Java
21 - 使用する MegaBlock Survivors ビルドに対応するサーバー。記述ファイルは API
1.21.4を宣言していますが、現在のソースは Spigot26.2に対してコンパイルされています。記述ファイルだけでは対応バージョン一覧になりません。 FreeMinecraftModelsとプレイに必要なモデル・コンテンツパッケージ- ワールド生成で貼り付ける塔、壁、木のスケマティック用の
WorldEdit。プラグインは WorldEdit の API を直接呼び出しますが、記述ファイルでは依存関係として宣言されていません - 選択画面と報酬画面に必要な、正常に動作するネイティブの
minecraft:dialogサポート
任意の連携:追加の視覚効果用のLibsDisguises。
MegaBlock Survivors が作成するもの
起動時、MegaBlock Survivors は plugins/MegaBlockSurvivors/ 配下の以下のパスを初期化または使用します:
plugins/MegaBlockSurvivors/config.yml
plugins/MegaBlockSurvivors/translations.yml
plugins/MegaBlockSurvivors/content_packages/
plugins/MegaBlockSurvivors/content_markers/
plugins/MegaBlockSurvivors/imports/
plugins/MegaBlockSurvivors/schematics/
plugins/MegaBlockSurvivors/worlds/
plugins/MegaBlockSurvivors/npcs/
plugins/MegaBlockSurvivors/leaderboard.yml
plugins/MegaBlockSurvivors/meta_progression.yml
plugins/MegaBlockSurvivors/stats-dump.log
plugins/MegaBlockSurvivors/version.txt
plugins/MegaBlockSurvivors/nightbreak-changelogs.yml
nightbreak-changelogs.yml には、/mbschangelog が使う共有リリースノートの既読状態が保存されます(コマンドを参照)。
管理者が作成した mbs_spawn というロビーワールドのフォルダーがディスクにあり、まだ読み込まれていない場合は、そのワールドを読み込みます。プラグイン起動前にロビーを設置してください。ロビーを利用できない場合は次のように動作します。
mbs_spawnの(4.5, 67, -14.5)に置くリーダーボードホログラムは生成をスキップし、情報メッセージをログに記録します。- 参加時のロビーテレポートは何もしません。ロビーが読み込まれている場合は、試合記録がないか現在のワールド名が
megablocksurvivors_で始まるプレイヤーを(0.5, 65, 0.5)、yaw 180 へ送ろうとします。進行中の試合記録があるだけでは、この条件を回避できません。 - 試合終了処理では、ロビーの代わりに試合前の位置を使います。
設定
config.yml には以下が含まれます:
| キー | 型 | 既定値 | 説明 |
|---|---|---|---|
setupDone | boolean | false | 初回セットアップガイダンスが完了したかどうかを追跡します |
preGenerateWorldCache | boolean | false | 起動時にサバイバーのゲームプレイ用ワールドを事前生成します。サーバーの起動を軽く保つには false のままにしてください。ワールドはマッチで必要になった時点で引き続きオンデマンドで生成されます |
nightbreak.autoDownloadPluginUpdates | boolean | false | 起動後に、シェードされた MagmaCore ライブラリによって追加されます。true の場合、利用可能なプラグインアップデートが起動から数分後に自動でダウンロードされます。プラグインの自動ダウンロードには、有効な Nightbreak アカウントトークンと有効なサポーターメンバーシップが必要です |
nightbreak.applyPluginUpdatesWithoutRestart | string | never | MagmaCore によって追加されます。never は次回の再起動まで待ち、when-empty はダウンロード済みのアップデートを次にオンラインのプレイヤーがいなくなった時点で適用し、immediately はすぐに適用します。アップデートを適用すると MegaBlock Survivors がリロードされ、進行中の試合は終了します。/mbs applypluginupdate を使うと、待機中のアップデートを手動で適用できます |
共有のアップデート設定が Nightbreak プラグイン全体でどのように動作するかは、自動アップデートを参照してください。
翻訳
多くのゲーム内メッセージ、ダイアログ、ボスバー、ホログラムの文字列はtranslations.ymlを使います。一部のコンテンツパッケージのメッセージ、共通コマンド説明、ランキング表示は英語で直接記述されています。対応している翻訳機能は次のとおりです:
&プレフィックスのカラーコードおよび&#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 ログ。/mbs dump は、実行者の現在または直近の試合を探す前に共有ファイルを消去します。概要がなくても以前のログは消去されます。 |
コンテンツフォルダー
| フォルダー | 用途 |
|---|---|
imports/ | ダウンロードした、あるいは手動で配置したコンテンツアーカイブの投入先。起動時および /mbs reload 時に MagmaCore のインポーターが処理します。 |
schematics/ | ワールド生成で使用される構造物のスケマティック。ファイル名は Level<1-3>_<Name>.schem 形式で、Tower、Wall / Wall1 / Wall2、Tree1〜Tree5 があります (ワールド 1 とワールド 3 には 4 種類のツリーバリエーション、ワールド 2 には 5 種類が同梱されます)。ラストボスのアリーナはスケマティックを使用しません。 |
worlds/ | コンテンツパッケージによってインストールされるワールドフォルダー。 |
content_packages/ | パッケージごとの YAML 定義 (後述)。 |
content_markers/ | パッケージがすでにインストールされているかを検出するために使用されるマーカーファイル。 |
初回セットアップ警告
setupDone が false の場合、megablocksurvivors.* 権限を持つプレイヤーが参加すると、プラグインは初回セットアップ警告を表示します。ワーナーは (NightbreakFirstTimeSetupSpec 経由で) セットアップコマンドのみを持つように設定されているため、プレイヤーを初期化/ダウンロードのステップではなく /mbs setup (コンテンツブラウザ) へ案内します。/mbs initialize はこのビルドでは登録されていません。/mbs downloadall は登録されていますが、コンテンツパッケージが無効なためプラグイン jar のみを取得します (Commands ページを参照) -- 代わりに /mbs setup を使用してください。
コンテンツブラウザーを開いても setupDone は設定されません。この値を書き込むメニューは、登録されていない initialize ハンドラーからしか開けません。セットアップを完了して確認したら、config.yml に setupDone: true を設定し、プラグインを再読み込みすると通知が止まります。
推奨される初回フロー
試合前に通常のアイテムを預け、ミニゲーム専用のインベントリを使ってください。 現在の実装は胴防具を上書きし、終了時にインベントリ全体を空にします。以前のアイテムは復元されません。属性、体力、空腹値、隠し満腹度もリセットされ、ポーション効果も削除されます。
- MegaBlock Survivors をインストールし、サーバーを一度起動します。翻訳ファイルと設定ファイルが初回起動時に書き出されます。
/nightbreaklogin <token>で Nightbreak アカウントをリンクします。/mbs setupで Nightbreak コンテンツブラウザーを開き、必要なパッケージをインストールします。FreeMinecraftModels がモデルを読み込めていることを確認してください。パッケージのインストール済み判定は登録パスしか確認しません。- 手動インポートやパッケージ設定の編集後は
/mbs reloadを実行します。MegaBlock Survivors が再起動され、進行中の試合は終了します。この再読み込みでモデルがインポートされ、FreeMinecraftModels が有効な場合、FMM のコンテンツも再読み込みされます。FMM のフォルダー内で直接編集したファイルや、そこにコピーしたファイルには、FMM 自身の再読み込みコマンドを使用してください。
/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 | 既定値 false。現在のアンインストール処理は常に手動削除の案内を表示し、この値ではパッケージを無効化できません |
少なくとも 1 つのリソースが登録され、そのすべてが存在すると、パッケージをインストール済みと判定します。確認するのはパスであり、ファイル内容やモデルの動作状態ではありません。FreeMinecraftModels の無効モデル用ディレクトリにあるフォルダーも存在として数えます。一部が不足すると部分インストール状態になります。インストール済みで最新のパッケージをクリックすると手動削除の案内を表示します。isEnabled の変更だけではインポート済みのゲーム内容は無効になりません。
NPC 設定
NPC は npcs/ 内の YAML で設定します。登録済みの NPC はチャンクの再読み込み時に再生成されます。初期化時にワールドが利用できなかった場合は、ワールドを読み込んでから MegaBlock Survivors を再読み込みして登録してください。右クリックすると、プレイヤー本人とその権限で 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 がある場合は村人を基礎エンティティとし、設定した変装を適用します。ない場合は設定した Bukkit エンティティタイプを試し、そのタイプが生成可能な生物でなければ村人を使います。
NPC YAML フィールド
| フィールド | 型 | 説明 |
|---|---|---|
isEnabled | boolean | NPC をスポーンさせるかどうか |
name | string | 内部名 |
location | string | world,x,y,z または world,x,y,z,yaw,pitch 形式 |
disguise | string | LibsDisguises のエンティティタイプ (任意) |
interactionCommand | string | プレイヤーが NPC を右クリックしたときに実行されるコマンド |
nameTag | string | NPC エンティティに表示するカスタム名 (カラーコード使用可) |
バージョン更新通知
現在のバージョンが version.txt の保存値より新しい場合、コンソールとオンラインの OP に通知します。保存済みバージョンのない初回起動、同じバージョン、ダウングレードではこの更新通知は出ません。