跳到主要内容

FreeMinecraftModels 资源包输出

FreeMinecraftModels 目前将其生成的包写入 output,而不是 outputs

默认输出路径

插件在启动时和执行 /fmm reload 时重建此文件夹:

plugins/FreeMinecraftModels/output/FreeMinecraftModels

然后将该文件夹压缩为:

plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip

该 zip 路径是 ResourcePackManager 与 FreeMinecraftModels 集成时所期望的路径。

生成的内容

生成的文件夹始终包含:

  • pack.mcmeta
  • pack.png
  • assets/minecraft/atlases/blocks.json
  • assets/freeminecraftmodels/... 模型和纹理输出

对于 Minecraft 1.21.4+,FreeMinecraftModels 在以下位置生成物品模型定义文件:

assets/freeminecraftmodels/items

对于较旧的服务器,它会回退到旧版 leather-horse-armor 覆盖模型路径。

展示模型输出(1.21.4+)

当模型有配套的 .json 展示模型文件时(参见模型创作注意事项),FMM 会将该 JSON(纹理引用已重写以匹配提取的纹理)复制到:

assets/freeminecraftmodels/models/display/{modelId}.json

同时在以下位置生成相应的物品定义:

assets/freeminecraftmodels/items/display/{modelId}.json

DisplayModelRegistry 在运行时跟踪哪些模型有展示 JSON,以便可以在 ItemStack 上调用 ItemMeta.setItemModel() 来赋予其正确的手持和物品栏外观。

弓和弩条件物品输出

当 FMM 检测到一组弓或弩状态模型时(参见模型创作注意事项),它会为 _idle 模型生成单个物品定义 JSON,在资源包级别条件性地切换所有状态。无需服务端数据包操作 -- 客户端原生处理状态转换。

弓输出

对于弓,生成的物品定义在 using_item 上使用 minecraft:condition,并在 use_duration 上使用 minecraft:range_dispatch(缩放 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 模型获得物品定义文件。拉弓和装填模型在其中作为条件条目引用。

重载行为

当 FreeMinecraftModels 重载时:

  • 重新运行内容导入步骤
  • 重建 output/FreeMinecraftModels 文件夹
  • 重新生成 output/FreeMinecraftModels.zip
  • 如果已安装 ResourcePackManager,则分发 resourcepackmanager reload

这就是为什么现代的 FMM + ResourcePackManager 配置不再需要旧的手动 zip 复制工作流。