配方函数
配方函数可以决定配方输出结果,可以做到根据配方特定输入物品来决定输出物品将是怎样,还可以为配方是否能使用添加条件!
声明
配方函数需要三个参数,一般叫out 、ins 和info,不过你也可以重命名,顺序为这样就行。
out是这个配方的输出(IItemStack)ins:是一个映射,包含inputBox中所有标记过的材料(如何标记见IIngredient接口章)info:一个ICraftingInfo对象,包含合成时的一些信息,基本上只需要用playerZenGetter获取进行合成的玩家对应的IPlayer对象 和inventoryZenGetter获取合成时的物品栏ICraftingInventory对象。
配方函数需要返回一个IItemStack作为配方实际的输出。若为null即为没有输出,不可合成。
例子
例子一:假合成(JEI能看到,其实上不能用)
recipes.addShapeless("fake_recipe",<minecraft:diamond>,[<ore:dirt>,<ore:dirt>,<ore:dirt>],
function (out,ins,info) { // 声明配方函数
return null; // 直接返回null,不输出
},
// 不需要配方事件,所以设置为null
null);例子二:需要在下界才能使用的合成
recipes.addShapeless("nether_recipe",<minecraft:netherrack>,
[<ore:cobblestone>,<ore:cobblestone>,<ore:cobblestone>],
function (out,ins,info) {
return info.player.world.dimension == -1 ? out : null;
},
null);例子三:继承原有NBT的升级配方(即可以做到升级镐后保留原来的附魔)
例子四:修复镐(Meta值操控)
例子五:NBT操控(这是我测试匠魂凿子转换为iChisel的脚本,不做注释了,你需要对原来的输入包含的NBT结构有足够了解,记住/ct hand)
最后更新于
这有帮助吗?