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 資源包的交付採用下列優先順序:
- 強制自我託管(
selfHostForce: true)— 會覆寫autoHost與selfHostEnabled,跳過所有探測與遠端上傳,直接公告本機 URL。主要用於測試。 - 優先自我託管(
autoHost: true、preferSelfHost: true與selfHostEnabled: true,皆為預設)— RSPM 啟動自己的 HTTP 伺服器,執行一連串的健全性檢查(非 LAN 位址、本地端 self-probe、透過 magmaguy.com 的外部可達性探測),然後將本機 URL 公告給用戶端。對 MagmaGuy 零頻寬成本。這個「先試自我託管」的偏好在代理後端上會被跳過,直接進入步驟 3;但後端自己的 HTTP 伺服器仍會照常運行,因為代理要從它那裡拉取 Bedrock 成品。 - 遠端自動託管回退 — 若自我託管被停用,或實際的自我託管可達性檢查失敗,RSPM 會將資源包上傳到 MagmaGuy 的 CDN(
magmaguy.com/rsp/),並改為公告該 URL。若遠端路徑失敗,在selfHostEnabled: true時它可以回退到自我託管。
若 autoHost: false 且 selfHostForce: 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 資源包交付串接到偵測到的版本。
下一步
- 設定 — 獨立伺服器的操作員工作流程
- 代理網路 — BungeeCord / Waterfall / Velocity 的逐步設定
- 自我託管 — 內建 HTTP 伺服器、連接埠解析、外部主機偵測
- Bedrock / Geyser 轉換 — 會轉換哪些內容、調整選項
- Geyser 擴充功能與自訂實體 — 內附擴充功能如何安裝、Geyser 版本需求
- 常見問題 — 常見疑問
- 疑難排解 — 出現問題時要檢查的項目
- API — 從你自己的外掛註冊資源包