Skip to content

Chatterjay/EmiBridge

Repository files navigation

EmiBridge

将 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

About

将 JEI 配方桥接到 EMI 的模组框架,支持 NeoForge 1.21.1

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages