跳至主要內容

ResourcePackManager (RSPM)

ResourcePackManager 會發現、合併、託管並分發來自受支援外掛和手動提供的資源包。它還能將合併後的 Java 資源包轉換為 Bedrock 資源包,讓 GeyserMC 玩家看到與 Java 玩家相同的自訂內容,並提供對 BungeeCord、Waterfall 和 Velocity 代理網路的一級支援。

功能

  • 發現受支援的外掛資源包,並依照 priorityOrder 進行合併
  • 執行其內建的 HTTP 伺服器以便自行託管合併後的資源包(無需外部檔案託管)
  • 在無法自我託管時,可回退至 MagmaGuy 的免費託管(自動託管)
  • 可強制或選擇性地提示使用資源包
  • 監視資源包變更,並在來源穩定後自動重新合併
  • 將合併後的 Java 資源包轉換為適用於 GeyserMC 的 Bedrock 資源包
  • 透過內附的 Geyser 擴充功能向 Geyser 註冊真正的自訂 Bedrock 實體,讓模型化實體(例如 FreeMinecraftModels、EliteMobs)能為 Bedrock 玩家渲染並播放動畫
  • 支援代理網路:每個後端伺服器各自產出 Bedrock 資源包,代理外掛則會將其拉取、合併,再透過 Geyser 提供合併結果
  • 不需貼上任何金鑰即可連結一個網路:代理持有網路金鑰、將其存入自己的 network-key 檔案,並在玩家首次連線到某個後端時自動把金鑰推送過去
  • 能在整個網路上讓自己保持最新:後端會透過一條經過認證的路由提供通用外掛 jar;代理會驗證其結構與版本、拒絕降級、以 SHA-256 驗證傳輸的位元組,並預備到下次關機時套用

架構概覽

RSPM v2 是一個多模組的 Maven 建置專案,但它以單一 jar 形式發佈:ResourcePackManager.jar。這一個 jar 同時包含 Bukkit/Paper 外掛、Velocity 外掛以及 BungeeCord/Waterfall 外掛——Minecraft 會載入與其執行平台相符的那個進入點。不再有獨立的 ResourcePackManager-Velocity.jar / ResourcePackManager-BungeeCord.jar 檔案需要解壓。

proxy-extension/ 資料夾仍然存在,但意義已經不同:當某個後端發現自己位於代理之後、且從未被配發過網路金鑰時,它會在 plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar 預備一份與自身執行中 jar 位元組完全相同的副本,並提示你把那一個檔案複製到代理上。它是你手上已有的那個 jar 的便利副本,而不是各平台分開的成品。

同一個 jar 會依你放置的位置扮演兩種角色:

  • 作為後端外掛(在每個 Paper/Spigot 後端上)— 混合 Java 資源包、執行 Bedrock 轉換器、託管資源包、提供一個小型 HTTP 伺服器,並將資源包推送給 Java 用戶端。
  • 作為代理外掛(在 Velocity 或 BungeeCord/Waterfall 代理上)— 拉取每個後端的 Bedrock 資源包與對應檔,合併成單一的網路級資源包,並透過代理的 Geyser 將其提供給 Bedrock 用戶端。

獨立伺服器只需要在後端放置該 jar。代理網路則需要在每個後端放置同一個 jar,並在代理上放一份副本。

同一個 jar 同時也是 Geyser 擴充功能。當後端偵測到本地安裝了 Geyser-Spigot 時,它會把完全相同的通用 ResourcePackManager.jar 安裝到 Geyser-Spigot/extensions/,讓 Geyser 能夠渲染 RSPM 的自訂 Bedrock 實體;代理端身分也會對代理的 Geyser 做同樣的事。(舊版曾另外提供獨立的 ResourcePackManager-GeyserBridge.jar —— 該檔案已停用,並會透過 Geyser 的更新佇列自動被取代。)請參閱 Geyser 擴充功能與自訂實體

託管選項

Java 資源包的交付採用下列優先順序:

  1. 強制自我託管selfHostForce: true)— 會覆寫 autoHostselfHostEnabled,跳過所有探測與遠端上傳,直接公告本機 URL。主要用於測試。
  2. 優先自我託管autoHost: truepreferSelfHost: trueselfHostEnabled: true,皆為預設)— RSPM 啟動自己的 HTTP 伺服器,執行一連串的健全性檢查(非 LAN 位址、本地端 self-probe、透過 magmaguy.com 的外部可達性探測),然後將本機 URL 公告給用戶端。對 MagmaGuy 零頻寬成本。這個「先試自我託管」的偏好在代理後端上會被跳過,直接進入步驟 3;但後端自己的 HTTP 伺服器仍會照常運行,因為代理要從它那裡拉取 Bedrock 成品。
  3. 遠端自動託管回退 — 若自我託管被停用,或實際的自我託管可達性檢查失敗,RSPM 會將資源包上傳到 MagmaGuy 的 CDN(magmaguy.com/rsp/),並改為公告該 URL。若遠端路徑失敗,在 selfHostEnabled: true 時它可以回退到自我託管。

autoHost: falseselfHostForce: false,RSPM 會將合併後的 zip 寫入 plugins/ResourcePackManager/output/,但不會推送任何 URL。

完整的交付決策樹、連接埠解析與外部主機偵測,請參閱自我託管

Java 轉 Bedrock 轉換

Bedrock 轉換器不再僅限於 FreeMinecraftModels。它會遞迴遍歷合併資源包中每一個 1.21.4+ 物品定義檔案(assets/<namespace>/items/**/*.json),並為提供這些檔案的任何外掛產出 Bedrock 幾何模型、附掛物 (attachables) 與物品欄圖示:

  • Bedrock 玩家可看到任何使用 1.21.4+ 物品定義格式的外掛資源包提供的 3D 物品、自訂盔甲與模型裝備。
  • 自訂盔甲材質透過使用原版盔甲幾何結構加上 Java 材質作為可見圖層,在 Bedrock 玩家身上呈現。
  • 3D 物品的物品欄圖示是透過 display.gui 變換從 Java 模型以軟體渲染產出。
  • Bedrock 資源包會透過 Geyser API 以每個 Bedrock 工作階段即時提供,因此材質和模型微調可立即傳遞給下一位加入的 Bedrock 玩家,無需重啟伺服器。但自訂物品對應仍需重啟,因為 Geyser 在啟動時才會註冊它們。
  • bedrock_display_offsets.yml 提供十二個可由使用者調整的手持物品顯示偏移選項(第一人稱六個、第三人稱六個)。

目前的整合

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 資源包交付串接到偵測到的版本。

下一步