• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
        • WaveFront OBJ模型
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

自定义模型加载器

“模型”只是一种形状。它可以是一个简单的立方体,可以是几个立方体,也可以是截角二十面体,或者介于两者之间的任何东西。你将看到的大多数模型都是普通的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"
  }
}
Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme