本篇教程由作者设定未经允许禁止转载。

前言

匠魂3比起匠魂2来说,材料少了很多。例如有一次我想做赛特斯石英部件,结果在部件制作台上不能制作部件,甚至没有一个附属联动。正所谓“自己动手,丰衣足食”,那么,kubejs就是你的不二之选。

第一部分:注册材料

路径

在确认您装载kubejs且至少启动过一次游戏后,就让我们看注册部件的路径。,

\kubejs\data

在这个路径下先创建一个文件夹,注意名字必须为英文,然后在这个文件夹下再创建一个名为“tinkering”的文件夹,然后在这个文件夹中再创建一个名为“materials”的子文件夹,最后再在里面创建3个子文件夹,分别命名为“definition”,“stats”和“traits”。

如图,这里的第一个文件夹以kubejs为例。不要在意我为啥有versions[1.18.2]如何使用kubejs自创匠魂材料?-第1张图片

注册材料

首先打开你的definition文件夹,这里是存放材料定义的。在里面创建一个xxx.json文件,这里的xxx可以填写任何名字,(除了中文)例如"certus_quartz"。

{
    "craftable": true,
    "tier": 1,
    "sortOrder": 1,
    "hidden": false
}

上面的是一个定义文件的格式,我们来逐个讲解。

"craftable":是否在部件制作台上制作

"tier":材料等级

"sortOrder":材料在手册中的位置(可以随便填,最好不要过大)

"hidden":是否隐藏

材料面板

将这些填写好后,就得写面板了

在你的stats文件夹创建一个与之前名字一样的.json文件

{
    "stats": {
      "tconstruct:extra": {},
      "tconstruct:handle": {
        "durability": 1.2,
        "miningSpeed": 1.0,
        "attackSpeed": 0.9,
        "attackDamage": 1.1
      },
      "tconstruct:head": {
        "durability": 150,
        "miningSpeed": 4,
        "harvestTier": "minecraft:stone",
        "attack": 2
      },
      "tconstruct:limb": {
        "durability": 150,
        "drawSpeed": -0.1,
        "velocity": 0.1,
        "accuracy": 0.1
      },
      "tconstruct:grip": {
        "durability": 1.2,
        "accuracy": 0,
        "meleeAttack": 2
      }
    }
  }

上面的是一个面板文件的格式,是不是很长?没事,让我们来逐个讲解:

手柄

"tconstruct:handle":手柄面板

"durability":耐久系数

"miningSpeed":挖掘速度系数

"attackSpeed":攻击速度系数

"attackDamage":攻击伤害系数

顶端

"tconstruct:head":顶端面板

"durability":耐久

"miningSpeed":挖掘速度

 "harvestTier":采掘等级

 "attack":攻击伤害

弓臂

"tconstruct:limb":弓臂面板

"durability":耐久

"drawSpeed":拉弓速度

"velocity": :初速度

 "accuracy": 精确度

弓把

"tconstruct:grip":弓把面板

"durability":耐久系数

"accuracy":精确度

"meleeAttack":攻击伤害

假如你想要一个部件只能做近战?那就可以把弓臂和弓把删除,想只能做远程同理

材料特性

在你的traits文件夹下创建一个与之前名字一样的.json文件

特性可以填写你想要的任何特性,不限数量,附属的也可以(前提是你装了相对应的附属)

这里我以工匠匠心的晶态为例

{
    "default": [
        {
            "name": "tinkers_ingenuity:crystalline",
            "level": 1
        }
    ]
}

"name":特性的注册名

"level":特性的等级

如果你按照前面的一步一步做了的话,那么大概率在对应的等级分区可以找到你所写的材料,但是此时的材料只有空戳戳一个面板,那么如何才能让它变成一个正常能够使用的匠魂材料呢?请看下文。

第二部分:材料的制作——部件制作台合成及浇筑

首先就是进行部件合成台合成,这个合成是与你的修复配方绑定的,不需要重新写一个修复配方的文件,如果你不想进行部件合成台合成,只想要修复的话可以将前文中所提到的“craftable”后的“true”改成“false”。

修复/部件合合成台合成

下图则为修复/部件合合成台合成的文件路径

[1.18.2]如何使用kubejs自创匠魂材料?-第2张图片

在你的fix文件夹(这个文件夹可以改为任何名字,除了中文)下创建一个.json文件,无需与前面的名字一样,只要你能够分清楚就可以。(此后我若无特殊说明皆为与之前名字一样的.json文件)

{
    "type": "tconstruct:material",
    "ingredient": {
    "tag":"ae2:all_certus_quartz"
    },
    "value": 1,
    "needed": 1,
    "material": "kubejs:certus_quartz"
        "leftover": {
      "tag": "graveyard:dark_iron_ingot"
    }
  }

那么这些需要注意的前缀如下:

 "tag":修复/制作所需的物品tag,如无tag则改为"item"。

