跳至主要內容

Resource Pack Manager 常見問題

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

ResourcePackManager 目前提供哪些指令?

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

  • /rspm setup — 開啟一個遊戲內的 GUI 設定選單(外掛更新狀態、推薦外掛、自動更新切換、前往 wiki / Discord / Nightbreak 帳號的連結)
  • /rspm recommendedplugins — 顯示共用的 Nightbreak 推薦外掛選單(在主控台則顯示文字清單)
  • /rspm downloadpluginupdate — 下載可用的 ResourcePackManager 更新,供下次重啟時套用
  • /rspm downloadall — 下載此外掛所公開的所有可用更新(目前即 ResourcePackManager 的更新)
  • /rspm reload — 重新建置並重新託管合併後的資源包
  • /rspm status — 完整的診斷資訊輸出(資源包狀態、託管模式、網路金鑰指紋、整合)
  • /rspm verbose [on|off] — 開啟或關閉詳細診斷日誌。不帶參數時為切換。結果會寫回 config.yml 中的 verboseLogging,因此重啟後仍有效。也可寫成 /rspm verboselogging
  • /rspm itemsadder configure — 為 RSPM 託管設定 ItemsAdder
  • /rspm itemsadder dismiss — 為你的玩家 UUID 永久關閉 ItemsAdder 警告
  • /rspm data_compliance_request — 下載此伺服器所有遠端儲存的資料

主指令是 /resourcepackmanager/rspm 是其別名。上方的更新與推薦外掛指令是由 RSPM 註冊的共用 MagmaCore/Nightbreak 指令。

後端權限:

  • /rspm setup/rspm recommendedplugins 需要 resourcepackmanager.setup/rspm setup 僅限玩家使用,因為它會開啟一個物品欄 GUI。
  • /rspm downloadpluginupdate/rspm downloadall/rspm reload/rspm status/rspm verbose/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 玩家已加入但看不到資源包」的情況。代理重啟時會重置為關閉。不帶參數執行則會印出目前狀態。

在 Velocity 上,代理指令接受 resourcepackmanager.command.statusresourcepackmanager.*。BungeeCord 註冊的是確切的 resourcepackmanager.command.status 節點;權限外掛仍可透過萬用字元展開來滿足它。主控台可以執行這些指令。輸出可放心分享——網路金鑰只會以簡短的單向雜湊指紋出現,永遠不會是金鑰本身,且不會印出任何 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 將本機路徑視為包含多個資源包子資料夾的目錄,這些子資料夾應全部合併在一起。

我要如何排除某一個自動外掛整合?

plugins/ResourcePackManager/compatible_plugins/ 下該整合的檔案中設定 isEnabled: false,然後執行 /rspm reload(或重啟)。RSPM 會移除它為該整合產生或註冊的資源包輸入,包括它產生的 mixer 副本。把外掛從 priorityOrder 中移除並不會排除它;那只會把該資源包移到最低優先級。若要排除你手動加入的 ZIP,請把該 ZIP 從 mixer 資料夾中刪除或移走。

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

未壓縮的資源包資料夾(一個 assets/ 樹加上 pack.mcmeta)放在:

plugins/ResourcePackManager/resource_pack

RSPM 會自行壓縮該資料夾,並以 priorityOrder 中的 ResourcePackManager 條目納入合併,而該條目位於預設清單的最上方——因此預設情況下,它的檔案在衝突時會勝過每一個外掛資源包。若你希望它讓步,請把 ResourcePackManager 往清單下方移。

相關的 plugins/ResourcePackManager/blueprint 資料夾則存放 RSPM 貢獻給每次合併的 pack.pngpack.mcmeta。編輯這兩個檔案即可變更合併後資源包的圖示或其選單內描述;此資料夾會在每次啟動時重新壓縮成 blueprint.zip

範例:

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 中的資源包仍會被納入合併,但會獲得最低優先級。

位元組完全相同的完整 ZIP 輸入會在合併前被去重,保留第一份(優先級最高)的副本。合併之後,RSPM 也會修復兩種常見的 Java 模型缺陷:在可行時,從模型的第一個實際材質補上缺少的 particle 材質;並將無效的模型 UV 座標夾限到 Minecraft 的 0..16 範圍內。

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

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

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

若某次重新混合的輸入與上一次逐位元組完全相同,就不會重新合併。RSPM 會對排序後的來源資源包清單(名稱、大小、內容雜湊)建立指紋,並存放在輸出旁邊、名為 .rspm_mix_fingerprint 的檔案中;當指紋相符且所有預期的輸出檔案仍然存在時,它會直接重新發佈既有的 zip,而不重新建置。任何有疑慮的情況——輸出檔缺失、指紋無法讀取、已啟用 Bedrock 轉換但磁碟上沒有 Bedrock 資源包——都會落入完整混合。這也是為什麼一次什麼都沒改變的 /rspm reload 幾乎可以瞬間完成,並沿用既有的託管註冊。

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

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

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

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

