1. IRecipeFactory
Forge 在原版的 JSON 合成表的基础上提供的五种扩展功能之一。顾名思义,这个接口代表一个 IRecipe
的抽象工厂,本质上是个反序列化器,用于从 JSON 中构建一个 IRecipe
实例。关于实现一个新的 IRecipe
的要求可参考这一章。
package my_mod;
public class MyRecipeFactory implements IRecipeFactory {
@Override
public IRecipe parse(JsonContext context, JsonObject json) {
return new MyInsaneRecipe();
}
}
不过要想使用它,就需要先在 assets/[modid]/recipes/_factories.json
中声明:
{
"recipes": {
"my_recipe": "my_mod.MyRecipeFactory"
}
}
注意到这里声明的是完整的类名;内部类需要用 $
自不必说。
这样一来,在写 Recipe JSON 的时候,就可以通过 modid:factory_id
这样的形式来指明“使用自己的 Recipe Factory”了:
{ "type": "my_mod:my_recipe" }
世界清静了。