FreeMinecraftModels 资源包输出
FreeMinecraftModels 目前将其生成的包写入 output,而不是 outputs。
默认输出路径
插件在启动时和执行 /fmm reload 时重建此文件夹:
plugins/FreeMinecraftModels/output/FreeMinecraftModels
然后将该文件夹压缩为:
plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip
该 zip 路径是 ResourcePackManager 与 FreeMinecraftModels 集成时所期望的路径。
生成的内容
生成的文件夹始终包含:
pack.mcmetapack.pngassets/minecraft/atlases/blocks.jsonassets/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 复制工作流。