當啟用 autoHost(預設)時,或當 selfHostForce 明確覆寫它時,RSPM 會選擇一條交付路徑,並將該 URL 推送給每位加入的 Java 玩家。決策樹如下:

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

取得 URL 後,RSPM 會使用多重資源包 API,因此能與其他伺服器發送的資源包共存。目前的 Bukkit 外掛描述檔要求 Minecraft 1.21.4 或更新版本。

加入時的資源包提示會延後約一秒。FAILED_DOWNLOADDISCARDED 的回應會自動重試,同一玩家工作階段最多三次;被玩家拒絕的資源包或無效 URL 則不會重試。Floodgate 玩家在此會被略過,因為他們的 Bedrock 資源包是透過 Geyser 交付的。

autoHost: falseselfHostForce: 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/data.zip

RSPM 也會在同一個 data_compliance 資料夾中寫入 ReadMe.md

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

有哪些設定選項可用?

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

一般

  • priorityOrder — 控制檔案衝突時哪個資源包勝出的列表(最高優先級在最前)
  • autoHost — ResourcePackManager 是否自動託管並發送合併後的資源包(布林值,預設 true
  • forceResourcePack — 是否強制玩家接受資源包(布林值,預設 false
  • resourcePackPrompt — 提供資源包時顯示的提示訊息(預設 "Use recommended resource pack?"
  • resourcePackRerouting — 可選的資料夾路徑(相對於 plugins),用於額外寫入合併 zip 的副本
  • verboseLogging — 印出資源包準備與託管交握的每一個步驟(布林值,預設 false)。預設關閉,因此主控台只顯示最終結果;診斷合併或託管問題時再開啟。/rspm verbose on|off 會在執行期切換同一個鍵並儲存下來。這與涵蓋 Bedrock 管線的 bedrockConverterDebug 是分開的。
  • 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
  • geyserExtensionAutoInstall — 是否把通用的 ResourcePackManager.jar 安裝並更新為 Geyser 擴充功能,好讓自訂 Bedrock 實體得以渲染(預設 true)。設為 false 會停止未來的安裝與更新預備;它不會刪除已經存在的擴充功能 jar——請在 Geyser 停止時手動移除。代理外掛有同樣的開關,但名稱不同,為 geyser-extension-auto-install

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

無論在後端或代理上,都刻意沒有 network-key 設定選項。手動貼上金鑰曾是設定錯誤的最大來源——一個錯字就會悄無聲息地破壞代理↔後端的連結,而且任何地方都不會出現錯誤訊息。

取而代之的是,網路金鑰由代理持有並發放:

  • 代理只解析一次它的金鑰:若有已儲存的 network-key 檔案就讀取它;否則在 plugins/floodgate/key.pem 存在時從該檔案衍生種子(好讓既有網路在升級後保有其身份識別);再否則產生一把全新金鑰。不論走哪一條路,它都會把結果存到代理外掛自己資料夾中的 network-key,之後再也不會去看 key.pem
  • 每個後端會在第一次有玩家連線到它時,透過 rspm:network 外掛頻道收到該金鑰,然後保存在自己的 data.yml 中。已持有金鑰的後端會忽略之後的授予——把後端重新指向另一個網路是操作員的動作,不是一則訊息能做到的事。
  • 需要 Floodgate。Bedrock 玩家要連上代理才需要它,但純 Java 的網路不裝它也能使用 RSPM 的代理功能。
  • 獨立(未經代理)的伺服器會自行產生並保留自己的金鑰,因為它本身就是一個只有一台伺服器的網路。

在任一端執行 /rspm status 都只會印出金鑰的簡短單向雜湊指紋,永遠不是金鑰本身。代理與後端的指紋相符,即代表連結正常。

為什麼主控台這麼安靜?它到底有沒有在動?

這是刻意設計的。準備資源包是一條很長的管線——暫存每個貢獻外掛的資源包、合併叢集、等待它們停止變動、混合、為 Bedrock 轉換、把結果交給託管方。把這一切全部敘述出來,每次啟動大約會產生六十行主控台輸出,並把大家唯一會讀的兩件事埋沒掉:玩家到底會不會拿到資源包,以及如果拿不到該怎麼辦。

所以一次正常的開機只會印出一行:

[ResourcePackManager] Resource pack is live via self-hosting — http://play.example.com:25566/rspm.zip

看到那一行就代表成功了。

RSPM 也刻意不會為它自己就能修好的狀況發出警告。若某次自我託管探測失敗、RSPM 回退到遠端託管,那是成功——主控台回報的是結果,不是繞路的過程。把已經處理好的事情記為警告,讀起來像是故障,只會讓人去追一個不存在的問題。

若要看到完整敘述,請執行 /rspm verbose on(或在 config.yml 中設定 verboseLogging: true),然後執行 /rspm reload。若是針對 Bedrock 轉換器,請改用 bedrockConverterDebug: true

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

可以。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 需要建置或解壓——而且若你忘了在代理上放副本,位於代理之後的後端會替你在 plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar 預備一份,並在主控台說明。

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

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