pack.mcmeta:pack_format 数字与“不兼容”警告
一个错误的整数会让 Minecraft 禁用你的材质包。这里是格式与版本号的对应关系,避免此问题的 supported_formats 范围,以及文件必须放置的位置。
几乎所有“我的材质包显示不兼容”的问题都源于一个小文件中的一个数字。
文件
{
"pack": {
"pack_format": 46,
"description": "My pack"
}
}
它必须被精确命名为 pack.mcmeta,并位于 zip 文件的根目录——与 assets/ 或 data/ 同级,而不是在 zip 文件内的某个文件夹中。压缩包含文件夹而不是其内容是第二常见的失败原因,其表现与错误的格式数字完全相同。
资源包和数据包使用不同的数字
这是让人们困惑的地方:这两个计数器多年前就已分道扬镳,不能互换。即使数字“当前有效”,使用资源包数字的数据包也会被禁用。
与其记住一个每发布一个新版本就过时的表格,不如从你目标版本的原版包中读取数字——或者让生成器为你填写。
supported_formats 才是真正的解决方案
固定一个整数意味着材质包会在下一个版本中失效。而一个范围则不会:
{
"pack": {
"pack_format": 46,
"supported_formats": { "min_inclusive": 42, "max_inclusive": 99 },
"description": "My pack"
}
}
pack_format 仍是主要声明;supported_formats 拓宽了游戏在不发出警告的情况下接受的范围。对于只添加纹理或配方的材质包——这占据了大多数——一个宽泛的范围是诚实的,因为其中的内容在版本之间实际上并没有损坏。
description 接受文本组件
"description": [
{ "text": "My pack ", "color": "gold" },
{ "text": "v2", "color": "gray", "italic": true }
]
节号代码 (§6) 仍然有效,但 JSON 形式在通过会剥离控制字符的工具进行复制粘贴时能更好地保留。
叠加层,用于同时支持多个版本
"overlays": { "entries": [
{ "formats": { "min_inclusive": 42, "max_inclusive": 45 }, "directory": "older" }
] }
包根目录下的 older/ 文件夹仅用于那些格式。这样,一个下载就能支持两个具有不同模型格式的版本,而不是发布两个 zip 文件。
快速诊断
| 症状 | 原因 |
|---|---|
| 灰色显示,“为旧/新版本制作” | 错误的 pack_format |
| 材质包根本未列出 | pack.mcmeta 不在 zip 根目录,或 JSON 无效 |
| 加载成功,纹理缺失 | 包格式正确;纹理路径错误 |
| 在单人模式下有效,但在服务器上无效 | 数据包在错误的存档文件夹中 |
末尾的逗号是无效的 JSON,会导致“根本未列出”的情况,而不是错误消息。
使用 pack.mcmeta 生成器 为你的包类型和目标版本生成一个有效的文件——其中 supported_formats 已填写。