2.3 非标准配方修改


本节将介绍非标准配方的修改,包括非工作台配方、修改输入物品状态等(如原版中蛋糕的合成方式)

例子1:修改机械动力中粉碎轮的合成配方

注意!KubeJS现已有机械动力的拓展mod,无需使用该方法修改!

机械动力的修改教程详见本教程12.3部分

event.custom({
    type: 'create:crushing',//指定合成方式为粉碎轮
    ingredients: [
      Ingredient.of('minecraft:oak_sapling').toJson()//输入内容
    ],
    results: [//这里的 results(包括所有类似的位置的双引号都是可加可不加的)
      Item.of('minecraft:apple').toResultJson(),//100%输出苹果
      Item.of('minecraft:carrot').withChance(0.5).toResultJson()//50%输出苹果
    ],
    processingTime: 100 //所用时间
  })
//若上述配方使用Json格式添加(即原版数据包格式)
{
  "type": "create:crushing",
  "ingredients": [
    {
      "tag": "minecraft:oak_sapling"
    }
  ],
  "results": [
    {
      "item": "minecraft:apple",
      "count": 1
    },
    {
      "item": "minecraft:carrot",
      "chance": 0.5
    }
  ],
  "processingTime": 100
}

如果你使用自定义的配方格式,你必须使用类似于原版Json数据包的格式,也就是必须带有"type": "mod:recipe_id"!(比如上文中提到的"type": "create:crushing"). 通过这种方式,你可以为使用原版配方系统的任何配方处理器添加配方,即使它不兼容KubeJS. KubeJS提供的简写格式为:

{item: '物品注册名', count: 数量}Item.of('物品注册名', 数量).toResultJson() {item: '物品注册名'} / {tag: '标签名'}Ingredient.of('物品注册名').toJson()Ingredient.of('#标签名').toJson()

实际上不就是Json套壳吗

下面我们再看一个例子

例子2:为Extended Crafting添加配方

合成拓展 (Extended Crafting) 介绍(mcmod)

例子3:修改输入物品状态

以下是一些内置的函数

功能
函数格式

为输入物品减去耐久

.damageIngredient(要修改的物品(输入过滤器), 减去的耐久值(整形))

替换输入物品(比如桶)

.replaceIngredient(要替换的物品(输入过滤器), 替换的物品(物品组))

保持输入物品不变

.keepIngredient(要保留的物品(输入过滤器))

自定义事件(Server StartUp脚本注册)

.customIngredientAction(要操作的物品(输入过滤器), 自定义事件ID(字符串))

其中,所谓的输入过滤器可接受如下类型的内容

内容
示例

ItemStackJS

'minecraft:dirt', Item.of('minecraft:diamond_sword').ignoreNBT() 等

合成输入索引

整形,如0,1,2......

对象

{item: 'something', index: 0}

你可以在整个配方修改脚本的最后加上它们来实现你想要的效果,比如

下面是几个例子

这有帮助吗?