FreeMinecraftModels 資源包輸出
FreeMinecraftModels 目前將其生成的資源包寫入 output,而非 outputs。
預設輸出路徑
外掛在啟動時與 /fmm reload 時會重建此資料夾:
plugins/FreeMinecraftModels/output/FreeMinecraftModels
然後將該資料夾壓縮為:
plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip
當 ResourcePackManager 與 FreeMinecraftModels 整合時,預期使用的就是這個 zip 路徑。
會生成什麼
生成的資料夾始終包含:
pack.mcmetapack.pngassets/minecraft/atlases/blocks.jsonassets/freeminecraftmodels/...模型與紋理輸出
對於 Minecraft 1.21.4+,FreeMinecraftModels 會在下列路徑下生成 item-model 定義檔:
assets/freeminecraftmodels/items
對於較舊的伺服器,它會回退到舊版的皮革馬鎧覆寫模型路徑。
Display Model 輸出(1.21.4+)
當模型有同伴 .json display model 檔案(請參閱 模型製作說明),FMM 會將該 JSON(紋理參考會重寫以匹配已擷取的紋理)複製到:
assets/freeminecraftmodels/models/display/{modelId}.json
它也會在下列路徑生成對應的物品定義:
assets/freeminecraftmodels/items/display/{modelId}.json
DisplayModelRegistry 在執行階段追蹤哪些模型有 display JSON,使 ItemMeta.setItemModel() 可以對 ItemStack 呼叫,賦予它們正確的手中與物品欄外觀。
弓與弩條件性物品輸出
當 FMM 偵測到一組弓或弩狀態模型(請參閱 模型製作說明),它會為 _idle 模型生成單一物品定義 JSON,該 JSON 會在資源包層級條件性地切換各個狀態。不需要伺服器端的封包工作 -- 客戶端會原生處理狀態轉換。
弓的輸出
對於弓,生成的物品定義在 using_item 上使用 minecraft:condition,並在 use_duration 上使用 minecraft:range_dispatch(scale 0.05):
| 條件 | 使用的模型 |
|---|---|
| 不在使用該物品 | _idle |
| 使用中、回退(剛開始) | _draw_start |
使用中、閾值 0.65 | _draw_half |
使用中、閾值 0.9 | _draw_full |
弩的輸出
對於弩,生成的物品定義在 charge_type 上使用 minecraft:select。當已充能(箭矢或火箭)時,它會顯示 _charged 模型。未充能的回退使用 crossbow/pull 上的 minecraft:range_dispatch:
| 條件 | 使用的模型 |
|---|---|
| 不在使用、未充能 | _idle |
| 使用中、回退(剛開始) | _draw_start |
使用中、閾值 0.58 | _draw_half |
使用中、閾值 1.0 | _draw_full |
| 已充能(箭矢或火箭) | _charged |
輸出位置
生成的條件性物品定義會寫在其他物品定義旁,位於:
assets/freeminecraftmodels/items/display/{baseModelId}_idle.json
只有 _idle 模型會獲得物品定義檔。Draw 與 charged 模型會作為條件項目在內部被引用。
Minecraft 26.1+ 相容性修正
資源包生成器會自動套用兩個 Minecraft 26.1 及以上版本的相容性修正:
- UV 鉗制: 生成的物品模型會將 UV 座標鉗制在
0–16範圍內,以避免 26.1 更嚴格的驗證器引入的紋理滲透瑕疵。 - 空骨骼方塊模型: 沒有 cube(或只包含
anchor_子物件)的骨骼過去在 26.1+ 上會發出格式錯誤的 block model JSON。生成器現在會發出有效的佔位內容,使資源包仍能載入。
這些修正會自動套用;無需設定。
重新載入行為
當 FreeMinecraftModels 重新載入時,它會:
- 重新執行內容匯入步驟
- 重建
output/FreeMinecraftModels資料夾 - 重新生成
output/FreeMinecraftModels.zip - 如果安裝了 ResourcePackManager,則派發
resourcepackmanager reload
這就是為什麼現代 FMM + ResourcePackManager 配置不再需要舊的手動 zip 複製工作流程。