配方函数

配方函数可以决定配方输出结果,可以做到根据配方特定输入物品来决定输出物品将是怎样,还可以为配方是否能使用添加条件!

声明

配方函数需要三个参数,一般叫outinsinfo,不过你也可以重命名,顺序为这样就行。

  • out 是这个配方的输出(IItemStack)

  • ins:是一个映射,包含inputBox中所有标记过的材料(如何标记见IIngredient接口章

  • info:一个ICraftingInfo对象,包含合成时的一些信息,基本上只需要用player ZenGetter获取进行合成的玩家对应的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)

最后更新于

这有帮助吗?