本篇教程由作者设定未经允许禁止转载。
22岁,是学生。闲来无事决定将自己学习CrT过程中遇到的问题记录下来,顺便给大家当个参考。
本教程对应版本为1.20.1,其余版本能否使用我也不知道。
第一次写教程,暂时不会写目录,因此请直接看正文,或使用Ctrl+F搜索文中内容。
一、如何开始?
1.选择适合你Minecraft版本的Crt安装(这一步都完不成的推荐关闭本教程)
2.打开安装有CrT的Minecraft,创建一个新世界(注意勾选允许作弊)
3.打开命令栏,输入/ct scripts
4.点击聊天栏中的[scripts]
5.在打开的文件夹里创建一个后缀名为zs的新文件(新建一个txt文件然后重命名,不知道该叫什么就先改成test.zs,名字无所谓)
6.用任意文本编辑器打开新创建的.zs文件(推荐使用Vscode,当然,你用记事本也可以)
7.这就是你平常使用CrT的地方了。
8.修改完配方记得在游戏里使用/reload重载资源,此时游戏停止响应是正常的,等待即可。
图1-1 使用/reload指令重载资源
当这三句话出现时,则为重载完毕。
二、配方的增删改查
一般的修改流程是:修改代码,重载资源。我们已经学会了重载资源,那么下一步就是修改代码,即配方的增删改查。
1. 有序合成
首先我们先来看一个例子,这是本人添加的锦致装饰中箭袋的合成配方
图2-1 箭袋合成配方
这个配方对应的源代码为:
//箭袋
craftingTable.addShaped("quiver1",<item:supplementaries:quiver>,[
[<item:minecraft:air>,<item:minecraft:air>,<item:minecraft:string>],
[<item:minecraft:air>,<item:minecraft:leather>,<item:minecraft:air>],
[<item:minecraft:leather>,<item:minecraft:air>,<item:minecraft:air>]
]);
一般的有序配方就长这个样子。我们分着来讲讲这段代码的几个部分。
craftingTable:Crafting Table翻译过来就是工作台。那么这就是一个工作台的配方。
addShaped:添加有序配方。如果你学过编程中类的思想,便会发现这些代码有些眼熟。但为了更多同学能看懂,我们暂且按下不表。
代码的前两个部分,合起来意思就是“添加工作台的有序配方”。
接下来是小括号内,以逗号为分隔符,分为三个部分。
"quiver1":这个配方的名字。配方的名字可以你自己随便改(中文不行),但最好编个好记的名字。两边的引号不要动,记得用英文引号。
<item:supplementaries:quiver>:产物。在CrT里,物品的代码表现形式就是这样,外侧使用尖括号包裹,内侧分为三部分:item(暂且不要动,之后会讲到)、模组ID、物品ID。
查物品ID和模组ID的方法:在游戏里按F3+H显示高级提示框,然后找到产物——
图2-2 箭袋的物品id和模组id
看中间灰色部分(不是按CTRL那句),supplementaries:quiver,冒号前就是模组ID,后就是物品ID。
小括号内的最后一部分有点长,嵌套了两组方括号。
leather的翻译是皮革,string的翻译是线。
结合这两个翻译和前面讲的,再想想合成配方还缺什么部分,大家应该就能明白这是什么了。
同学们记住格式,比葫芦画瓢就是了。
因为本教程的定位是⑨也能看懂的教程,所以这一块当然不会深讲(其实是懒)
如果是四格有序配方的话,就删去5个格子,留下正方形样的四个格子就行。
最后,记得加分号。不然忘写分号的程序员的鬼魂晚上会到你家找你的。
2. 无序合成
//使用一个铁块合成9个铁
craftingTable.addShapeless("iron_block",<item:minecraft:iron_ingot>*9,[<item:minecraft:iron_block>]);
无序配方相比有序配方简单一些,主要区别在于后面写配方的时候不用写满9个格子。也不用分成三组由方括号分割的物品组,所有的物品都写在一个方括号里即可。
//使用一个 空瓶 和一个 充能赛特斯石英水晶 合成一个 雷电瓶
craftingTable.addShapeless("lightning_bottle",<item:irons_spellbooks:lightning_bottle>,
[<item:minecraft:glass_bottle>,<item:ae2:charged_certus_quartz_crystal>]
);
图2-3 无序合成样例
3. 删除配方
删除配方主要有两种用法,其一是直接删除合成指定某个物品的所有工作台配方,二是删除指定合成配方名的配方。
比如说我要删除9个铁合成一个铁块的那个配方,因为合成铁块的工作台配方只有这一个,所以两种方法都可以使用。
//方法1:删除合成一个物品的所有工作台配方
craftingTable.remove(<item:minecraft:iron_block>);
//方法2:知道配方名后只删除该配方
craftingTable.removeByName("minecraft:iron_block");
关于寻找某个配方的配方名:
比较简单的方法是主手持该物品的情况下使用指令/ct recipes hand,然后根据指引,去.minecraft/logs或.minecraft/versions/版本名/logs下打开crafttweaker.log文件,翻到最下面,找到这么一句话:
[**:**:**.***][INFO][CraftTweaker-Commands]: Dumping all recipes that out put 物品名!(或者直接使用Ctrl+F搜索Dumping all recipes然后找到最下面的一个)
从这一行开始,到下面的“‘配方列表’已生成!”的那一行为止,中间便是所有合成铁块的配方。
图2-4 使用/ct recipes hand来寻找指定配方
可以看到我们要找的配方在第212行,配方名为"minecraft:iron_block"。
删除配方还有几个其他的使用方式,不过这些就用的少了。
craftingTable.removeByModid(modid); //删除工作台上指定模组的所有合成配方
craftingTable.removeRecipeByInput(input); //删除配方中含有某物品的所有工作台配方
craftingTable.removeAll(); //删除工作台上的所有配方
到这里最基础的教程就已经结束了,增删已经讲完,改就是删了再加,查的方式也讲过了。不过本教程暂时还不会完结,还有一些进阶方法以及模组配方的更改预定也会再讲,下次更新预定。
进阶教程不会有了,因为作者发现高版本没人用Crt,都在用kubejs,因此决定弃坑。跑路咯