跳至主要内容

FreeMinecraftModels 資源包輸出

FreeMinecraftModels 目前將其生成的資源包寫入 output,而非 outputs

預設輸出路徑

外掛在啟動時與 /fmm reload 時會重建此資料夾:

plugins/FreeMinecraftModels/output/FreeMinecraftModels

然後將該資料夾壓縮為:

plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip

當 ResourcePackManager 與 FreeMinecraftModels 整合時,預期使用的就是這個 zip 路徑。

會生成什麼

生成的資料夾始終包含:

  • pack.mcmeta
  • pack.png
  • assets/minecraft/atlases/blocks.json
  • assets/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 座標鉗制在 016 範圍內,以避免 26.1 更嚴格的驗證器引入的紋理滲透瑕疵。
  • 空骨骼方塊模型: 沒有 cube(或只包含 anchor_ 子物件)的骨骼過去在 26.1+ 上會發出格式錯誤的 block model JSON。生成器現在會發出有效的佔位內容,使資源包仍能載入。

這些修正會自動套用;無需設定。

重新載入行為

當 FreeMinecraftModels 重新載入時,它會:

  • 重新執行內容匯入步驟
  • 重建 output/FreeMinecraftModels 資料夾
  • 重新生成 output/FreeMinecraftModels.zip
  • 如果安裝了 ResourcePackManager,則派發 resourcepackmanager reload

這就是為什麼現代 FMM + ResourcePackManager 配置不再需要舊的手動 zip 複製工作流程。