ModularMachinery Wiki(ZH)/配方排序

Eicy留言 | 贡献2022年5月28日 (六) 10:57的版本 (分类:ModularMachinery)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

你也许想给一台机械添加一个配方 。比如输入 1 coal + energy 输出 1 iron. 现在你想提高一下玩家的游戏体验,你就可以定义一个输入1 coal+ 1 bucket of lava + energy 输出4 iron的配方。

但是这么整会出大问题如果玩家提供的泛输入物品是 coal + lava + energy, 那么机械就只会先检查 1 coal + energy => 1 iron 作为运行配方,当输入物品满足此配方时只会输出1 iron且不会将lava作为输入物品使用,也就是说配方之间会产生冲突。

一般情况下,mod会根据配方需要的输入物品的数量和类型对配方进行排序。所以在上面描述的配方匹配失败一般不会发生,如果你碰到了上面描述的问题,我建议你去买彩票。

所以我们应该动动脑子想一下怎么避免这样的情况。我们都知道优先级这个东西,那么给配方定义优先级就是。这样,你就可以"告诉"mod哪些配方优先检查,哪些后检查. (JEI的配方预览显示顺序也会被改变!)

优先级数字越大,检查顺序越靠前。

样例:

[...]
"machine": "...",
"registryName": "...",
"recipeTime": 20,
"priority": 2,
"requirements": [
[...]

"priority"即为优先级(只接受整数型数字),如果不定义优先级那么"priority"为0.


CraftTweaker中优先级如此配置:

mods.modularmachinery.RecipeBuilder.newBuilder(String 配方注册名, String 机械注册名, int 运行Tick数, int 优先级);

Tr:Eicy