"value":相当于物品的“价值”,修复/制作后返还的物品数量由这个管理。

"needed":修复/制作部件所需物品的数量。

"material":前文你所注册的材料,格式为"kubejs:xxx",“xxx”则为前文你所注册的文件名。

"leftover":修复/制作后返还的相应物品。

熔融浇筑类材料合成

下图则为熔融/浇筑合成的文件路径

[1.18.2]如何使用kubejs自创匠魂材料?-第3张图片

在此路径之下,你可以创建一个.js文件(名称无需与之前的json文件相同),接着输入以下代码

let fm = (event, modf, modm, fname, mname, amount, Tem) => {
    event.custom(
        {
            "type": "tconstruct:material_melting",
            "input": modm + ":" + mname,
            "temperature": Tem,
            "result": {
                "fluid": modf + ":molten_" + fname,
                "amount": amount
            }
        })
    event.custom(
        {
            "type": "tconstruct:material_fluid",
            "fluid": {
                "name": modf + ':molten_' + fname,
                "amount": amount
            },
            "temperature": Tem,
            "output": modm + ':' + mname
        })
}
//use it like=>fm(event,流体mod,材料mod,流体名字,材料名字,一锭数量,温度)
onEvent("recipes", event => {
//在此处输入上一个注释中的内容,具体内容按需替换
//特别感谢MC百科用户“一个锇粉”所提供的代码
})

如果你按照上述步骤完成代码的话,此时你的自创材料已经拥有面板且能够合成了,但是此材料仍然没有它的颜色,十分的难看,那么如何才可以让材料自带颜色呢?下一章节可以帮助你。

第三部分:使用匠魂自带着色器进行材料的简单着色

在下图路径创建一个名为“kubejs”的文件夹

[1.18.2]如何使用kubejs自创匠魂材料?-第4张图片

接着在第二个kubejs文件夹之内创建一个名为“tinkering”的文件夹

[1.18.2]如何使用kubejs自创匠魂材料?-第5张图片

再然后创建一个名为“materials”的文件夹

[1.18.2]如何使用kubejs自创匠魂材料?-第6张图片然后创建一个新的json文件,在里面输入以下代码

对于仅有绑定结及弓弦材料

{
    "color": "BDA07F",
    "luminosity": 0,
    "generator": {
      "transformer": {
        "type": "tconstruct:recolor_sprite",
        "color_mapping": {
          "type": "tconstruct:grey_to_color",
          "palette": [
            {
              "grey": 0,
              "color": "FF000000"
            },
            {
              "grey": 63,
              "color": "FF3D1C10"
            },
            {
              "grey": 102,
              "color": "FF542716"
            },
            {
              "grey": 140,
              "color": "FF893B25"
            },
            {
              "grey": 178,
              "color": "FF9E492A"
            },
            {
              "grey": 216,
              "color": "FFC65C35"
            },
            {
              "grey": 255,
              "color": "FFD76B43"
            }
          ]
        }
      },
      "supportedStats": [
        "tconstruct:repair_kit",
        "tconstruct:extra"
      ],
      "ignoreMaterialStats": false
    }
  }

对于正常材料

{
  "fallbacks": [
    "metal"
  ],
  "color": "080808",
  "luminosity": 0,
  "generator": {
    "transformer": {
      "type": "tconstruct:recolor_sprite",
      "color_mapping": {
        "type": "tconstruct:grey_to_color",
        "palette": [
          {  "grey": 0,    "color": "FFF1FEFF"},
          {  "grey": 63,   "color": "FF678BAB"},
          {  "grey": 102,  "color": "FF7DA2C4"},
          {  "grey": 140,  "color": "FFDFEDFB"},
          {  "grey": 178,  "color": "FFAFCFF2"},
          {  "grey": 216,  "color": "FFBADBFF"},
          {  "grey": 255,  "color": "FFB7DFE2"}
        ]
      }
    },
    "supportedStats": [
      "tconstruct:head",
      "tconstruct:handle",
      "tconstruct:extra",
      "tconstruct:repair_kit",
      "tconstruct:limb",
      "tconstruct:grip",
      "tconstruct:plate"
    ],
    "ignoreMaterialStats": false
  }
}

在这两个代码之中,唯二需要注意的只有两个前缀:

"colour":你所需颜色的16进制颜色码

"fallbacks":部件的视觉样式。“metal”为金属样式,"crystal"为宝石样式。

后文

如果你认真按照上述写的做了的话,那么恭喜你,完成了你的第一个使用kubejs完成的匠魂材料。即使kubejs部分只在熔融及浇筑上使用到了。希望你能在看了此教程之后拥有了制作匠魂整合包的动力

特此感谢MC百科用户dddddsj爬行中的苦力怕一个锇粉米子114514啊吕不才等对我开发路程上多多少少的帮助。以及所有匠魂3玩家对匠魂3的热爱,正是你们让匠魂3的社区生态一步步壮大。