不同的文件夹布局
Java 将所有内容命名空间化在 assets/minecraft/,这是一种为了让模组和数据包能在原版旁边添加自己的命名空间而存在的结构。基岩版没有这个概念,而是将材质放在根目录附近。
Java Bedrock
pack.mcmeta manifest.json
pack.png pack_icon.png
assets/ textures/
└── minecraft/ ├── blocks/
└── textures/ └── items/
├── block/
└── item/还要注意单复数的区别:Java 使用 block/ 和 item/,基岩版使用 blocks/ 和 items/。在不重命名文件夹的情况下直接复制文件,会让每个材质都放到两个游戏都找不到的地方。
不同的元数据文件
Java 通过以下方式识别材质包: pack.mcmeta 和一个单一的 pack_format 数字。基岩版使用 manifest.json,它需要真正的 UUID 和版本数组:
{
"format_version": 2,
"header": {
"name": "My pack",
"description": "",
"uuid": "<unique uuid>",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "resources",
"uuid": "<a different unique uuid>",
"version": [1, 0, 0]
}
]
}这两个 UUID 必须彼此不同,且不能与已安装的任何其他材质包冲突。把别人的材质包拿来当起点却忘了重新生成它们,是导致材质包导入后却永不显示在列表中的著名原因——基岩版会把它当作被复制材质包的副本。
不同的文件名
即使两个版本拥有相同的方块,其材质也不一定叫相同的名字。随着多年来各自添加了对方没有的内容,两者的差距越来越大。翻译名称没有通用规则;这是一个查表过程,而不是转换过程。
不同的分发方式
Java 材质包是普通的 .zip 丢进文件夹的文件。基岩版材质包是 .mcpack — 也是 zip 文件,但带有游戏注册的扩展名,因此打开它就会交由 Minecraft 导入。这就是为什么基岩版的安装是“打开文件”,而 Java 版的安装是“移动文件”,相关内容请参阅 安装指南.
基岩版能做到而 Java 版做不到的事
支持双版本
不存在真正的一键转换。现实的做法是将美术素材视为共享部分,而将打包方式视为各版本专属:设计一次材质,然后分别制作每个版本的布局、元数据和文件名。
这就是 编辑器 会处理好一切——你选择一个版本并导出,同一份作品可以为另一个版本再次导出。Java 版导出来是一个带有正确 pack_format,基岩版导出来是一个带有新生成的清单文件的 .mcpack,因此永远不会出现 UUID 冲突的问题。
