将 JEI 配方桥接到 EMI 的模组框架,支持 NeoForge 1.21.1
EmiBridge 是一个核心框架模组,自动将 JEI(Just Enough Items)中注册的配方翻译为 EMI(Emi Mod Integration)可识别的配方格式,实现 JEI 配方在 EMI 中的完整展示。同时提供适配器接口,供其他模组实现自定义配方翻译。
- 自动提取 — 扫描所有 JEI 配方分类,自动翻译为 EMI 配方
- 适配器接口 — 模组可通过实现
IRecipeAdapter自定义配方翻译逻辑 - 去重系统 — 智能检测 EMI 已注册的配方,避免重复
- Native 模式:自行扫描 EMI 配方索引
- Hybrid 模式:结合 EMI API 扫描
- 内置黑名单 — 适配器可声明需要过滤的配方模式(JSON 配置)
- 黑名单配置 — 支持配置文件(emibridge-common.toml)和适配器内置黑名单
- 缓存 — 配方结果可缓存到磁盘,加速启动
- 调试命令 —
/emibridge status,/emibridge stats,/emibridge reload
- NeoForge >=21.1.230
- JEI 19.27.0.340+
- EMI 1.1.24+1.21.1
实现 IRecipeAdapter 接口,使用 @EmiBridgeAdapter 注解:
@EmiBridgeAdapter(modId = "mymod", priority = 100)
public class MyAdapter implements IRecipeAdapter<MyRecipe> {
@Override
public String getModId() { return "mymod"; }
@Override
public List<String> getCategoryIds() { return List.of("mymod:category"); }
@Override
public RecipeIR translate(MyRecipe recipe, String categoryId) {
return RecipeIR.builder()
.id("mymod:/category/" + System.identityHashCode(recipe))
.sourceMod("mymod")
.categoryKey("mymod:category")
.addOutput(new IngredientSlot(List.of(new EmiIngredientWrapper("minecraft", "diamond", 1))))
.build();
}
}内置黑名单:在 resources 目录放 MyAdapter_blacklist.json:
{ "patterns": ["/category_to_skip"] }| 命令 | 说明 |
|---|---|
/emibridge status |
查看翻译状态和去重统计 |
/emibridge stats |
查看配方统计和适配器列表 |
/emibridge stats recipes [modId] |
查看指定模组的配方详情并导出 CSV |
/emibridge reload |
重新加载配置(需要 OP) |
GNU AGPL 3.0