本帖最后由 hukk 于 2015-1-21 10:45 编辑



我才不会说上面的目录可以点呢
lz的废话:


本帖不欢迎的人:
      不明觉利党
      无意义沙发党
      求做材质党
      心态浮躁党
以上
回帖仅限技术交流和问题反馈.


前言:



加红的代表目前仅mcpatcher独占

目录:
├─属性文件路径规则&一些技术词汇讲解
├─自定义动画|Custom Animations
│   └─转盘动画|Dial_Animations
├─高清字体|HD Font
├─随机生物皮肤|Random Mobs   optifine不支持属性文件
│   └─自定义鱼线拴绳|Leash_Fishing_Line
├─自定义颜色|Custom Colors
│   ├─自定义生物群落调色板|Custom Biome Palettes   未作兼容性测试,optifine可能出现部分不兼容情况
│   ├─自定义光照|Custom Lighting
│   ├─自定义文字颜色|Custom Text Colors
│   ├─自定义物品生物颜色|Custom Item and Mob Colors
│   ├─杂项方块颜色|Other Block Colors
│   └─颗粒效果颜色|Particle Colors
├─连接纹理|Connected Textures
│   └─更好的玻璃|Better Glass
├─更好的天空|Better Skies
└─自定义物品材质|Custom Item Textures



changlog:


原文可以前往这里查看
各页面供参考的样本可以在这里下载:
http://pan.baidu.com/s/1eQd1UBC 密码:bhqg

┏┓┳┳┏┓┏┓┓
┃┃╋╋┃┃┃┃┫
┃┗┳┳┫┗┫┗┓
┃┃┃┃┃╋┃╋┃
┃┃┃┃┃━┫━┫
┣┻╋━╋━┻━┫
┃┓┃┏┃┏━┓┃
┃┃┃┃┃┃╋┣┫
┃┃┃┃┃┗━┛┃
┗┻━┻┻━━━┛


——历时一个月,业界的良心好翻译

——最后更新于2015-01-21

页1



属性文件路径规则&一些技术词汇讲解
正常路径 – 相对于assets/minecraft:
  textures/path/to/file.png ->assets/minecraft/textures/path/to/file.png
===========================================================
相对于MCPatcher的基础目录:
~/path/file.png ->assets/minecraft/mcpatcher/path/file.png
===========================================================
相对于属性文件的路径:
./path/file.png ->assets/minecraft/(属性文件所在的目录)/path/file.png
===========================================================
其他命名空间的路径:
命名空间:path/file.png ->assets/命名空间/path/file.png

什么是 "命名空间"?  它们基本上是一种方法, Mojang用于在未来将mods的文件和原版的minecraft的文件彼此区分开来.
目前你不必担心他们.一切都在默认的叫做“Minecraft”的命名空间内,但未来可能会改变.
完整原文地址

技术性词汇摘要:


页2



自定义动画
从Minecraft1.5开始,Mojang添加了对任一方块/物品的动画支持(最早是由MCPatcher提供的功能).
然而,它目前仍没有办法为其他纹理例如生物皮肤或图形用户界面创建动画.
MCPatcher填补了这个缺口,使任何矩形区域的非方块/物品的纹理进行动画处理.
这甚至可以包含特殊的纹理用于其他MCPatcher功能,例如随机生物皮肤或天空盒子.
对于方块和物品的纹理,其中还包括CTM和CIT的置换,则继续使用Mojang的mcmeta方法.

