メインコンテンツまでスキップ

ResourcePackManager(RSPM)

ResourcePackManagerは、対応プラグインや手動で提供されたパックからリソースパックを検出してマージし、ホストして配布します。さらに、マージされたJavaパックをBedrockリソースパックに変換できるため、GeyserMCを利用するプレイヤーもJavaプレイヤーと同じカスタムコンテンツを見ることができます。また、BungeeCordとVelocityのプロキシネットワークをファーストクラスでサポートしています。

機能​

  • 対応プラグインのパックを検出し、priorityOrder に従ってマージします
  • 組み込みのHTTPサーバーを起動して、マージされたパックをセルフホストできます(外部ファイルホスト不要)
  • セルフホストが現実的でない場合は、MagmaGuyの無料ホスティング(auto-host)にフォールバックできます
  • パックの使用を強制したり、任意で促したりできます
  • パックの変更を監視し、ソースが安定したタイミングで自動的に再マージします
  • マージされたJavaパックをGeyserMC向けのBedrockリソースパックに変換します
  • 同梱のGeyser拡張を通じて真のカスタムBedrockエンティティをGeyserに登録するため、モデル付きエンティティ(FreeMinecraftModels、EliteMobsなど)がBedrockプレイヤーにも描画・アニメーションされます
  • プロキシネットワークに対応:参加するバックエンドがBedrockパックを生成し、プロキシプラグインがそれらを検出・取得・マージして、Geyserを通じて配信します
  • 貼り付けるキーなしでネットワークをリンクします:プロキシがネットワークキーを保有し、自身の network-key ファイルに保存し、プレイヤーが初めて接続した時点で各バックエンドへ自動的にプッシュします
  • ネットワーク全体で自身を最新に保てます:バックエンドは認証付きの経路でユニバーサルなプラグインjarを提供し、プロキシはその構造とバージョンを検証し、ダウングレードを拒否し、転送されたバイト列をSHA-256で検証し、次のシャットダウンに向けてステージングします

アーキテクチャ概要​

RSPM v2は複数モジュール構成のMavenビルドですが、配布されるのは単一のjarである ResourcePackManager.jar です。この1つのjarには、Bukkit/PaperプラグインとVelocityプラグイン、BungeeCordプラグインがすべて含まれており、Minecraftは実行中のプラットフォームに一致するエントリーポイントを読み込みます。ResourcePackManager-Velocity.jar / ResourcePackManager-BungeeCord.jar という別々のファイルを展開する必要はもうありません。

proxy-extension/ フォルダーは今も存在しますが、意味が変わりました:バックエンドが自分はプロキシの背後にあり、まだネットワークキーを渡されたことがないと気づくと、実行中の自身のjarのバイト単位で同一なコピーを plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar に用意し、その1ファイルをプロキシへコピーするよう案内します。これはすでに手元にあるjarの便宜的なコピーであって、プラットフォーム別の別成果物ではありません。

同じjarが、置き場所に応じて2つの役割を果たします:

  • バックエンドプラグインとして(各Paper/Spigotバックエンド上)— Javaパックをミックスし、Bedrockコンバーターを実行し、パックをホストし、小さなHTTPサーバーを公開し、Javaクライアントにパックをプッシュします。
  • プロキシプラグインとして(VelocityまたはBungeeCordプロキシ上)— 各バックエンドのBedrockパックとマッピングを取得し、ネットワーク全体で1つのパックにマージし、プロキシのGeyserを通じてBedrockクライアントへ配信します。

スタンドアロンサーバーでは、バックエンドにjarを配置するだけです。プロキシネットワークでは、プロキシと、リソースパックを提供するバックエンドに同じjarを配置します。プロキシに登録されていてもRSPMを実行していないサーバーは、パックの配信を遅らせません。バックエンドの検出を参照してください。

同じjarはGeyser拡張も兼ねています。バックエンドがローカルのGeyser-Spigotインストールを検出すると、まったく同じユニバーサルな ResourcePackManager.jar を Geyser-Spigot/extensions/ にインストールするため、GeyserはRSPMのカスタムBedrockエンティティを描画できます。プロキシ側の役割も、プロキシのGeyserに対して同じことを行います。(旧バージョンは別途 ResourcePackManager-GeyserBridge.jar を配布していましたが、このファイルは廃止され、Geyserの更新キューを通じて自動的に置き換えられます。)Geyser拡張とカスタムエンティティを参照してください。

