IIngredient接口
让我们重新看到最基本的合成添加语句:
recipes.addShaped(recipeName, output, inputBox);
实际上,output是IItemStack,而inputBox则是IIngredient的二维数组。
IIngredient——材料,它用来匹配一个合成的材料,输入或输出。IIngredient是IItemStack(物品堆)、IOreDictEntry(矿物辞典)、ILiquidStack(流体堆)的接口。这意味着IIngredient可用的方法,IItemStack、IOreDictEntry、ILiquidStack一样可用。对于一个需要IIngredient为参数的函数/方法或者定义IIngredient数组,也可以用IItemStack、IOreDictEntry、ILiquidStack输入。(你加合成的时候,用的不就是IItemStack或者IOreDictEntry嘛)实际上前文的物品条件和物品转换器就是针对IIngredient的。(对于流体不可用,不过我想没人对流体加条件)
需要import crafttweaker.item.IIngredient;导入有关包。
标记
使用marked方法用一个字符串标记一个材料,在下文的配方函数和配方事件中将会用到。
recipes.addShapeless("test002", <minecraft:stone:2>,
[<minecraft:iron_ingot>.marked("iron"),<minecraft:dirt>]);数量
你们早就知道用* 数量来表示数量吧。你可以使用amount ZenGetter获取一个材料对象的数量。
或
用|将两个材料连接起来,使得一个配方的某个槽可以使用材料A或材料B,而不用写多个配方。在某些时候,比OD更好用!
recipes.addShaped("te_frame_machine", <thermalexpansion:frame>,
[[<ore:ingotIron>|<ore:ingotAluminum>,<enderio:item_basic_capacitor>,<ore:ingotIron>|<ore:ingotAluminum>],
[<ore:blockGlass>,<ore:gearTin>,<ore:blockGlass>],
[<ore:ingotIron>|<ore:ingotAluminum>,<ore:blockGlass>,<ore:ingotIron>|<ore:ingotAluminum>]]);获得匹配的物品和流体
用items或itemArray ZenGetter获取匹配的物品,返回IItemStack列表或数组。
用liquids ZenGetter获取匹配的流体,返回ILiquidStack列表。
最后更新于
这有帮助吗?