本篇教程由作者设定使用 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]);
}
//重要!最后这个符号一定要!
本小节完结.
本文章暂时完结.