它实际是什么
每个 Java 资源包都包含一个名为 pack.mcmeta 在它的根目录。它很小,其中一个数字很重要:
{
"pack": {
"pack_format": 97,
"description": "My texture pack"
}
}这个数字是 材质包布局,而不是游戏本身的。每当 Mojang 移动、重命名或重构资产时,它就会递增。它告诉游戏该期望什么样的文件排列,这就是为什么不匹配会导致材质缺失而不是直接失败——游戏会在该格式暗示的地方寻找,并发现其中一些是空的。
每个版本的数字
这些是 CreateTextures 导出的格式,取自编辑器使用的同一个注册表。
| Minecraft 版本 | pack_format |
|---|---|
| 26.3 | 97 |
| 26.2 | 88 |
| 26.1–26.1.2 | 84 |
| 1.21.11 | 75 |
| 1.21.9–1.21.10 | 69 |
| 1.21.7–1.21.8 | 64 |
| 1.21.6 | 63 |
| 1.21.5 | 55 |
| 1.21.4 | 46 |
| 1.21.2–1.21.3 | 42 |
| 1.21.1 | 34 |
| 1.8.9 | 1 |
1.21.9 中的更改
从格式 69 及之后,材质包还带有受支持的 范围 而不是单个点,使用 min_format 和 max_format。一个现代的 pack.mcmeta 看起来像这样:
{
"pack": {
"pack_format": 97,
"min_format": [97, 0],
"max_format": [97, 1],
"description": "My texture pack"
}
}普通的 pack_format 键会保留在它们旁边,以便旧版启动器和第三方工具仍能读取它们能理解的内容。扩大范围是一个材质包如何同时声明支持多个版本的方式——尽管声明支持并不等于实际拥有所有版本的正确文件。
每对中的第二个数字是小版本号,用于不会破坏旧材质包的更改。26.3 使用了一个:它的格式是 97.1,因此 26.3 材质包的范围一直延伸到 [97, 1],而 pack_format 保持整数 97 不变。
弄错了也可以挽救
基岩版根本不使用这个
基岩版上没有 pack_format。基岩版材质包带有 manifest.json 转而使用 UUID、版本数组和最低引擎版本。这两个系统没有任何共同之处,这也是材质包无法在不同版本之间转移的部分原因——请参阅 Java 与基岩版资源包对比.
简而言之
在以下位置选择你的 Minecraft 版本 编辑器 在导出前,系统会为你写入正确的数字,当版本需要时还会写入 min/max 对。上面的表格供你手动编辑 pack.mcmeta 时参考。
