本篇教程由作者设定使用 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

纹理生成器及其相关内容使用教程(恢复更新)-第1张图片导出效果(仅展示了一部分)

同理,模组或数据包新增的材料导出纹理的方式与此相同,只需要设置后进入游戏并输入相应的命令即可。

在实际运用中要根据需求进行调色;一般而言,灰度值越低的,对应的颜色越深,RGB值越低。

部件物品纹理

为模组/数据包新增的部件生成纹理

首先在assets\<mod_id>\textures\item\tool\parts\中要准备一张16×16的灰度图作为部件纹理上色的基底,名称为该新增部件的注册名相同:

纹理生成器及其相关内容使用教程(恢复更新)-第2张图片示例然后,在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\中,非常推荐使用,以提升强化图标的标识性:

纹理生成器及其相关内容使用教程(恢复更新)-第3张图片book

强化与某个物品高度相关时,建议将强化图标设置为物品纹理+book

纹理生成器及其相关内容使用教程(恢复更新)-第4张图片plus

强化的功能是提供额外强化槽时,建议将强化图标中包含plus

纹理生成器及其相关内容使用教程(恢复更新)-第5张图片tier

强化能提升工具的挖掘等级或提供特殊加成时(钻石,绿宝石,下界合金,世界绑定等),建议将强化图标中包含tier