本篇教程由作者设定使用 CC BY-NC 协议。

该教程适用于CraftTweaker,未知API是否向下兼容

教材来自Bilibili的"酒石酸酱"的投稿视频"Minecraft模组介绍-CraftTweaker,MineTweaker,ModTweaker全介绍-12p"(av13038655)

该文章为原创,前面的都是按照943dalao的视频来做的qwq

部分例题来自mcbbs的"http://www.mcbbs.net/thread-304800-1-1.html"

该教程由(咸猫)Chenwe_i_lin以个人名义发布,使用CC协议保护该文章,且文章全部由"署名 (BY) - 非商业性使用 (NC)"的声明协议保护,并允许其他人对其进行建设性修改

==================================================

当你想添加一个神奇的合成:

recipes.addShaped(<minecraft:stick> * 4,

     [[<minecraft:planks>, null, null],

      [null, <minecraft:planks>, null],

      [null,null,null]]);

//额外的木棍配方XD

然后你在游戏里/mt reload,自信满满的在物品栏里拖出几个木板上去...怎么不能用!

哦你的问题是这样的:MC中一个英文ID可以指代好几个你看起来不一样的物品,原理就是附加值

解决方法:在<minecraft:planks>后加入":*",即加入通配符

recipes.addShaped(<minecraft:stick> * 4,

     [[<minecraft:planks:*>, null, null],

      [null, <minecraft:planks:*>, null],

      [null,null,null]]);

//强化的额外木棍配方XD

这样既可,该问题到此结束

============分割线================

你在你所谓"重平衡,重魔改"的整合包内加入了又一个问题百出的脚本

recipes.addShaped(<minecraft:iron_pickaxe>,

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

      [null, <minecraft:stone_pickaxe>, null],

      [null,null,null]]);

//又一个机智的镐升级配方OWO

当你手上握着一把你刚刚切换为生存来测试CS3新增矿物的挖掘速度的已经有损耗的石稿,以刚才你设定的配方放入工作台...

WTF怎么又不能用了!

MC里有一个神奇的机制:损耗值,他使你的工业行程缓慢,让你的肝变得"满身疮痍"...额扯远了,总之,如何使损耗的物品进入你的合成配方呢?

其实,早在MT时代MT就给你了个解决方案,就是在你的物品标记后加入一个方便的东西,如:

<minecraft:iron_pickaxe>.anyDamage()

这个"anyDamage"意思就是"任何损耗的值",所以只要在物品标记后加入这个标识,你就可以实现类似上面的功能了

修改后的有错误的例题:

recipes.addShaped(<minecraft:iron_pickaxe>,

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

      [null, <minecraft:stone_pickaxe>.anyDamage(), null],

      [null,null,null]]);

=================又一个分割线=================

你想要这样:

"1木头换2木板,使用石斧变3木板,铁斧4木板,金斧5木板,钻斧头6木板"

但那样你会累死的...怎么办呢?CT提供了一个少为人知的功能:循环语句功能

原来是这样的:

recipes.addShaped(..........,................,..................,..................)

recipes.addShaped(.........)

recipes.addShaped(...........)

怎么样,是不是看起来就费劲的要死?你可以这样,copy每个人都能做到,但那样你会很累的....

贴心的MT作者给了一个这样神奇的功能,你怎么可以不知道?

该合成可能需要"minetweaker.item.IItemStack"扩展的支持(重要!):

import minetweaker.item.IItemStack;

然后我们的创建一个存储所有木头的数组变量:

var mclogs = [<minecraft:log>, <minecraft:log:1>, <minecraft:log:2>, <minecraft:log:3>, <minecraft:log2>, <minecraft:log2:1>] as IItemStack[];

后面的" as IItemStack[];"意义不明

再创建一个存储所有木板的数组变量:

var mcplanks = [<minecraft:planks:0>, <minecraft:planks:1>, <minecraft:planks:2>, <minecraft:planks:3>, <minecraft:planks:4>, <minecraft:planks:5>] as IItemStack[];

两个神奇的数组变量就OJBK了,建议你先Ctrl+S保存下

为了方便,再加入几个变量来代表原版的几个斧头:

var stoneAxe = <minecraft:stone_axe>.anyDamage().transformDamage();

var ironAxe = <minecraft:iron_axe>.anyDamage().transformDamage();

var goldenAxe = <minecraft:golden_axe>.anyDamage().transformDamage();

var diamondAxe = <minecraft:diamond_axe>.anyDamage().transformDamage();

在这里的"transformDamage()"意思是合成后物品不消耗且减少其耐久

然后是该小节的重中之重,即for循环:

for i, log in mclogs {

//i是指临时变量,指该循环已经执行了的次数,不要用这个作为你的变量名!log意思是那些木头,在这里那些木头可以相对应了!(前提是你数组顺序是对的,是的,数组分顺序)

    var plank = mcplanks[i];

//这个变量可以不用的...接下来就是普通的删改了

    recipes.removeShapeless(plank, [log]);

    recipes.addShapeless(plank * 2, [log]);

    recipes.addShapeless(plank * 3, [log, stoneAxe]);

    recipes.addShapeless(plank * 4, [log, ironAxe]);

    recipes.addShapeless(plank * 5, [log, goldenAxe]);   

    recipes.addShapeless(plank * 6, [log, diamondAxe]);

}

//重要!最后这个符号一定要!

本小节完结.

本文章暂时完结.