跳至主要內容

Resource Pack Manager 常見問題

若此處未解答你的問題,請先查看側邊欄中其他 ResourcePackManager 頁面。

ResourcePackManager 目前提供哪些指令?

後端(Paper / Spigot)上,由程式碼支援的指令介面為:

  • /rspm setup — 開啟一個遊戲內的 GUI 設定選單(外掛更新狀態、推薦外掛、自動更新切換、前往 wiki / Discord / Nightbreak 帳號的連結)
  • /rspm reload — 重新建置並重新託管合併後的資源包
  • /rspm status — 完整的診斷資訊輸出(資源包狀態、託管模式、網路金鑰、整合)
  • /rspm itemsadder configure — 為 RSPM 託管設定 ItemsAdder
  • /rspm itemsadder dismiss — 為你的玩家 UUID 永久關閉 ItemsAdder 警告
  • /rspm data_compliance_request — 下載此伺服器所有遠端儲存的資料

主指令是 /resourcepackmanager/rspm 是其別名。另外還註冊了幾個共用的 MagmaCore/Nightbreak 子指令(例如 /rspm recommendedplugins/rspm downloadall),設定選單中的按鈕即連結到這些指令。

後端權限:

  • /rspm setup 需要 resourcepackmanager.setup 且僅限玩家使用(它會開啟一個物品欄 GUI)。
  • /rspm reload/rspm status/rspm itemsadder <configure|dismiss>/rspm data_compliance_request 均需要 resourcepackmanager.*

代理外掛(Velocity / BungeeCord)上,僅有診斷指令:

  • /rspm status — 代理端快照:後端清單、各後端的擷取結果、合併後的資源包狀態、Geyser/Floodgate 偵測結果
  • /rspm debug bedrock [on|off] — Velocity 與 BungeeCord 皆可。切換 GeyserBinder 發出的詳盡 [RSPM-BedrockDebug] 日誌行,用於排查「Bedrock 玩家已加入但看不到資源包」的情況。代理重啟時會重置為關閉。不帶參數執行則會印出目前狀態。

代理指令會檢查 resourcepackmanager.command.statusresourcepackmanager.*。主控台一律具備兩種權限;玩家則需透過你的權限外掛取得授權。輸出可放心分享——網路金鑰會被遮罩、不會印出任何 token——因此可以放寬授權。

目前支援哪些外掛?

ResourcePackManager 內建支援以下外掛的整合條目:

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

這些整合僅在對應外掛已安裝、且其設定的本機路徑或遠端 URL 可使用時才會生效。

每個整合在 plugins/ResourcePackManager/compatible_plugins/ 下都有自己的 YAML 設定檔。你可以為各外掛自訂 isEnabledpluginNamelocalPathurlzipsclusteradditionalLocalPathreloadCommandcluster 選項可告訴 ResourcePackManager 將本機路徑視為包含多個資源包子資料夾的目錄,這些子資料夾應全部合併在一起。

ResourcePackManager 與 ItemsAdder 相容嗎?

是的。ResourcePackManager 內建針對 ItemsAdder 的輔助工具與警告流程。

若已安裝 ItemsAdder 但仍需調整以配合 ResourcePackManager 託管,OP 玩家在加入伺服器幾秒後會收到一則可點擊的警告。已永久關閉警告的玩家則不會再看到它。從那裡你可以:

  • 執行 /rspm itemsadder configure,會設定 resource-pack.hosting.no-host.enabled: true、停用三個 protect-file-from-unzip 設定、設定 compress-json-files: false、執行 /iareload 然後 /iazip,再重新載入 ResourcePackManager(約 15 秒後)
  • 執行 /rspm itemsadder dismiss,為你的玩家 UUID 永久關閉該警告

若 ItemsAdder 已被設定為透過其某種託管模式託管自己的資源包,輔助指令不會自動覆寫該設定,而是會提示你先自行停用 ItemsAdder 的託管。

我可以將自己的資源包加入合併嗎?

可以。將你的 .zip 檔放入:

plugins/ResourcePackManager/mixer

若你想控制檔案衝突時哪個資源包勝出,請將完整檔名(包含 .zip)加入 plugins/ResourcePackManager/config.yml 中的 priorityOrder

範例:

priorityOrder:
- ResourcePackManager
- EliteMobs
- MyCustomPack.zip

優先順序如何運作?

priorityOrder 越靠上優先級越高,越靠下優先級越低。

對於不可合併的檔案,較高優先級的資源包會取代較低優先級的檔案。對於可合併的 JSON 檔案,ResourcePackManager 會合併內容,而非直接覆蓋。

程式碼目前將下列檔案視為可合併:

  • sounds.json
  • langlanguages 下的語言檔
  • minecraft/models/item 下的原版物品模型 JSON(採用非遞迴合併:只有 overrides 陣列會跨資源包合併,檔案其餘部分則遵循「最高優先級勝出」)
  • atlas 檔
  • font 檔
  • items/ 下的 1.21.4+ 物品模型定義(格式感知合併:保持 predicate tree 完整,不會盲目遞迴進入不同類型的節點)

