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

前言

截至2021年12月14日,本教程应当适用于3.3.1.290-3.3.1.316版本的匠魂3,若匠魂3在之后版本并未修改材料定义方式(definition),应当也是适用的。以官方文档为准。

在阅读本教程前,默认读者已经对标签、数据包这类概念有了一定的了解(推荐站内宝宝早教),并稍微接触KubeJSCraftTweaker这类魔改模组。

匠魂3的附属模组,如MaterialisTiCBC,使得匠魂3能够兼容来自其他模组的材料,但有时出于各种原因,玩家可能只是想要附属模组添加的材料特性,而不想带上一整个模组,本教程将指导有这方面困扰的玩家如何在未安装联动mod时启用“不存在”的材料。

正文

以笔者的整合包为例,其中安装了MaterialisTiCBC,前者使匠魂支持星辉魔法的星辉,后者使匠魂支持植物魔法的魔力钢。

例1

首先,可以看到并未安装星辉魔法

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第1张图片JEI里完全是空的

用Winrar这类解压缩软件打开Materialis的模组文件。

在data\materialis\materials\definition内找到starmetal.json。

  • materialis:因为是这个mod。

  • materials:因为要找材料。

  • definition:因为要定义材料。

  • starmetal:因为找的是星辉。

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第2张图片

打开后是这样的。

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第3张图片

condition内是这个材料启用的条件,红框圈起来的部分表示需要有个物品具备forge:ingots/starmetal这个标签才会启用“星辉”,因而我们只要给一个物品添加forge:ingots/starmetal标签就行了。

以KubeJS为例,在kubejs\server_scripts内新建一个.js文件。

然后写入以下代码:

onEvent('item.tags', event => {
//为原版胡萝卜添加标签
        event.add('forge:ingots/starmetal', 'minecraft:carrot')
})

也可以把“minecraft:carrot”换成别的什么,这里只是随意举个例子。

保存.js文件,接着执行/reload命令。

可以看到胡萝卜已经带上了星辉锭的标签(按F3+H开启高级提示框):

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第4张图片

JEI搜索“星辉”,看胡萝卜的熔炼配方,成功启用(实际上将其作为“星辉锭”):

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第5张图片

并且也能浇筑成各种部件:

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第6张图片

同理我们打开quicksilver.json,发现其定义方式和星辉也是如出一辙,只要有forge:ingots/quicksilver这个标签即可。因而可以有:

onEvent('item.tags', event => {
        event.add('forge:ingots/starmetal', 'minecraft:carrot')
        event.add('forge:ingots/quicksilver', 'minecraft:potato')

})

/reload重新载入,成功。剧毒马铃薯

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第7张图片

例2

和例1类似,在安装TiCBC的情况下未安装植物魔法,因而没有魔力钢的部件,此处如法炮制,打开data\bettercompat\materials\definition下的manasteel.json文件。

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第8张图片

可以看到,红框框起来的部分与Materialis对星辉的定义不同,需要在指定mod加载的情况下才会启用该材料,而不是看是否某物品有这个标签好麻烦

但我们可以通过数据包对该json文件进行替换,值得一提的是,KubeJS本身就带有某种意义上的全局数据包(和资源包)功能,因此KubeJS的使用者只需要在kubejs\data内建立和mod内同名json文件相同的路径即可,此处即kubejs\data\bettercompat\materials\definition

新建一个同名的manasteel.json文件,写入如下内容:

{
  "condition": {
    "values": [
      {
        "prop": "force_integration_materials",
        "type": "tconstruct:config"
      },
      {
"value":{
        "tag": "forge:ingots/manasteel",
        "type": "forge:tag_empty"
       },
   "type":"forge:not"
  }
    ],
    "type": "forge:or"
  },
  "craftable": false,
  "tier": 3,
  "sortOrder": 2,
  "textColor": "#4196DC",
  "hidden": false
}

即当有一个物品带有forge:ingots/manasteel标签时,启用该材料。

(标签不一定非要这个,只是省得再写一个熔炼配方;你还可以去掉condition这部分,那样它就会无条件启用该材料了。)

接着为一个物品添加forge:ingots/manasteel标签,这里用的是cod(生鳕鱼):

onEvent('item.tags', event => {
        event.add('forge:ingots/starmetal', 'minecraft:carrot')
        event.add('forge:ingots/quicksilver', 'minecraft:potato')
        event.add('forge:ingots/manasteel', 'minecraft:cod')
})

重新载入后,魔力钢材料的部件就出现了:

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第9张图片

并且,你可以把生鳕鱼当成“魔力钢锭”熔炼成液态的魔力钢。

【匠魂3】未安装联动mod时如何启用“不存在”的材料-第10张图片