跨Mod加载器开发,本身就不是一件容易的事情,不同加载器之间API不互通,基本上能用的只有Mixin与Minecraft自带的方法。
Forge有一套完善的事件总线,其支持的事件也是最多的。
Fabric虽然也有类似的事件Callback,而且性能比事件总线要好,但是缺乏一个包装类,以至于在事件分发过程中想要修改多个基本类型参数是一件很难的事情。
想要做到最大兼容性,我们自然需要有一个将我们的事件包装转变为可以被不同模组加载器分发的过程,在此我们称之为翻译。
在此我们引入了一个转换器Converter的概念,用来将Forge事件来转换为包装器。
Fabric的情况有些特殊,它有很多事件,但具体的处理方式与入口点都与Forge迥异,在此我们参考了NeoForge的事件总线,设计了一套包装事件总线,依靠Mixin来直接发送包装器事件。