mcmeta方法使用参考(http://minecraft.gamepedia.com/Resource_pack)

想要创建一个动画,首先应选择一张材质,并确定其x轴y轴坐标,以及你想要进行动画处理的区域的宽度和高度.
创建一条垂直帧用于动画. 它的宽度应当与你要进行动画处理的区域的宽度相同.
而它的高度应为你要进行动画处理的区域的高度的倍数.


属性文件格式&一些技术词汇讲解:
创建一个.properties文件,文件名任意.
将其放到你资源包的assets/minecraft/mcpatcher/anim文件夹或其子目录中.
在文件中添加如下属性(注意斜杠方向!!!)
  1. from=<自定义动画的路径>
  2. to=<目标材质的路径>
  3. x=<矩形区域的x轴坐标>
  4. y=<矩形区域的y轴坐标>
  5. w=<矩形区域的宽度>
  6. h=<矩形区域的高度>
复制代码
参考前面的属性文件路径命名规则来填入路径.

这将创建一个简单的动画,从上到下按顺序播放各帧,每tick(1/20秒)播放一帧,无限循环.
在此获取关于tick的信息(http://minecraft-zh.gamepedia.com/刻)
同一个目标材质中的多个,非重叠的部分也可以自定义动画通过创建不同的.properties文件并使用不同的x,y,w,h值.
他们甚至可以有独立的速度和帧顺序信息.
为了获得最大的兼容性,确保x,y,w,h为16的倍数.(另外如果矩形区域与帧的尺寸不符,mcpatcher将会对帧进行缩放)


帧的顺序和速度:
每个自定义动画还可以指定其动画速度和帧顺序.
需要在属性文件中添加一系列的条目
  1. tile.X=Y
  2. duration.X=Z
复制代码
X从0开始,将按顺序显示你分配的帧.
Y是特定帧在.png动画文件中的tile number,最上方的第一个title是0,向下第二个title是1,以此类推.
Z是你想显示的帧的持续时间,在游戏刻(1/20s)中 .如果省略,持续时间将默认为1刻.

例如,假设你的自定义动画纹理为16x48(3帧).
创建一个在循环周期中暂停5刻的动画,则属性文件看起来可能是这样:
  1. tile.0=0
  2. tile.1=1
  3. tile.2=2
  4. duration.2=5
  5. tile.3=1
  6. tile.4=0
复制代码
动画将以如下顺序显示:
帧0: 显示动画tile0持续1刻 (没有duration属性).
帧1: 显示动画tile1持续1刻 (没有duration属性).
帧2: 显示动画tile2持续5刻 (duration=5).
帧3: 显示动画tile1持续1刻 (没有duration属性).
帧4: 显示动画tile0持续1刻 (没有duration属性).
返回到帧0.
总计: 5帧耗时9刻.
如果属性"duration"不带后缀".X",它将作为默认持续时间应用于所有那些不带duration.X属性的帧.
例如添加duration=2到上面的例子将会减慢帧0,1,3,4的持续时间到2刻,但不会改变帧2.因为它有自己单独的持续时间.


页3



转盘动画
原版mc(Vanilla Minecraft)允许你通过绘制垂直帧为罗盘和时钟创建自定义动画,每一帧即包含罗盘指针和时钟指针任何一个指向的可能方向.
虽然这样有非常好的灵活性,但它对于创建高分辨率的平滑图像将是低效的.

而MCPatcher提供了另一种适合用于创建平滑的转盘动画的方法.
使用这种方法并不会阻止你的材质中同时包含有原版mc的罗盘或时钟动画.
但你的确有必要使用outputFrames属性来创建原版mc的罗盘或时钟动画,提供给非mcpatcher用户.
每张转盘动画都将被指定为一层.
一些图层可以设置为静态,其他层则可以基于你的出生点(罗盘)或一天中的时间(时钟)来转动.
您可以自定义图层间的混合方法.

compass.properties详解


页4



高清字体(mcpatcher不建议使用高清字体,卡成翔.在安装时取消选项里的启用高清字体)
1.6开始,Minecraft允许更高分辨率的字体,但自定义仍然是有限的.
MCPatcher将首先在assets/minecraft/mcpatcher/font文件夹中查找字体位图.(不支持其下子文件夹)
这可以让你同时拥有可在原版mc显示的自定义字体以及需要mcpatcher才能够显示的更高分辨率的字体.
  • 默认字体: assets/minecraft/mcpatcher/font/ascii.png
  • 附魔台字体: assets/minecraft/mcpatcher/font/ascii_sga.png

注: 不支持自定义unicode字体.(包括unicode_page_00)(自定义unicode请修改glyph_sizes.bin方法见下方)
为了能够更好地控制单个字符的宽度,MCPatcher提供了一种手动指定它们的方法.
创建属性文件
  • assets/minecraft/mcpatcher/font/ascii.properties
  • assets/minecraft/mcpatcher/font/ascii_sga.properties

名为你想要自定义的字体.

属性文件格式:
在这个文件中的每一行指定一个字符的宽度:
  1. width.<ascii值 0-255>=<宽度 0-8>
复制代码
注: 这里ascii值指的是字符在位图中的序号,遵循从左到右从上到下的规律排列.
例如,要指定大写的A,B,C的宽度,你可以使用
  1. width.65=5.9
  2. width.66=5
  3. width.67=5.25
复制代码
不管字体的分辨率是多少,值只能是(原版mc只支持整数)介于0-8之间浮点数或整数.
你不需要为所有字体指定宽度,只需要指定那些你想修改的字符的宽度,未被指定的字符将使用来自原版mc的默认宽度.

空格符是特殊的.
它的默认宽度为字符“A-Z,a-z,0-9”宽度平均值的1/2,这使得单词之间的间隔与字体的整体宽度相匹配.
然而你可以用同样的方式修改它,通过将width.32设置为自定义值.


修改glyph_sizes.bin为unicode字符定制宽度:(填写费力,慎入!!)
使用16进制编辑器(例如uedit啊winhex啊什么的)打开glyph_sizes.bin
可以看到类似的一大串数据


对比左侧数据和右侧图片,有什么发现?

这里每一个字节(Byte)代表一个字符.
而每个字节即控制着对应字符的宽度,举个简单的例子:


页5



随机生物皮肤
此功能允许你为每种生物创建替补皮肤,用于让游戏在生物生成时随机选取.
替补皮肤也可以有不同的概率,用于创建罕见的怪物皮肤.
它们也可以按生物群落和高度分组,用于创建以雪,沙漠,洞穴为主题的生物.
马无法使用随机皮肤,因为Minecraft为马使用了多张纹理(一种在原版mc中的类似随机生物的效果).

简单随机化:
随机生物皮肤很简单. 首先,找到你想进行随机化的原版mc的生物皮肤.
以assets/minecraft/textures/entity/的目录结构创建assets/minecraft/mcpatcher/mob/并从2开始添加一些文件名并不要漏掉任何一个数字,否则之后的皮肤将无法被加载.
你自己创建的不存在于entity/下的目录,例如entity/cow/bluecow,这些目录下的皮肤将不被加载.

例如爬行者的首张替补皮肤是
  1. assets/minecraft/mcpatcher/mob/creeper/creeper2.png
复制代码
如果仅有这一张替补皮肤,则游戏有50%的几率使用原版mc的creeper.png,50%的几率使用候补的creeper2.png在爬行者生成时.
皮肤务必保存在文件夹entity/以及其子文件夹下! 对比如下部分:
  1. Creeper:
  2. assets/minecraft/textures/entity/creeper/creeper.png
  3. assets/minecraft/mcpatcher/mob/creeper/creeper2.png
  4. assets/minecraft/mcpatcher/mob/creeper/creeper3.png
  5. assets/minecraft/mcpatcher/mob/creeper/creeper4.png
  6. 等.
  7. 错误! 无法正常工作:
  8. assets/minecraft/mcpatcher/mob/creeper2.png

  9. Chicken:
  10. assets/minecraft/textures/entity/chicken.png
  11. assets/minecraft/mcpatcher/mob/chicken2.png
  12. assets/minecraft/mcpatcher/mob/chicken3.png
  13. assets/minecraft/mcpatcher/mob/chicken4.png
  14. 等.
复制代码
副生物皮肤:
一些生物有多张皮肤.
例如spider_eyes纹理是独立于主蜘蛛皮肤的.
狼有正常的,生气的和温顺的皮肤. 含有多张皮肤的有:
  • creeper, creeper_armor
  • dragon, dragon_eyes
  • enderman, enderman_eyes
  • ghast, ghast_shooting
  • sheep, sheep_fur
  • spider, spider_eyes
  • wither, wither_armor, wither_invulnerable
  • wolf, wolf_angry, wolf_tame, wolf_collar


有几种方法来处理这种情况.
  • 提供多张基础皮肤但仅有一张眼睛纹理.
    所有这种类型的生物都会有相同的眼睛.
    如果你的眼睛纹理通用性足够好,这也许是个可行的选择.
  • 提供数量相同的配套皮肤.(例如有5张creeper,但只有3张creeper_armor)
    如果你有相同数量的wolf,wolf_angry,和wolf_tame皮肤.
    在狼改变情绪时MCPatcher会使用配套的皮肤.
  • 提供不同数量的对应皮肤.
    这可能不是你想要的结果,因为它极难预测.
    但如果你有多张任意组合都看起来不错基础皮肤和眼睛纹理,那将是有用的.


        
其他叠加皮肤:(optifine不支持)
某些生物还固定使用某个方块的纹理.
蘑菇牛在它的背上使用红蘑菇的纹理,雪人头上戴着南瓜.
MCPatcher提供了自定义这两张皮肤的能力.
任意数量的替补皮肤可以被使用,并且将与任何其他的副生物皮肤一起被随机化.
  1. Mooshroom:
  2. assets/minecraft/mcpatcher/mob/cow/mooshroom_overlay.png
  3. assets/minecraft/mcpatcher/mob/cow/mooshroom_overlay2.png
  4. assets/minecraft/mcpatcher/mob/cow/mooshroom_overlay3.png
  5. 等.
  6. Snowman:
  7. assets/minecraft/mcpatcher/mob/snowman_overlay.png
  8. assets/minecraft/mcpatcher/mob/snowman_overlay2.png
  9. assets/minecraft/mcpatcher/mob/snowman_overlay3.png
  10. 等.
复制代码
这些纹理使用特殊的布局来适应其各自的实体模型.
蘑菇牛的叠加纹理包含三个正方形面板,将从左到右用于牛背上从头到尾的三个蘑菇.
绘制标准:

参考例子:

雪人的叠加纹理是一个简单的立方体布局:

参考例子:


还有一种偷懒的方法是使用一张完全透明的snowman_overlay.png并且对基础皮肤snowman.png的头的部分进行自定义.

mob.properties详解(optifine不支持)


页6



自定义鱼线拴绳
自定义拴绳和鱼线的纹理
这两条硬编码外观的线可以被替换成自定义的纹理.
  1. 鱼线: assets/minecraft/mcpatcher/line/fishingline.png
  2. 拴绳: assets/minecraft/mcpatcher/line/lead.png
复制代码
可参考misa的材质包
line.properties详解


页7



自定义颜色
MCPatcher的自定义颜色功能可以定制游戏中广泛的硬编码颜色,从光照到颗粒效果再到羊.
由于可用的自定义过于广泛,说明被分为了单独的页面.
其中许多功能是由位于assets/minecraft/mcpatcher/color.properties的属性文件来控制.
其余的则有自己的属性文件和图像文件.
自定义生物群落调色板(地形,主世界迷雾,天空,和水体)
自定义光照贴图(自然光和人工光的照明)
自定义文字颜色(告示牌,GUI,聊天颜色)
自定义物品生物颜色(药水,刷怪蛋,皮革盔甲)
杂项方块颜色(红石线,南瓜/西瓜藤)
颗粒效果颜色(岩浆/水滴,经验球,菌丝颗粒)

color.properties详解


页8



自定义生物群落调色板
在原版的Minecraft中,草地和树叶材质的不同颜色取决于周围的生物群落气候.
这通过两个文件来控制:
  1. assets/minecraft/textures/colormap/grass.png
  2. assets/minecraft/textures/colormap/foliage.png
复制代码

每个文件都是一个256x256的颜色表,将应用到草地或树叶的材质(通常是灰色).
MCPatcher极大地扩展了这个功能,让其支持其他方块和周围的天空和迷雾的颜色.
艺术家可以用这个来获取极好的效果,还原每个生物群落其本身的感觉.
此页被分成两个部分. 首先介绍颜色表图像的格式,第二部分展示了如何将他们应用到游戏中的各种元素.

原版颜色表格式:
原版Minecraft使用的格式,他是一张256x256的颜色表,其轴分别代表温度和湿度.
每个生物群落都有固定的基础温度和湿度值,对应于颜色表中的单个像素.
随着y轴坐标的变大,其在颜色表中的位置也慢慢向右下方移动.
一个由khanador撰写的论坛帖子展示了他(指颜色表)是如何工作的.
所有自定义颜色表默认使用原版格式来读取,除非你在属性文件中指定其格式.

MCPatcher的"网格"格式:
另一种可以更精确地控制每种生物群落的方法.
可以在下面的生物群落(Grid格式)中看到详述.

其他格式:
此外,MCPatcher还提供了一个"固定"颜色表格式.
此格式不需要图像; 他仅仅是一个单一的颜色,将应用到所有不同地方的方块.
其主要目的是覆盖一某些硬编码方块的颜色,例如甘蔗.

属性文件格式详解:(重要)


独立属性colormap.properties格式:(前面介绍的第二种方法)(样本参考文件)


生物群落(Grid格式)


页9



自定义光照
MCPatcher可以让你自定义游戏中的光照.

原版中光照是如何运作的:
每个方块会分配到两个范围0-15的亮度值,一个是天空亮度,一个是火把亮度.
一个在阳光直射下的方块具有值为15的天空亮度.
一个在树荫下并与刚才那个方块毗邻的方块具有值为14的天空亮度,以此类推.
一个深入地下的方块,且其远离任何可以看到天空的方块,则具有值为0的天空亮度.
对于火炬也是同理.
一个火把方块具有值为14(萤石则为15)的亮度值,并且每远离他一个方块的距离,亮度值就下降1.

要生成你在游戏中实际看到的光照,Minecraft使用了一张16x16的光照贴图.
其轴对应每种光源类型的16个光照水平.
如果一个方块拥有火炬亮度x和天空亮度y,则光照贴图坐标(x,y)处的点将被使用.
光照贴图不是任何游戏文件,但会在每帧画面中生效.
两个变量影响光照贴图,一天中的时间和火炬闪烁.(不是火把上的火焰而是光照忽明忽暗的效果)
Minecraft实现了黄昏/黎明间的转换和火炬闪烁,从而使整个光照贴图变暗或变亮,而不是通过调整天空/火炬的亮度值来实现这点.

自定义光照:
要使用自定义光照,你需要为每个世界创建一个光照贴图调色板:
  • 末地: assets/minecraft/mcpatcher/lightmap/world1.png
  • 主世界: assets/minecraft/mcpatcher/lightmap/world0.png
  • 地狱: assets/minecraft/mcpatcher/lightmap/world-1.png

每个光照调色板图像可以是任意的宽度,但必须为32或64像素高.
如果为64,图像的下半部分将用于夜视效果,这将在稍后讨论.
每32行的像素,顶部16行代表阳光,底部16行代表火把.
分为上下两列,16像素的上半部分和16像素的下半部分,将被选择以形成最终将被使用的16x16光照贴图的轴线用于渲染.


蓝色代表夜晚,橙色代表黄昏/黎明,青色代表白天,黄色代表闪电.?(Misa的模板.)
来自TT教程的模板


在上半部分中,左侧代表夜晚,右侧代表白天,黄昏/黎明将在之间转换.
调色板的最右边代表闪电. 同样的,其在调色板中也没有固定的宽度,但更多的宽度意味着在转换过程中拥有更多细节的空间.

火把的运作方式与之相似,但在这种情况下的x坐标是一个简单的随机值用于模拟火把闪烁的效果.
他将沿着x轴的方向变化,决定火把闪烁的效果. 要创造一个完全稳定无频闪的火把,只需确保每行的像素颜色均相同.

光照贴图在所有三个世界(主世界,地狱,末地)的运作方式是相同的,但由于在地狱和末地没有夜晚或白天,"一天中的时间"这个值是恒定的.
对于这些世界你可以简单地给每0-15行的像素相同的颜色.

夜视效果:
在原版游戏中,夜视效果是通过以(R,G,B)/max(R/G/B)缩放RGB值计算的.
例如,(0.2,0.3,0.6)将变亮至(0.333,0.5,1.0)通过除以0.6.
你可以自定义此效果,通过创建一个64像素高的自定义光照贴图而不是32像素高的.
这将需要提供四种调色板,而不是两种: 正常的阳光,正常的火把,夜视效果下的阳光,夜视效果下的火把.
与之前的光照贴图的运作原理相同,但使用每32-47行的像素和每48-63行的像素.

页10



自定义文字颜色
  1. 内容已转移至assets/minecraft/mcpatcher/color.properties.
  2. 以下是原版的默认颜色.
  3. 杂项颜色请参见 **自定义文字颜色**---杂项文字颜色 章节.

  4. 聊天颜色请参见 **自定义文字颜色**---聊天文字颜色 章节.

  5. 任何其他RGB值请参见 **自定义文字颜色**---任何其他RGB值 章节.
复制代码


页11



自定义物品生物颜色
  1. 内容已转移至assets/minecraft/mcpatcher/color.properties.
  2. 以下是原版的默认颜色.
  3. 药水及药水效果颜色请参见 **自定义物品生物颜色**---药水及药水效果的颜色 章节.

  4. 刷怪蛋颜色请参见 **自定义物品生物颜色**---刷怪蛋颜色 章节.

  5. 地图颜色请参见 **自定义物品生物颜色**---地图颜色 章节.
  6. ---根据物质的类型分配地貌颜色

  7. 羊的颜色请参见 **自定义物品生物颜色**---羊的颜色 章节.
  8. ---自定义染色羊的颜色(而非染色羊毛方块)

  9. 染色皮甲颜色请参见 **自定义物品生物颜色**---染色皮甲颜色 章节.
  10. ---颜色将应用到leather_layer_1.png和leather_layer_2.png来生成染色皮甲.

  11. 狗项圈颜色请参见 **自定义物品生物颜色**---狗项圈颜色 章节.
  12. ---自定义染色项圈的颜色.

  13. 染料颜色(未使用)请参见 **自定义物品生物颜色**---染料颜色 章节.
复制代码


页12



杂项方块颜色
某些方块使用特殊的着色方法,而非使用自定义生物群落调色板.
用于红石线的着色
assets/minecraft/mcpatcher/colormap/redstone.png
图像高度为1,宽度为16.
分别对应红石线的0-15的亮度等级.
例子效果

南瓜藤与西瓜藤
mcpatcher的文件命名规则:
assets/minecraft/mcpatcher/colormap/pumpkinstem.png
assets/minecraft/mcpatcher/colormap/melonstem.png
optifine的文件命名规则:
南瓜藤和西瓜藤共用一张着色文件
assets/minecraft/mcpatcher/colormap/stem.png
图像高度为1,宽度为8
分别对应藤蔓的8个生长阶段.0为萌芽,7为成熟.
例子效果


页13



颗粒效果颜色
岩浆滴:(optifine不支持)
  1. assets/minecraft/mcpatcher/colormap/lavadrop.png
复制代码

这是用于岩浆滴颗粒在其下落过程中冷却的效果的位图.
图像的高度为1,宽度可以为任何值.
X轴代表颗粒的年龄以游戏刻(1/20秒)作为单位进行演变.
岩浆滴颗粒在首40刻左右通常是不可见的,因为它们一开始产生在上方的方块中,所以90像素是一个很好的宽度.
如果颗粒效果的寿命长于图像的宽度,其剩余的时间将会固定使用最后一个像素.
经验球:(optifine不支持)
  1. assets/minecraft/mcpatcher/colormap/xporb.png
复制代码

用于经验球. 图像可以是任意尺寸.
颜色选区将沿一个正弦波形移动从(0,0)开始到图片结束.
正弦波的速度被减慢相对于原版变慢了4倍,来允许材质包拥有一个比默认的经验球脉动较慢的脉动效果.
如果你想保持默认的速度,只需要垂直平铺你的图像高度到原来的4倍.
菌丝颗粒效果:
  1. assets/minecraft/mcpatcher/colormap/myceliumparticle.png
复制代码

用于菌丝方块散发的颗粒. 图像可以是任意尺寸.
每个新的颗粒将随机选取位图中的颜色.
其他颗粒效果:(optifine仅不支持"方块水滴效果")
  1. 内容已转移至assets/minecraft/mcpatcher/color.properties.
  2. 请至 ***其他颗粒效果***---颗粒效果的底色 章节查看.
复制代码


页14



连接纹理
注意:以下tiles均翻译为面,实指方块一面上的贴图. face均翻译为朝向,实指朝向哪个方位.
以下tilesheet不做翻译,实指包含47张tiles的完整图像,1.5版本材质切分之前就使用这种tilesheet.

MCPatcher提供的一个极大增强版的Connected Textures Mod. 除了以不同的方式连接临近的方块的方法, MCPatcher还支持随机, 重复, 和固定的方法.  任何一种方法都可以有条件地使用通过方块ID,面的文件名(这个面对应材质的文件名), 元数据,朝向, 生物群落, 或高度.

CTM的属性文件和覆盖纹理都在~/ctm文件夹内. 每一个配置文件中申明了对一个方块或一个面的替换, 使用的方法, 一些覆盖纹理, 和一些可选的条件, 例如元数据和朝向. 多个属性文件会影响同一个方块或面, 但只有第一个匹配的(按字母顺序排列的文件名)会被使用. 文件在~/ctm中可以被分类到任何深度的子文件夹中. 子文件夹只是让纹理作者更方便地分类; MCPatcher不会去关心它们的名字(仅遍历属性文件?).

一个简单的玻璃方块的连接纹理需要一个属性文件和47张单独的纹理:
  1. ~/ctm/myglass/block20.properties:
  2.         method=ctm
  3.         tiles=0-46
复制代码
单独的面文件必须按照以下方式排列在/ctm/myglass目录下:

横向连接纹理遵循以下模式. 同样, 使用4张独立的图像, 而不是一张tilesheet.

垂直连接的纹理遵循以下模式:

横向连接+垂直连接 和 垂直连接+横向连接(method=h+v and v+h respectively)将二者结合起来, 在其中一个内支持另一个. 至少需要7面.
参考这张Misa提供的模板.


关于1.7.2重复纹理显示不正常的解释
由于原版1.7.2的显示问题,对角线的纹理会进行镜像,导致重复纹理翻转,导致显示不正常.具体参考如下图片


ctm.properties详解


页15



更好的玻璃
更好的玻璃mod扩展了连接纹理,为其添加完整的alpha通道支持,用于玻璃和玻璃板.
彩色玻璃使用两个纹理,一个用于框架另一个为玻璃部分.
由于游戏渲染器的限制, 当玻璃的一部分处于另外一种半透明材质例如冰的后面时,那部分将会消失看不见.
但仍然保持框架可见,这是一个像样的折中.

  1. ~/ctm/myglass/block20.properties:
  2.         method=ctm
  3.         tiles=0-46
  4.         renderPass=2

  5. ~/ctm/myglass/block20a.properties:
  6.         method=ctm
  7.         tiles=47-93
  8.         renderPass=3

  9. ~/ctm/myglass/block102.properties:
  10.         method=ctm
  11.         tiles=0-46

  12. ~/ctm/myglass/block102a.properties:
  13.         method=ctm
  14.         tiles=47-93
  15.         renderPass=3
复制代码
renderPass属性指定方块应在什么情况下显示.  每个渲染过程具有不同的属性:
  •         0: 正常, 固体方块. 几乎所有的方块都使用这个通道.  只能开/关透明度.
  •         1: 现有的半透明方块(水,冰等)(其实说白了就是合并的通道2和3).
    更好的玻璃增加了两个新的渲染通道:
  •         2: 与#0通道相同,但禁用了背面剔除(backface culling). 同样的, 只能开/关透明度. 使用这个渲染通道可以使所有六个面框架可见.
  •         3: 支持完整alpha通道. 当其在水等来自通道#1的图层后面渲染时将被隐藏. 它的混合方法可以通过在renderpass.properties中改变.

通道渲染将按如下顺序发生: 0, 2, 1, 3.  需要注意的是玻璃方块使用渲染通道2的外框,但玻璃面板不使用.  如果对玻璃板使用2的话, 你会看到深度冲突(z-fighting), 因为游戏把玻璃板的两侧放在同一坐标.
你可能已经猜到了,更好的玻璃可以通过添加适当的条目及其属性的文件将用于支持CTM的任何方块.
一个限制是属性必须基于方块的ID, 而不是面的名称(这个面对应材质的文件名). 同时请记住, 渲染通道将应用于所有使用相同的方块ID的方块.
渲染通道2替换渲染通道0, 所以一旦你进行分配, 例如, 分配石半砖至渲染通道2, 那么你必须有CTM规则覆盖所有在渲染通道2的石半砖(方块ID44). 否则, 其他石半砖将是不可见的.
在optifine的客户端使用带更好的玻璃材质的材质包并不会像tt所说的那样导致正常ctm无法显示.
并且所有optifine不支持的高级材质存在于材质包也不会引起正常材质的显示不正常,而仅仅是无法显示这部分高级材质而已.

效果参考


renderpass.properties详解


页16



更好的天空
厌倦了默认的星空?  MCPatcher支持完全自定义的天空盒子!
多个天空盒子可以分层次地在一起使用几种混合的方法,并设置为在一天中的某些时间淡入和淡出.
每层的天空都与一个sky<n>.properties文件一一对应,它们只能放在~/sky/world0/目录中.
每个sky<n>.properties都必须指定一个天空盒子纹理(默认是: ~/sky/world0/sky<n>.png),和一些其他的条目,将在后面介绍.
天空盒子纹理是一个可旋转的正方体,而你身处其中.天空盒子纹理可以是任何尺寸的图片,但必须为两行三列,且每面为相同大小的正方形.
具体如何绘制请参考如下样本:


sky.properties详解


页17



自定义物品材质
CTM用于方块, CIT则用于物品. 自定义物品支持damage值,堆叠数量,和NBT数据. 还可以为不同的附魔创建不同的效果.

所有与CIT相关的文件均在~/cit文件夹. 类似CTM,文件可以被进一步分类到任何深度的子文件夹. 一个可选的cit.properties文件将指定CIT的全局行为,特别是定义对多个自定义附魔效果的处理方式.

CIT的大多数行为通过~/cit文件夹中的许多属性文件来定义. 每一个属性文件定义一个类型(物品, 附魔, 铠甲);一些基于物品ID,damage,等来对物品进行纹理替换的条件.; 和一个或更多的替换纹理. 如果有多个属性文件匹配相同的物品,一个具有最高权重的属性文件将优先被使用.
  1. type=<item |enchantment |armor>
  2. items=<item IDs>
  3. damage=<damage values>
  4. stackSize=<stack sizes>
  5. enchantmentIDs=<list of enchantment IDs>
  6. enchantmentLevels=<list of enchantment levels>
  7. nbt.<expression>=<NBT value>
  8. weight=<priority relative to other CIT files>
  9. texture=<replacement texture>
复制代码
(这些属性大多数都是可选的.)

CIT type=item定义一个简单的纹理替换. 它使用自定义纹理而非取代在textures/items中的默认材质. 替换纹理可以使用Mojang的.mcmeta格式动画. 对于拥有多个材质(弓,药水,刷怪蛋)的物品,在单个属性文件中指定所有所需的替换纹理:
  1. # 错误 – 向后拉的状态将会显示相同的纹理
  2. texture=my_special_bow_standby
  3. # 正确 – 针对弓每个状态有单独的纹理
  4. texture.bow_standby=my_special_bow_standby
  5. texture.bow_pulling_0=my_special_bow_pulling_0
  6. texture.bow_pulling_1=my_special_bow_pulling_1
  7. texture.bow_pulling_2=my_special_bow_pulling_2
复制代码


CIT type=enchantment会取代预设闪烁效果. 不同的附魔可以根据附魔的类型或级别或同时以上两种条件给予其不同的纹理. 如果一个物品有多种附魔,效果可以被混合到一起或循环效果. 如果发现一个被附了魔的物品没有进行自定义附魔效果,将会使用默认的enchanted_item_glint.png. 这可以通过设置useGlint=false在全局cit.properties文件中来禁用.

CIT type=armor取代了在第三人称视角及在其他玩家眼中盔甲显示的纹理. 每种盔甲类型有两张纹理,除了皮革有四张. 使用与弓的例子相同的语法来替换多个纹理:
  1. # 钻石
  2. texture.diamond_layer_1=...
  3. texture.diamond_layer_2=...
  4. # 皮革
  5. texture.leather_layer_1=...
  6. texture.leather_layer_1_overlay=...
  7. texture.leather_layer_2=...
  8. texture.leather_layer_2_overlay=...
复制代码


还有药剂替换纹理的替代方法. 这不是复杂的基于damage值和药水类型的处理方法,而是一个简单的基于文件名的替换方法. 使用此方法不需要任何属性文件,只要有路径正确的png文件. 请参见为模板cit_single.properties文件底部的细节.(资源包格式后不建议使用此种方法,水下呼吸药水的替换不会生效)
cit_single.properties详解


cit.properties详解


页18