2.3 非标准配方修改
关于ProbeJS提示
带有🔎符号的段落代表该段内容ProbeJS中有语言文档,或使用ProbeJS编写较为简便。
本节将介绍非标准配方的修改,包括含的NBT配方、自定义配方格式和修改输入物品状态等(如原版中蛋糕的合成方式)。
一、含NBT配方
event.shaped('minecraft:book', [
'CCC',
'WGL',
'CCC'
], {
C: '#forge:cobblestone',
L: Item.of('minecraft:enchanted_book', '{StoredEnchantments:[{lvl:1,id:"minecraft:sweeping"}]}').weakNBT(),
// 尽管格式是相同的,但是对于附魔来说,你还可以将其简写成如下形式:
W: Item.of('minecraft:enchanted_book').enchant('minecraft:respiration', 2).weakNBT(),
G: '#forge:glass'
})二、自定义配方格式
语句:event.custom({json}),{json}中必须包括"type": "mod:recipe_id"。
该修改方式适用于所有使用原版配方系统的Recipe handler,具体的JSON格式可以参考模组内配方文件(多见于mod.jar/data/modid/recipes/目录下)。
对于这种类型的配方,KubeJS提供了一些简写方法:
例如,你可以使用
Item.of('x', 4).toJson()来替代{item: 'x', count: 4},使用
Ingredient.of('x').toJson()或Ingredient.of('#x').toJson()来替代{item: 'x'}或{tag: 'x'}。
1、修改机械动力中粉碎轮的合成配方
注意!KubeJS现已有机械动力的拓展mod,无需使用该方法修改!
2:为Extended Crafting添加配方
三、修改输入物品状态
功能
函数格式
为输入物品减去耐久
.damageIngredient(IngredientFilter 要修改的物品, 整形减去的耐久值)
替换输入物品(比如桶)
.replaceIngredient(IngredientFilter 要替换的物品, ItemStack 替换的物品)
保持输入物品不变
.keepIngredient(IngredientFilter 要保留的物品)
设定部分烧炼配方消耗时间
.cookingTime(int 时间)
自定义事件(Server StartUp脚本注册)
.customIngredientAction(IngredientFilter 要操作的物品, 字符串 自定义事件ID)
其中,IngredientFilter可以为:
内容
示例
ItemStack
'minecraft:dirt', Item.of('minecraft:diamond_sword').ignoreNBT() 等
合成输入索引
整形,如0,1,2......
对象
{item: 'something', index: 0}
⚠1.19.2的KubeJS将原版的合成和它自己引入的,支持各种操作的合成逻辑分开了。比如,使用event.recipes.minecraft.crafting_shaped添加的配方将无法使用.keepIngredient、.damageIngredient来进行特殊合成的设置。要使其正常工作,你需要使用形如event.recipes.kubejs.shaped的语句添加修改。
1、修改输入物品状态
2、自定义输入物品配方事件
实例:在工作台中使用附魔书为工具附魔,附魔后清除附魔书带有的附魔。
kubejs\startup_scripts\CustomIngredientAction.js
kubejs\server_scripts\Recipe.js
四、修改输出物品状态
相较于输入物品修改,输出物品的修改较为简单。
修改输出物品状态
.modifyResult(ModifyRecipeResultCallback 输出物品修改回调函数)
🔎其中,ModifyRecipeResultCallback具有两个参数ModifyRecipeCraftingGrid 和 ItemStack,其中前者支持以下方法:
.player()
获取合成物品的玩家
Player
.find(ingredient 寻找物品, int 跳过的数字)
获取符合条件的物品
ItemStack
...
...
详见ProbeJS生成文档
需要注意的是,ModifyRecipeResultCallback需要一个返回值,即经过修改的输出物品
下面给出一个基础例子:使用红石粉无序合成红石火把,如果用户名是Wudji_NotFound,就为这个火把附魔击退 X。
Last updated