添加自定义方块模型
如何为 Rebar 方块添加自定义模型
最后更新时间
我还建议在开始之前先阅读添加自定义物品模型
理解 Rebar 方块纹理
就像 rebar 物品一样,所有 rebar 方块都有一个自定义 id,格式为 <namespace:key>,可能看起来像 pylon:hydraulic_press,就像你在给 rebar 物品添加自定义纹理时一样,你可以在物品的自定义模型数据中读取这个 id。
现在,有两种方法可以为 rebar 方块提供自定义方块模型,使用哪种方法取决于你要为其提供模型/纹理的 rebar 方块:
-
空气物品展示 + 自定义模型数据 - Rebar 方块状态定义 a. 大多数 rebar 方块只是用一个原版方块来表示它们 b. 所有方块默认都有一个绑定到它们的[物品展示],它使用空气物品模型,使其渲染为不可见(某些方块可能会禁用此实体,对于这些方块你可能需要使用方法 2) c. [物品展示]还具有带有 rebar 方块 id 和方块状态属性(如果适用)的自定义模型数据 d. 要给它一个自定义模型,资源包只需基于该自定义模型数据添加一个模型覆盖,使没有资源包的人什么也看不到,而有资源包的人看到自定义模型 e. 物品展示被完美缩放以包裹原版方块并隐藏它,只显示自定义模型
-
方块特定的物品展示 + 自定义模型数据 - 待定 a. 一些 rebar 方块不使用原版方块,而是使用不可见方块和展示实体 b. 这些展示实体然后使用实际物品(不是空气),这些物品也可能有唯一的自定义模型数据,允许你以这种方式为其提供纹理
并非所有 rebar 附属组件都支持复杂的自定义纹理,rebar 添加了基本默认支持,如方法 #1,但如果附属组件采用方法 #2,它们可能不会给实体添加自定义模型数据,这意味着你根本无法给它一个自定义模型。如果你不确定能否或不能做到,请与附属组件开发者沟通!
子文件夹
你可以假设如果它说要将 <something>.json 放在 input/assets/<addon>/<some_folder> 下,你也可以将文件放在 <some_folder>/ 的子文件夹下。
方法 1 - Rebar 方块状态定义
目的何在
你可能想知道为什么要使用这个系统,为什么不自己做呢。主要有 3 个原因:
- 工作量 a. 如果你试图为 rebar 方块支持方块状态,比如一个拉杆,手动完成需要巨大的工作量。
- 可维护性 a. 即使你克服了创建所需的所有模型定义条件的初始障碍,当你需要进行任何更改时,又是另一场挣扎。
- 组织性 a. 因为自定义方块模型是使用空气物品模型完成的,所有使用该系统的 rebar 方块都将在单个 json 文件中定义 b. 你可以想象这个文件会非常快速地变得非常大
你可能仍然怀疑手动完成实际上需要多少工作量,所以让我们看一个真实示例。 在 [pylon] 中,有一个叫做"手动核心钻机拉杆"的方块,这只是一个用于多方块结构的拉杆方块。 如果你想支持给它一个自定义模型并支持它的方块状态。这是你必须添加到原版空气 [物品模型定义]中的条目:
正如你所见,它是巨大的。你可能还会注意到不同的旋转需要很多不同的模型, 你必须自己创建所有这些模型变体。
现在如果你将它与你会使用的 rebar 方块状态定义进行比较:
你可以看出区别,rebar 方块状态定义将生成所有许多嵌套的情况和可能性,并根据你在其中提供的旋转自动创建模型所需的任何变体。
使用 Rebar 方块状态定义
就像 rebar 物品定义一样,对于方块模型你需要一个 rebar 方块状态定义,这是一个 .json 文件,定义了如何设置方块模型。
所有 rebar 方块状态定义都位于 input/assets/<addon>/blocks 文件夹下。
-
在
input/assets/<addon>/blocks/<id>.json为你的 rebar 物品创建定义文件,例如 pylon 的青铜方块应该是input/assets/pylon/blocks/bronze_block.json。 -
将下面的 json 复制并粘贴到你新创建的文件中,所有定义的内容都会不同,但它们都从同一个地方开始。
"author" 是一个可选字段,你可以在此处归功于制作该物品模型/纹理的人。
如果你不确定原版物品模型的物品 id 是什么,关闭所有资源包
然后查看 rebar 物品。你看到的任何原版物品就是原版物品模型。
如果你看到钻石,id 就是 "minecraft:diamond",如果你不确定物品的 id 是什么,
使用高级工具提示并查看原版物品,不是 rebar 物品。
会有一行小的灰色文字格式像 "minecraft:<id>",那就是你的原版物品模型
如果由于某种原因你不能用物品的 id 来命名文件 那么你可以在定义 json 内部手动定义 id 使用
"id": "<whatever-the-id-is>"。如果它包含文件名不支持的字符, 或者由于某种原因存在 id 冲突,你可能需要这样做。
添加属性
接下来你需要添加方块使用的属性,例如拉杆有 facing、face、powered 属性。
只需将它们添加到定义 json 的 "properties" 数组中。
添加变体
最后一步是添加变体,变体是属性的组合及其应该显示的模型。
只需将它们添加到定义 json 的 "variants" 对象中,键是属性组合,值是模型信息。
模型信息可以包含:
model: 模型的路径(必需)x: X 轴旋转(可选)y: Y 轴旋转(可选)z: Z 轴旋转(可选)
就是这样!生成器会处理其余的工作。