IIngredient
IIngredient,材料,是 Mojang 的标准化的在配方中用于匹配物品的东西。
标签虽是高版本矿物系统的替代品,但由于标签的作用更大一点,除了用于类似矿辞功能的物品标签,还有方块标签等等。只有物品标签才能够转换到 IIngredient 中。一般情况下,物品标签可以自动转换到 IIngredient 中。但如有意外情况,可以手动用 asIIngredient
方法进行转换。
如果你需要声明数组,你需要 import
: import crafttweaker.api.item.IIngredient
工作台配方
不是 1.12 的 recipes.addShaped
的了,而是 craftingTable.addShaped
了。
有序合成
craftingTable.addShaped(recipeName, output, inputBox);
recipeName 是一个字符串,指定配方的名称(1.12 可省略,现在必须填!)
output 是配方的输出,只能是物品,不能是标签
inputBox 是 IIngredient 的二维数组,指定配方输入(没必要填满 3 * 3 的)
craftingTable.addShaped("recipe_test", <item:minecraft:dirt>, [
[<item:minecraft:diamond>], [<tag:items:minecraft:wool>]
]);
craftingTable.addShaped("recipe_test_2", <item:minecraft:gold_ingot>, [
[<item:minecraft:iron_ingot>, <item:minecraft:iron_ingot>, <item:minecraft:iron_ingot>],
[<item:minecraft:iron_ingot>, <item:minecraft:air>, <item:minecraft:iron_ingot>],
[<tag:items:minecraft:wool>, <item:minecraft:air>, <tag:items:minecraft:wool>]
]);
无序合成
craftingTable.addShapeless(recipeName, output, inputBox);
craftingTable.addShapeless("recipe_name", <item:minecraft:sand>, [<item:minecraft:diamond>, <tag:items:minecraft:planks>]);
镜像合成
镜像合成是特殊的有序配方,它的输入可以水平翻转。
craftingTable.addShapedMirrored(recipeName, output, inputBox);
移除合成
基本格式 | 作用 |
---|
craftingTable.removeRecipe(output);
| |
craftingTable.removeByName(name);
| |
craftingTable.removeRecipeByInput(input);
| |
craftingTable.removeByModid(modid);
| |
craftingTable.removeByRegex(regex);
| |
craftingTable.removeAll();
| |
craftingTable.removeRecipe(<item:minecraft:iron_ingot>); // 删除所有(成品为)铁锭的配方
craftingTable.removeByName("minecraft:crafting_table"); // 删除 ID 为 minecraft:crafting_table 的配方
craftingTable.removeRecipeByInput(<item:minecraft:iron_ingot>); // 删除所有铁锭参与的配方
craftingTable.removeByMod("thermal"); // 删除所有热力系列的配方
craftingTable.removeByRegex("minecraft:.*"); // 删除所有 ID 匹配指定正则的配方
熔炉
添加配方
furnace.addRecipe(name, output, input, xp, cookTime);
furnace.addRecipe("wool2diamond", <item:diamond>, <tag:items:minecraft:wool>, 1.0, 200);
cookTime: 整数,配方所需时间(Tip: 原版配方均为 200)
移除配方
基本格式 | 作用 |
---|
furnace.removeRecipe(output, input);
| |
furnace.removeRecipe(output);
| |
furnace.removeByName(name);
| |
furnace.removeByModid(modid);
| |
furnace.removeByRegex(regex);
| |
| |
熔炉变种
烟熏炉把 furnace
换成 smoker
,高炉换成 blastFurnace
即可。
熔炉燃料
item.burnTime = value;
<item:minecraft:diamond>.burnTime = 10000;
将钻石的燃料时间改为 10000,如果设置为 0 则为删除。
营火
添加配方
campfire.addRecipe(name, output, input, xp, cookTime);
campfire.addRecipe("wool2diamond", <item:minecraft:diamond>, <tag:items:minecraft:wool>, 1.0, 100);
cookTime: 整数,配方所需时间(Tip: 原版配方均为 100)
移除配方
与熔炉基本相同,把 furance
改成 campfire
即可。
切石机
添加配方
stoneCutter.addRecipe(recipeName, output, input);
stoneCutter.addRecipe("recipe_name", <item:minecraft:grass>, <tag:items:minecraft:wool>);
移除配方
与工作台基本相同,把 craftingTable
改成 stoneCutter
即可。
NBT
与 1.12 相同,你依旧可以用 withTag
来标记物品的 NBT,并将其作为配方的输入输出。
val a = <item:minecraft:iron_ingot>.withTag({Display: {Lore: ["233"]}});
craftingTable.addShapeless("ttt", <item:minecraft:sand>, [a, a, a]);
IngredientList
你可以将两个材料用 |
连接起来,这样这个位置就可以使用两个材料的任意一个。
在这里我们用了 asIIngredient
将标签转换为了材料。
var woolAndPlank = <tag:items:minecraft:wool>.asIIngredient() | <tag:items:minecraft:planks>.asIIngredient();
craftingTable.addShaped("recipe_test_3", <item:minecraft:gold_ingot> * 2, [
[<item:minecraft:iron_ingot>, <item:minecraft:iron_ingot>, <item:minecraft:iron_ingot>],
[<item:minecraft:iron_ingot>, <item:minecraft:air>, <item:minecraft:iron_ingot>],
[woolAndPlank, <item:minecraft:air>, woolAndPlank]
]);
这样第七个和第九个格子可以使用任意羊毛和木板。