材质定义文件(*-texture.txt 文件)提供了数据的三个关键设置:
- 需要什么材质文件,以及他们怎么被读取
- 每个自定义方块的每个面应用什么材质,伴随着的还有这些材质如何被使用(例如:根据生物群系的不同来进行染色,旋转,添加覆盖层,等等)
- 在Mod提供自定义生物群系时,附加属性需要决定怎样提供生物群系敏感的材质
定义材质文件
在历史之中,Minecraft使用了很多定义材质的方法,并且这些方法变化了好几次(特别是在1.5版本,1.6版本又变了一次)。要想处理这些不同之处的话,你需要指定一些定义标志。
为1.6.x和之后的服务器定义材质
至于 Minecraft v1.6.0,大多数嵌入的材质都包括在 assets/minecraft/textures/blocks 路径(在Minecraft客户端的Jar文件中,或者在资源包的ZIP文件中)下找到的单个文件。对于 v1.6.x 和晚些的Minecraft Forge Mod,材质资源需要在给予的Mod文件(ZIP或JAR)中找到,路径为 assets/\
要想指定加载材质所使用的相对路径,'texturepath:' 这一行应该被包括在材质文件之中。在设置之后,给予的路径可以用来读取任何指定的材质(或者,至少直到加载下一个 texturepath: 行——在这一点上,它的路径可以用来加载额外的材质)。举个例子,Minecraft V1.6.x ,或更晚版本的 BiomesOPlenty Mod 的材质应该为:
texturepath:assets/biomesoplenty/textures/blocks/
只要路径制定好了,材质文件需要渲染单独需要渲染的方块,使用 'texture:' 行。这些行的格式像下面那样:
texture:id=<texture-id>
其中
texture:id=<texture-id>,filename=<full-filename>
举个例子:
texture:id=test123.id,filename=assets/biomesoplenty/textures/blocks/tes123.png
对于一个材质文件包含多于一个材质的情况而言,材质的数目横向(X的数目)和纵向(Y的数目)可以被指定:
texture:id=<texture-id>,xcount=<xcount>,ycount=<ycount>
在这种情况之下,文件被读取然后分成指定的网格。分开的材质通过行序指数来排列:\
一些材质文件可以特别格式化: 材质定义的位置在文件之中,而不是网格(举个例子,箱子,玩家或怪物的材质文件)。遇到这些情况时,查看特殊材质文件种类来获得支持的类型的有关信息。遇到这些情况时,“format”属性可以用于定义文件的布局。
texture:id=<texture-id>,format=<file-format>
为 1.5.x 定义材质
为 Minecraft v1.5.x定义的材质的处理方式与1.6.x的处理方式有一点类似,但是有一些关键性的不同之处:
- 原版的材质的路径为客户端JAR或材质包的 textures/blocks 路径之中
- 对于Minecraft Forge Mod的材质通常可以在Mod的ZIP或JAR文件中的mods/\
/textures/blocks 路径找到
对于v1.5.x的Mod而言, 'texturemod:' 行可以用来指定材质路径的特殊名字('mods/
texturemod:<modname>
它就相当于使用这行字
texturepath:mods/<modname>/textures/blocks/
另外,材质的指数和格式和v1.6.x及以后的版本相同。注意:使用 'texturepath:' 行结果会使定义文件中的所有 'texturemod:' 行全部被忽略。
为v1.4.x或更早的版本定义材质
Minecraft v1.4.7 和更早版本中的材质几乎都在包括网格的16x16的材质文件之中(这相当于X数量为16,Y数量为16)。对于这些文件而言,你经常要使用 'texturefile:' 行。 'texturefile:' 行几乎可以说完全等于 'texture:' 行,只是默认的X数量为16,Y数量为16而已(针对 'texture:' 中的单个材质来说,等于X数值为1,Y数值为1)。
在 v1.5.x之前,Minecraft Forge Mod定义材质资源没有统一的方法,所以 'texturepath:' 命令,或者文件名的 'texturefile:' 或 'texture:' 属性行通常是必需的。
材质的参考系
只要所需的材质读取之后,不同的指令就可以用来指定Mod中不同方块不同面的材质。在所有的情况下,某个特殊材质的参考是通过结合材质文件中的指数(单个材质的材质文件通常是0)和'texture:' 或 'texturefile:'行中 'id' 属性的值实现的。总的来说,格式如下:
<index>:<texture-id>
在所有方块定义行中,又能够指定默认材质ID,可用于所有缺失 ":\
除了选择使用的材质之外,材质参考系也能够做出一系列修改功能,这会影响材质在渲染时的处理过程。这些修改功能通过为材质增加一系列特殊值来实现(都是1000的倍数),加入的位置为 \
1000 : 材质使用生物群系使用的草方块的颜色进行染色(assets/minecraft/textures/colormap/grass.png ,版本为v1.6.x 或更晚)
2000 : 材质使用生物群系使用的树叶方块的颜色进行染色(assets/minecraft/textures/colormap/foliage.png,版本为v1.6.x 或更晚)
3000 : 材质使用生物群系使用的水方块的颜色进行染色(通过 MCPatcher/Optifine - assets/minecraft/mcpatcher/colormap/water.png ,版本为v1.6.x 或更晚).
4000 : 材质顺时针旋转90度
5000 : 材质顺时针旋转180度
6000 : 材质顺时针旋转270度
7000 : 材质横向镜面翻转(左面变为右面)
8000 : 材质向下偏移50%高度
9000 : 材质向下偏移50%高度,且横向镜面翻转
10000 : 材质被转换用于倾斜火把(特殊情况)
11000 : 材质是草方块一边(对于生物群系染色和雪颜色两者兼容的特殊情况)
12000 : 材质在代表内表面,且接近其他相同类型的方块时透明(例如玻璃和水方块的内部)
13000 : 材质使用云杉树叶的颜色着色
14000 : 材质使用白桦树叶的颜色着色
15000 : 材质使用睡莲的颜色着色
17000 : 材质使用 colorMult 属性的值或 custColorMult 属性类定义的值着色(特别分出来一条)
18000 : 相当于270度旋转 (6000) 和草的色调 (1000)
19000 : 相当于270度旋转 (6000) 和树叶的色调 (2000)
20000 : 相当于270度旋转 (6000) 和水的色调 (3000)
21000 : 相当于多色调和 (17000) 和内部透明 (12000)
22000 : 相当于树叶色调 (2000) 和多色调 (17000)
方块 ID 数值
某个特殊方块的材质的定义需要定义给定的方块类型要使用哪个方块ID。内置的Minecraft基础方块当前拥有修复后的方块ID数值,但是Minecraft Forge Mod的所有方块ID是通过他们的配置文件来控制的。这些ID通过"cfgfile:"行来读取(请查看 材质和模型文件的基础特性 获得关于这一行的更多信息,以及配置文件中一些有用的内容的设置)在所有方块定义行之中,方块ID通过 'id=' 属性来指定。 'id=' 属性的值可以是数值(必须连续不间断),根据Mod的配置文件中定义的符号名称,或是展示名称的组合,加号 (+),和数值。在所有情况中,如果ID的值是0或附属的话,这个ID值就会被忽略(允许禁用方块,忽略更简单)。