ホスティングオプション​

Javaパックの配信は次の優先順位で行われます:

  1. 強制セルフホスト(selfHostForce: true)— autoHost と selfHostEnabled を上書きし、プローブとリモートアップロードを省略します。主にテスト用です。URL通知前に、URL検証とHTTPリスナーの起動には成功する必要があります。
  2. autoHost: true、preferSelfHost: true、selfHostEnabled: true の場合、単体サーバーとプロキシバックエンドの両方でセルフホストを先に試します。ホストアドレスを確認し、localhostとプレイヤー用の正確なURLからダウンロードしたパックのサンプルを比較し、外部到達性が確認できてからURLを通知します。検証失敗や検証の利用不可ではリモートホストへ切り替えます。プロキシは引き続きバックエンドHTTPサーバーからBedrock成果物を取得します。
  3. リモートホストへのフォールバック — セルフホストが無効か検証が失敗した場合、magmaguy.com/rsp/ のパックを再利用するかアップロードし、そのURLを通知します。リモート側が失敗すると selfHostEnabled: true ならセルフホストを試せますが、同じ検証が必要です。両方の自動経路が失敗した場合、新しい配信URLを通知しません。

autoHost: false かつ selfHostForce: false の場合、RSPMはURLをプッシュせず、マージされたzipを plugins/ResourcePackManager/output/ に書き出すだけです。

完全な配信判定ツリー、ポート解決、外部ホスト検出についてはセルフホストを参照してください。

selfHostExternalUrlには、リバースプロキシやTLS終端で公開する完全なHTTPまたはHTTPSのURLを設定できます。/rspm.zipへのリクエストをRSPMに転送してください。自動パック配信は引き続き利用できます。

Java から Bedrock への変換​

BedrockコンバーターはもはやFreeMinecraftModels専用ではありません。マージされたパックに含まれる1.21.4以降のアイテム定義ファイル(assets/<namespace>/items/**/*.json)を再帰的にすべて走査し、提供元のプラグインを問わずBedrockのジオメトリ、アタッチャブル、インベントリアイコンを生成します:

  • 1.21.4以降のアイテム定義フォーマットを使用するパックであれば、どのプラグインの3Dアイテム、カスタム防具、モデル付き装備でもBedrockプレイヤーに表示されます。
  • カスタム防具のテクスチャは、バニラの防具ジオメトリにJavaのテクスチャを可視レイヤーとして重ねる形でBedrockプレイヤーに描画されます。
  • 3Dアイテムのインベントリアイコンは、Javaモデルの display.gui トランスフォーム経由でソフトウェアレンダリングされます。
  • BedrockパックはGeyserのAPI経由でBedrockセッション単位でライブ配信されるため、テクスチャやモデルの調整はサーバー再起動なしで次に参加するBedrockプレイヤーに届きます。カスタムアイテムのマッピングだけは、Geyserが起動時に登録するため、引き続き再起動が必要です。
  • 手持ちの3Dアイテムは、一人称と三人称のポーズを、Javaモデルの display.firstperson_righthand と display.thirdperson_righthand のトランスフォームをバニラのBedrockプレイヤーリグに対応付けて取得します。調整するオフセットはありません。
  • FreeMinecraftModelsのパーティクルエフェクト付きアイテムなど、プラグインがパーティクルのサイドカーを同梱している手持ちの3Dアイテムでは、Bedrockプレイヤーにもそのパーティクルが再生されます。エンティティバンドルにもBedrockのパーティクルファイルを同梱できます。

現在の統合​

ResourcePackManagerには、以下のプラグイン向けの統合エントリがあらかじめ用意されています:

  • BackpackPlus
  • BetterHUD
  • BetterStructures
  • CannonRTP
  • EliteMobs
  • EternalTD
  • FreeMinecraftModels
  • InfiniteVehicles
  • ItemsAdder
  • MegaBlockSurvivors
  • MMOInventory
  • ModelEngine
  • Nexo
  • Nova
  • Oraxen
  • RealisticSurvival
  • ResurrectionChest
  • ValhallaMMO
  • vane-core

各統合は、対象プラグインがインストールされていて、設定されたローカルパスまたはリモートURLが利用可能な場合にのみ有効になります。プラグインは起動時にGeyser(バックエンドではGeyser-Spigot、プロキシではGeyser-Velocity/Geyser-BungeeCord)も検出し、見つかったいずれかにBedrockパック配信を接続します。

次に読むページ​