本篇教程由作者设定未经允许禁止转载。
前言
截至2021年12月14日,本教程应当适用于3.3.1.290-3.3.1.316版本的匠魂3,若匠魂3在之后版本并未修改材料定义方式(definition),应当也是适用的。以官方文档为准。
在阅读本教程前,默认读者已经对标签、数据包这类概念有了一定的了解(推荐站内宝宝早教),并稍微接触KubeJS或CraftTweaker这类魔改模组。
匠魂3的附属模组,如Materialis、TiCBC,使得匠魂3能够兼容来自其他模组的材料,但有时出于各种原因,玩家可能只是想要附属模组添加的材料特性,而不想带上一整个模组,本教程将指导有这方面困扰的玩家如何在未安装联动mod时启用“不存在”的材料。
正文
以笔者的整合包为例,其中安装了Materialis和TiCBC,前者使匠魂支持星辉魔法的星辉,后者使匠魂支持植物魔法的魔力钢。
例1
首先,可以看到并未安装星辉魔法。
用Winrar这类解压缩软件打开Materialis的模组文件。
在data\materialis\materials\definition内找到starmetal.json。
materialis:因为是这个mod。
materials:因为要找材料。
definition:因为要定义材料。
starmetal:因为找的是星辉。
打开后是这样的。
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开启高级提示框):
JEI搜索“星辉”,看胡萝卜的熔炼配方,成功启用(实际上将其作为“星辉锭”):
并且也能浇筑成各种部件:
同理我们打开quicksilver.json,发现其定义方式和星辉也是如出一辙,只要有forge:ingots/quicksilver这个标签即可。因而可以有:
onEvent('item.tags', event => {
event.add('forge:ingots/starmetal', 'minecraft:carrot')
event.add('forge:ingots/quicksilver', 'minecraft:potato')
})
/reload重新载入,成功。剧毒马铃薯
例2
和例1类似,在安装TiCBC的情况下未安装植物魔法,因而没有魔力钢的部件,此处如法炮制,打开data\bettercompat\materials\definition下的manasteel.json文件。
可以看到,红框框起来的部分与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')
})
重新载入后,魔力钢材料的部件就出现了:
并且,你可以把生鳕鱼当成“魔力钢锭”熔炼成液态的魔力钢。