2.2 配方的添加,修改和移除
关于ProbeJS提示
带有🔎符号的段落代表该段内容ProbeJS中有语言文档,或使用ProbeJS编写较为简便。
一、配方事件
要修改配方,你需要在ServerEvents.recipes
事件下注册一个“事件监听器”,并在该事件下完成所有修改,例如:
以下为配方事件支持的部分方法:
forEachRecipe(RecipeFilter 过滤器, Consumer consumer)
对所有满足过滤器的配方进行修改
void
countRecipes(RecipeFilter 过滤器)
返回满足过滤器的配方个数
整形
containsRecipe(RecipeFilter 过滤器)
返回是否存在满足给定过滤器的配方
布尔值
remove(RecipeFilter 过滤器)
移除满足给定过滤器的配方,并返回移除个数
整形
replaceInput(RecipeFilter 过滤器, IngredientMatch 被替换物品, Ingredient 替换物品)
对所有满足过滤器的配方进行修改:替换输入物品,并返回操作个数
整形
replaceOutput(RecipeFilter 过滤器, IngredientMatch 被替换物品, ItemStack 替换物品)
对所有满足过滤器的配方进行修改:替换输出物品,并返回操作个数
整形
二、配方添加
🔎 event.recipes
可以获取所有存在的配方类型(DocumentedRecipes
),其属性为命名空间。你可以通过这种情况修改所有支持的配方,例如:
以下为一些简写方法:
1、有序配方添加
语句:event.shaped(输出物品 , 形状 , 输入物品)
例子:用 4个海绵 和 4个钻石 合成 3个石头
2、无序配方添加
语句:event.shapeless(输出物品 , 输入物品)
例子:用 1个海绵 和 1个带有木板标签的物品 合成2个石头
3、锻造台配方
语句:event.smithing(输出物品, 目标物品, 消耗物品)
例子:苹果 + 金锭 -> 金苹果
4、熔炉配方
语句:event.smelting(输出物品, 输入物品)
例子:1个金苹果 经熔炉烧炼得到 32个胡萝卜
5、烟熏炉配方
语句:event.smoking(输出物品, 输入物品)
例子:玻璃经烟熏炉烧炼得到遮光玻璃
注:燃料需要在烧炼事件中进行更改
6、营火配方
语句:event.campfireCooking(输出物品, 输入物品)
例子:木棍经过营火烧炼得到火把
7、切石机
语句:event.stonecutting(输出物品, 输入物品)
例子:1个带有木板标签的物品合成3个木棍
8、高炉
语句:event.blasting(输出物品, 输入物品)
例子:金苹果经过高炉烧炼得到3个苹果
三、配方过滤器及配方的修改和移除
1、配方过滤器
配方过滤器可在配方修改或移除中用于匹配符合条件的配方,其包括以下类型
{output:'物品'}
匹配输出物品
{output: '#minecraft:wool'}
{input:'物品'}
匹配输入物品
{input: '#forge:dusts/redstone'}
{mod:'模组ID'}
匹配模组ID
{mod: 'kubejstutorial'}
{recipe:'配方ID'}
匹配配方ID
{mod: 'xplusmodpack'}
{type: '配方类型'}
匹配配方类型
{type: 'minecraft:campfire_cooking'}
{条件1:"值",条件2:"值"}
组合过滤器(与)
{output: 'minecraft:cooked_chicken', type: 'minecraft:campfire_cooking'}
[{条件1:"值"}, {条件2:"值"}]
组合过滤器(或)
[{type:'minecraft:smelting'}, {type:'minecraft:blasting'}]
{not:{条件:"值"}}
组合过滤器(非)
{not:{type:"minecraft:smelting"}}
上表中组合过滤器依旧可以多层叠加,从而实现更复杂的条件判断,详见下方示例。
2、配方修改
event.replaceInput(配方过滤器, 被替换物品, 替换物品)
修改输入物品
event.replaceOutput(配方过滤器, 被替换物品, 替换物品)
修改输出物品
例子:在输出物品为minecraft:ladder的配方中,将输入物品中的木棍替换为树苗
例子:在所有配方中,将输出物品中的minecraft:stick替换为minecraft:oak_sapling
例子:在所有无序配方中,将minecraft:iron_nugget替换为minecraft:gold_nugget
3、配方移除
语句:event.remove()
四、配方ID
mc中所有的配方都有一个随机的ID,但以下配方被指定了一个唯一的静态ID,可用于编写Patchouli手册或覆盖已存在配方等。
你可以通过JEI/REI来便捷地查询配方的ID。
最后更新于
这有帮助吗?