本篇教程由作者设定使用 CC BY-NC 协议。
前言
纹理生成器是匠魂3新增的一个功能,可以快速的批量生成部分匠魂所需的纹理,在数据包和模组开发上有效的节约了作者的时间。
纹理生成器有数据包和Datagen两种使用方式,前者由Json文件驱动可用于数据包、资源包和模组;后者由Java代码驱动,适用于模组。
本教程主要介绍数据包方式,但也部分适用于Datagen方式。
阅读本教程前,作者假定读者至少了解Json文件的基本格式,并会使用VScode或记事本等文本编辑器。
导出命令
在聊天框输入以下命令,纹理生成器就会开始工作,并在片刻后将所有导出的纹理以资源包的形式导出到.minecraft\resourcepacks\TinkersConstructGeneratedPartTextures(未开启版本隔离)或.minecraft\versions\<版本名称>\resourcepacks\TinkersConstructGeneratedPartTextures(开启版本隔离)下,TinkersConstructGeneratedPartTextures这一文件夹可直接作为资源包使用,也可以将其中的纹理复制到需要的模组下:
/tconstruct generate_part_textures <filter> [<mod_id>|<material>]
命令参数:
<filter>可以为all或missing,前者会尝试导出所有可导出的纹理,后者仅会尝试导出当前缺失的纹理;
<mod_id>:可以为空或者某个模组/数据包的命名空间,如果是后者则仅会尝试导出指定的命名空间下的纹理;
<material>可以为空或者某个材料的注册名,如果是后者则仅会尝试导出指定的材料相关的纹理。
材料纹理
要导出材料的纹理,需要在assets\<mod_id>\tinkering\materials\下新建一个完整名称为<材料命名域.json>的json文件。
纹理生成器有两种生成方式,其中灰度图上色法是最常用的,即将灰度图中每一个灰度替换为指定的颜色。
假设我们想要重绘紫颂(注册名tconstruct:chorus)材料的纹理,就需要在assets/tconstruct/tinkering/materials/chorus中进行设置:
{
"fallbacks": [ "rock",
"_comment":"材料上色的基底"
],
"color": "8F648F",
"_comment":"材料的底色,仅在纹理缺失时生效"
"luminosity": 0,
"_comment":"材料的亮度,同样仅在纹理缺失时生效"
"generator": {
"transformer":
{ "type": "tconstruct:recolor_sprite",
"color_mapping": {
"type": "tconstruct:grey_to_color",
"palette": [
{ "grey": 0,
"color": "FF000000",
"_comment":"每个灰度及其替换的颜色,后者的前2位是透明度,后6位是16进制颜色代码"
},
{ "grey": 63,
"color": "FF4F2A4F" },
{ "grey": 102,
"color": "FF593559" },
{ "grey": 140,
"color": "FF643C64" },
{ "grey": 178,
"color": "FF774D77" },
{ "grey": 216,
"color": "FF8F648F" },
{ "grey": 255,
"color": "FFA47CA4" }
]
}
},
"supportedStats": [
"_comment":"这种材料可用于上色的部件的类型",
"tconstruct:head",
"tconstruct:handle",
"tconstruct:extra",
"tconstruct:repair_kit",
"tconstruct:limb",
"tconstruct:grip"
],
"ignoreMaterialStats": false }
}
"_comment":""为注释
由于匠魂3已经有了紫颂的纹理,此时想要导出就需要输入/tconstruct generate_part_textures all tconstruct:chorus
同理,模组或数据包新增的材料导出纹理的方式与此相同,只需要设置后进入游戏并输入相应的命令即可。
在实际运用中要根据需求进行调色;一般而言,灰度值越低的,对应的颜色越深,RGB值越低。
部件物品纹理
为模组/数据包新增的部件生成纹理
首先在assets\<mod_id>\textures\item\tool\parts\中要准备一张16×16的灰度图作为部件纹理上色的基底,名称为该新增部件的注册名相同:
然后,在assets\<mod_id>\textures\models\item\处新建一个json文件,名称同样为该新增部件的注册名:
{
"loader": "tconstruct:material",
"parent": "forge:item/default",
"textures": {
"texture": "<mod_id>:item/tool/parts/<name>"
}
}
接着,在 assets\<mod_id>\tinkering\处新增json文件,名为generator_part_textures:
{
"replace": false,
"parts": [
{
"path": "assets/<mod_id>/textures/item/tool/parts/<name>",
"statType": "<typename>"
}
]
}
注意在json文件中使用“/”代替"\"
其中<typename>为部件的类型:
tconstruct:head | 头部 |
tconstruct:handle | 手柄 |
tconstruct:extra | 附件 |
tconstruct:limb | 弓臂 |
tconstruct:grip | 弓把 |
tconstruct:bowstring | 弓弦 |
这样在导出纹理时也会导出该部件的纹理,但位于资源包中的\<mod_id>\路径下而非\tconstruct\路径下
工具与强化特性纹理
近程工具
(待更新)
远程工具
盾牌与手杖类工具
盔甲
盔甲装饰纹理
其他相关内容
材料和特性的文本染色
在匠魂3的各本书、工具提示栏和JEI配方中,有些材料或特性(modifier,包含强化特性和材料特性)的文本是有颜色的,其颜色可在assets/<modid>/mantle/colors中设置,该文件同样属于json文件。
{
"modifier.<modid>":
{
"test": "#639631",
"_comment":"需要染色的特性的注册名后半段"
},
"material.<modid>":
{
"test": "#639631"
"_comment":"需要染色的材料的注册名后半段"
}
}
其中“#”号后面的数字为16进制颜色代码(#号不能省略)
强化特性图标
在assets\<mod_id>\tinkering\处新建一个json文件,名为modifier_icons
{
"<modid>:<name>": ["<texturesname1>","<texturesname2>","..."]
}
前半段为强化的注册名,<texturesname>处填写想要使用的纹理的路径(16×16),不限数量,填写多个时中间用逗号隔开,所有填写的纹理会按从左到右的顺序依次叠加。
可以使用原版、匠魂3的你的模组/数据包的纹理,如果能确定该强化存在时一定有某个其他模组加载,那么当然也能用这个模组的纹理。
另外,匠魂3也预设了一些通用的具有特殊含义的纹理,位于assets\tconstruct\textures\gui\modifiers\中,非常推荐使用,以提升强化图标的标识性:
强化与某个物品高度相关时,建议将强化图标设置为物品纹理+book
强化的功能是提供额外强化槽时,建议将强化图标中包含plus
强化能提升工具的挖掘等级或提供特殊加成时(钻石,绿宝石,下界合金,世界绑定等),建议将强化图标中包含tier