本教程意在抛砖引玉,填补高版本教程不足的漏洞。本教程适用于改动轻的或新手入门。

官方文档推荐看一下

1. 安装

下载Crafttweaker最新版本(1.18.2)放入mod文件夹,加载一遍游戏后在.minecraft目录下会出现script文件夹,这里就是脚本存放的地方。

2. 使用

打开script文件夹新建文本文档,命名如”test”,然后,修改后缀为zs。

Tips:script文件夹下的子文件夹中脚本也会加载。

工作台

基本格式:

1.顺序合成  

craftingTable.addShaped(recipeName, output, ingredients, recipeFunction);

craftingTable.addShaped("recipe_name", output, [

    [input_1, input_2,input_3],

    [input_4, input_5,input_6],

    [input_7, input_8,input_9]

]);

当然,不是每个都要填满,只填一行是合法的。还可以加函数,不过不在本次讨论范围。

Tips:留空的地方填<item:minecraft:air>;还有recipe_name不能有大写。

比如铁剑可以这么写:

craftingTable.addShaped("ironsword",<item:minecraft:iron_sword>,[

      [<item:minecraft:air>,<item:minecraft:iron_ingot>,<item:minecraft:air>],

      [<item:minecraft:air>,<item:minecraft:iron_ingot>,<item:minecraft:air>],

      [<item:minecraft:air>,<item:minecraft:stick>,<item:minecraft:air>]

]);

游戏中手持物品输入/ct hand 读取物品信息,包括名称,标签,矿物词典。

2.无序合成

craftingTable.addShapeless(recipeName, output, ingredients, recipeFunction);

比如,一个沙砾和4个燧石

//Gravel      这是注释

craftingTable.addShapeless("flint", <item:minecraft:flint>*4,

      [<tag:items:forge:gravel>

]);

3.镜像有序合成  

craftingTable.addShapedMirrored(recipeName, output, ingredients, recipeFunction);

允许对称摆放。

4.熔炉等

//熔炉(在官方文档里有一个定义函数的方法,但我不太清楚,感兴趣的可以去看看)

furnace.addJsonRecipe("recipe_name", {

 ingredient: <item:minecraft:gold_ore>,

 result: <item:minecraft:cooked_porkchop>.registryName,

 experience: 0.35 as float,  //经验

 cookingtime:100   //烹饪时间

 });

//高炉

blastFurnace.addJsonRecipe("recipe_name", {

 ingredient: <item:minecraft:gold_ore>,

 result: <item:minecraft:cooked_porkchop>.registryName,

 experience: 0.35 as float,

 cookingtime:100

 });

//烟熏炉

smoker.addJsonRecipe("recipe_name", {

 ingredient: <item:minecraft:gold_ore>,

 result: <item:minecraft:cooked_porkchop>.registryName,

 experience: 0.35 as float,

 cookingtime:100

 });

//篝火

campfire.addJsonRecipe("recipe_name", {

 ingredient: <item:minecraft:gold_ore>,

 result: <item:minecraft:cooked_porkchop>.registryName,

 experience: 0.35 as float,

 cookingtime:100

 });

//切石机

stoneCutter.addJsonRecipe("recipe_name", {

 ingredient: <item:minecraft:gold_ore>,

 result: <item:minecraft:cooked_porkchop>.registryName,

 experience: 0.35 as float,

 cookingtime:100

 });

模组支持

Crafttweaker1.18直接支持的模组有AromoreableMobs,Botania,Createtweaker,Initialinventory,JEITweaker,RecipeStage,SolarCraft,SushiGoCrafting

通用模组支持方法

/ct dump recipetypes获取模组合成类型,如Powah充能台<recipetype:powah:energizing>

这将保存在log文件中。

打开mod的jar文件如Powah-3.0.2.jar。定位到\data\powah\recipes\

以充能为例,打开\energizing,打开blazing_crystal.json.

这是内容:

{

  "type": "powah:energizing",

  "ingredients": [

{"item": "minecraft:blaze_powder"},

{"item": "minecraft:blaze_powder"},

{"item": "minecraft:blaze_powder"},

{"item": "minecraft:blaze_powder"}

  ],

  "energy": 120000,

  "result": {

"item": "powah:crystal_blazing"

  }

}

参照他的格式,我们添加用一个铁块,一钻石,一晶制铀在充能台上合成一个下界合金锭

<recipetype:powah:energizing>.addJsonRecipe("neingot",

{

  "type": "powah:energizing",

  "ingredients": [

   {"item": "minecraft:iron_block"},

   {"item": "minecraft:diamond"},

   {"item": "powah:uraninite"}

   ],

 "energy": 1000000,

  "result": {

  "item": "minecraft:netherite_ingot",

  "count" : 2 

  }

});

可以知道<recipetype:powah:energizing>.addJsonRecipe(“recipe_name”,…)是基本格式,后面就因模组而异。

当然,CraftTweaker还提供了接口功能,这就不必每次都输入一大串json了。

这里推荐大家将脚本分类便于管理。

保存好之后,打开MC进入世界查看配方是否正确,如有误,则根据报错修改(日志中有,启动游戏时对话框也有),修改完成后退出重进输入/reload重载。

CraftTweaker还有很多用法,功能非常强大,大家多看官方文档,他随时有可能变化(我写教程时只有1.18的文档),最后希望对你有用,希望大佬多多指点。

Happy tweaking!