Skip to main content
Version: 1.20.x

自定义模型加载器

“模型”只是一种形状。它可以是一个简单的立方体,可以是几个立方体,也可以是截角二十面体,或者介于两者之间的任何东西。你将看到的大多数模型都是普通的JSON格式。其他格式的模型在运行时由IGeometryLoader加载到IUnbakedGeometry中。Forge为WaveFront OBJ文件、bucket、复合模型、不同渲染层中的模型提供了默认实现,并重新实现了原版的builtin/generated物品模型。大多数事情都不关心加载了什么模型或模型的格式,因为它们最终都由代码中的BakedModel表示。

!!! 警告 通过模型JSON中的顶级loader条目指定自定义模型加载程序将导致elements条目被忽略,除非它被自定义加载程序使用。所有其他普通条目仍将被加载并在未烘焙的BlockModel表示中可用,并且可能在自定义加载程序之外被使用。

WaveFront OBJ模型

Forge为.obj文件格式添加了一个加载程序。要使用这些模型,JSON必须引用forge:obj加载程序。此加载程序接受位于已注册命名空间中且路径以.obj结尾的任何模型位置。.mtl文件应放置在与要自动使用的.obj具有相同名称的相同位置。.mtl文件可能需要手动编辑才能更改指向JSON中定义的纹理的路径。此外,纹理的V轴可以根据创建模型的外部程序翻转(即,V=0可能是底部边缘,而不是顶部边缘)。这可以在建模程序本身中纠正,也可以在模型JSON中这样做:

{
// 在与'model'声明相同的级别上添加以下行
"loader": "forge:obj",
"flip_v": true,
"model": "examplemod:models/block/model.obj",
"textures": {
// 可在.mtl中用#texture0引用
"texture0": "minecraft:block/dirt",
"particle": "minecraft:block/dirt"
}
}