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

ResourcePackManager(RSPM)

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

機能

  • 対応プラグインのパックを検出し、priorityOrder に従ってマージします
  • 組み込みのHTTPサーバーを起動して、マージされたパックをセルフホストできます(外部ファイルホスト不要)
  • セルフホストが現実的でない場合は、MagmaGuyの無料ホスティング(auto-host)にフォールバックできます
  • パックの使用を強制したり、任意で促したりできます
  • パックの変更を監視し、ソースが安定したタイミングで自動的に再マージします
  • マージされたJavaパックをGeyserMC向けのBedrockリソースパックに変換します
  • プロキシネットワークに対応:各バックエンドが独自のBedrockパックを生成し、プロキシプラグインがそれらを取得・マージし、Geyserを通じて結果を配信します

アーキテクチャ概要

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

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

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

スタンドアロンサーバーに必要なのは、バックエンド上のjarだけです。プロキシネットワークでは、すべてのバックエンドに同じjarが必要で、さらにプロキシにもそのコピーが必要です。

バックエンドがローカルのGeyser-Spigotインストールを検出すると、同梱の ResourcePackManager-GeyserBridge.jar(別プラグインではなくGeyser拡張機能)を Geyser-Spigot/extensions/ に配置するため、GeyserはRSPMのカスタムBedrockエンティティを描画できます。

ホスティングオプション

autoHost: true の場合、3つの配信経路が次の順序で自動的に選択されます:

  1. セルフホスト優先preferSelfHost: true、既定)— RSPMが自前のHTTPサーバーを起動し、一連の健全性チェック(非LANアドレス、localhostセルフプローブ、magmaguy.comからの外部到達性プローブ)を実行し、ローカルURLをクライアントに通知します。MagmaGuyに対する帯域コストはゼロです。
  2. リモート自動ホストフォールバック — セルフホストのチェックが失敗した場合、RSPMはパックをMagmaGuyのCDN(magmaguy.com/rsp/)にアップロードし、代わりにそのURLを通知します。
  3. 強制セルフホストselfHostForce: true)— 両方のプローブとリモートアップロードを完全にスキップします。主にテスト用です。

autoHost: false の場合、RSPMはマージされたzipを plugins/ResourcePackManager/output/ に書き出すので、そこから先はあなたが扱います。

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

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が起動時に登録するため、引き続き再起動が必要です。
  • bedrock_display_offsets.yml に、持ち物アイテムの表示オフセットを調整するためのユーザー調整可能な12個のつまみがあります(一人称6個、三人称6個)。

現在の統合

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パック配信を接続します。

次に読むページ