pack.mcmeta 採用特殊合併規則:最高的 pack_format 勝出、supported_formats 範圍會擴大以涵蓋所有資源包(支援整數、雙整數陣列以及 {min_inclusive, max_inclusive} 物件格式)、overlay 條目會被合併,且非標準的頂層鍵(例如 sodium)會保留下來。Overlay 條目會被標準化以相容 1.21.9+,缺少時會自動加上 min_format/max_format 欄位。

在所有資源包合併之後,ResourcePackManager 會將基礎 atlas 來源合併到 overlay atlas 檔中。這可避免 overlay 在 Minecraft 啟用 overlay 時(例如 ItemsAdder 的 ia_overlay_modern_atlas / ia_overlay_legacy_atlas)意外遮蔽基礎 atlas 條目。

其他 JSON 檔案則會被取代而非合併。

未列在 priorityOrder 中的資源包仍會被納入合併,但會獲得最低優先級。

ResourcePackManager 會在資源包變更時自動重新建置嗎?

會。它會監視受支援的資源包來源以偵測變更。

當受監視的資源包停止變更 3 秒後,ResourcePackManager 會將其標記為穩定。一旦所有受監視的資源包都穩定,重新混合就會立即發生。在這段過渡期間,線上的 OP 玩家會收到通知:「All resource packs are stable. Mixing and sending now.」

監視器會考慮外掛初始化嗎?

會。監視器了解 Magmacore 的外掛初始化狀態。

  • 它會等到所有受監控的外掛完成 Magmacore 初始化後,才開始進行穩定性檢查。
  • 若監視器執行中有外掛重新載入,監視器會偵測到狀態變化、暫停、重置所有穩定性追蹤,並等待該外掛完成重新初始化。
  • 這可避免在正常的外掛啟動或重新載入期間出現錯誤的「不穩定」偵測。

玩家如何收到最終的資源包?

當啟用 autoHost(預設)時,RSPM 會自動選擇交付路徑,並將該 URL 推送給每位加入的玩家。決策樹如下:

  1. selfHostForce: true,一律自我託管(跳過所有探測——主要用於測試)。
  2. 否則若 preferSelfHost: true(預設),先嘗試自我託管,並執行三項健全性檢查(非 LAN 已解析主機、本機 self-probe、透過 magmaguy.com 的外部可達性探測),若三項皆通過則確認使用自我託管。
  3. 若自我託管失敗或停用,則改為將資源包上傳到 magmaguy.com/rsp/ 並公告該 URL。

取得 URL 後,在 Minecraft 1.20.3+ 上,RSPM 會使用多重資源包 API,因此能與其他伺服器發送的資源包共存。在更舊的版本上,會回退至較舊的單一資源包方法,這會取代任何現有的伺服器資源包指派。

autoHost: false,RSPM 不會推送任何 URL——你需自行從 plugins/ResourcePackManager/output/ 取得 zip,並透過自己的管線提供。

完整的交付決策樹請參閱自我託管

我可以自我託管而不使用內建的自動託管嗎?

可以——自 RSPM v2 起,內建的 HTTP 伺服器就是建議的自我託管路徑。selfHostEnabled: truepreferSelfHost: true 兩者均預設啟用。

若你想透過自己現有的網頁伺服器託管 zip,而非使用任一內建路徑:

  • 設定 autoHost: false
  • 可選擇將 resourcePackRerouting 設為相對於 plugins 目錄的現有資料夾路徑。
  • plugins/ResourcePackManager/output/ResourcePackManager_RSP.zip 取得合併後的資源包並自行提供。

若有設定 resourcePackRerouting,RSPM 也會將該 zip 的副本寫入該轉送資料夾。該轉送路徑會以 plugins 目錄為基準解析,目標資料夾必須已存在。

有指令可以索取已儲存的託管資料嗎?

有。使用:

/rspm data_compliance_request

若 magmaguy.com 遠端自動託管有作用中的工作階段,ResourcePackManager 會將回應下載至:

plugins/ResourcePackManager/data_compliance

若沒有作用中的遠端工作階段(例如你正在自我託管),該指令會告知你沒有遠端資料可索取。

有哪些設定選項可用?

plugins/ResourcePackManager/config.yml 中提供下列設定:

一般

  • priorityOrder — 控制檔案衝突時哪個資源包勝出的列表(最高優先級在最前)
  • autoHost — ResourcePackManager 是否自動託管並發送合併後的資源包(布林值,預設 true
  • forceResourcePack — 是否強制玩家接受資源包(布林值,預設 false
  • resourcePackPrompt — 提供資源包時顯示的提示訊息(預設 "Use recommended resource pack?"
  • resourcePackRerouting — 可選的資料夾路徑(相對於 plugins),用於額外寫入合併 zip 的副本
  • nightbreak.autoDownloadPluginUpdates — RSPM 是否在啟動時自動下載自身的外掛更新(布林值,預設 false;下載更新後仍需重啟才能套用)。這是 nightbreak: 區段下的巢狀鍵,並非頂層鍵——在 config.yml 中搜尋裸的 autoDownloadPluginUpdates 行只會在縮排於 nightbreak: 之下找到它。這與 /rspm setup GUI 中所公開的是同一個切換。

自我託管

  • selfHostEnabled — 是否可使用內建 HTTP 伺服器(布林值,預設 true
  • selfHostPort — 自我託管 HTTP 伺服器的連接埠。-1(預設)會自動衍生為 mcPort + networkHttpOffset-v2。設為任意正整數則強制使用該明確連接埠。
  • networkHttpOffset-v2 — 當 selfHostPort = -1 時,加到 Minecraft 伺服器埠的後備偏移量。預設 1(例如 MC 25565 → HTTP 25566)。在網路上你不再需要讓它與代理保持一致:後端會自動向代理通報它實際綁定的確切 HTTP 連接埠,代理只在該通報抵達之前,將自己的 network-http-offset-v2 當作猜測使用。
  • selfHostExternalHost — 用戶端用來連到你的自我託管伺服器的公開主機名稱或 IP。留空(預設)= 透過 api.ipify.org / checkip.amazonaws.com 自動偵測。
  • selfHostForce — 跳過所有健全性檢查及遠端上傳,一律自我託管(布林值,預設 false——用於測試)。
  • preferSelfHost — 先嘗試自我託管並執行健全性檢查,再回退至遠端上傳(布林值,預設 true)。

Bedrock

  • bedrockConversionEnabled — 是否將合併後的 Java 資源包轉換為適用於 GeyserMC 的 Bedrock 資源包(預設 true
  • bedrockAutoDeployToGeyser — 是否將 Geyser 自訂對應檔複製到偵測到的 Geyser 資料夾(預設 true
  • bedrockGeyserFolder — 手動指定 Geyser 資料夾路徑;留空則自動偵測
  • bedrockConverterDebug — 來自 Bedrock 管線的逐物品 / 逐 bone 詳盡日誌行(預設 false

另一個檔案 plugins/ResourcePackManager/bedrock_display_offsets.yml 提供十二個可由使用者調整的選項,用於微調 Bedrock 玩家看到手持物品相對於手部的位置(第一人稱六個、第三人稱六個)。詳情請參閱 Bedrock 轉換

刻意沒有設置 network-key 設定選項。連結代理與其後端的金鑰會在每個 JVM 上自動從 plugins/floodgate/key.pem 衍生。Floodgate 本身就要求該檔案在整個網路中保持一致以用於 Bedrock 認證,因此衍生出的金鑰自動處處相符。

其他外掛可以透過程式碼註冊它們的資源包嗎?

可以。ResourcePackManager 公開 Java API 以進行程式化的資源包註冊。詳情請參閱 API 頁面

Bedrock 轉換是否僅適用於 FreeMinecraftModels?

不,已不再如此。目前的轉換器可處理任何在 assets/<namespace>/items/*.json 下提供 1.21.4+ 物品定義的外掛資源包。這涵蓋 FreeMinecraftModels 的 bone 模型、EliteMobs 裝備、Oraxen/Nexo 自訂物品、自訂盔甲組,以及你自己以該格式組裝的任何資源包。純 2D 自訂物品會輸出為扁平的 Bedrock 圖示;3D 自訂物品則會輸出 Bedrock 幾何/附掛物及軟體渲染的物品欄圖示。

每次 Bedrock 資源包變更都需要重啟伺服器嗎?

對於現有自訂物品的材質與模型調整,下一位加入的 Bedrock 玩家就會生效——RSPM 透過 Geyser API 為每個工作階段即時提供 Bedrock 資源包。只有當自訂物品集合本身改變(新增或移除物品)時才需要重啟,因為 Geyser 在啟動時才會註冊其自訂物品識別碼。

ResourcePackManager 在 BungeeCord / Velocity 上能運作嗎?

可以——這是一級支援的網路拓撲。各處使用的是同一個 ResourcePackManager.jar:將它放在每個後端,並在代理上放一份副本。這一個 jar 同時打包了 Bukkit、Velocity 以及 BungeeCord/Waterfall 的進入點,因此無論主機是後端或代理都能正確載入。不再有獨立的代理 jar,也不再有 proxy-extension/ 資料夾。

以代理外掛身份執行時,它會合併每個後端轉換後的 Bedrock 資源包,並透過代理的 Geyser 提供給 Bedrock 用戶端。Java 資源包的交付仍由各後端直接處理——Java 用戶端會看到各後端的資源包。

設定、疑難排解與驗證步驟,請參閱代理網路