RetroConvert

RetroConvert

在ornithe环境(或作为java代理)中将Babric模组转换为Ornithe模组

管理

RetroConvert

将你的 Babric 模组放入 Ornithe 实例中,RetroConvert 会在启动时自动转换它们。

Babric 和 Ornithe 都在 Minecraft Beta 1.7.3 上运行 Fabric Loader,但它们使用不同的中间映射,因此它们的模组互不兼容。RetroConvert 解决了这个问题:它在启动时原地重写 Babric 模组的字节码,逐令牌地转换为 Ornithe 的 Calamus gen2 映射,无需重新编译、无需源代码、无需网络连接。

功能特性

  • 全自动:只需将 Babric .jar 文件与 RetroConvert 一起放入 mods 文件夹,然后启动即可。转换后的模组显示为 <名称>-ornithe.jar;原始文件会安全归档至 config/retroconvert/originals/。
  • 深度转换:重写类字节码、混入注解(包括无重映射表的字符串目标)、重映射表 JSON 文件、访问扩展器、fabric.mod.json、用于反射的字符串常量,以及嵌套的 jar-in-jar 模组(递归处理)。
  • 无可见重启:转换完成后,Fabric Loader 会在同一个 JVM 内基于转换后的模组文件夹重新启动。游戏会直接开始运行。
  • 智能检测:已移植的 Ornithe 模组不会被修改;对于包含嵌套 jar 的伞状模组(如 StationAPI),会按 jar 分别处理。
  • 官方构建替换:少数模组(如 StationAPI、GlassConfigAPI)改动过大,无法通过字节码重写转换;对于这些模组,会直接下载官方 Ornithe 构建版本,字节码转换作为离线备用方案。
  • 缓存机制:jar 文件通过 SHA-256 哈希作为键值,因此后续启动仅扫描新文件。

使用方法

  1. 将 RetroConvert 安装到 Ornithe b1.7.3 实例的 mods 文件夹中。
  2. 将你的 Babric 模组放入同一文件夹。
  3. 启动游戏。完成。

可选:Java 代理模式(零重启,即使首次启动也是如此)

在你的 JVM 参数中添加以下内容(Prism Launcher:实例 → 设置 → Java → JVM 参数):

-javaagent:mods/retroconvert-1.0.1+mcb1.7.3.jar

这会在 Fabric Loader 扫描文件夹 之前 转换模组 —— 完全不需要重新启动逻辑。在 Prism、MultiMC 和原版启动器的每个实例中均可使用同一行参数。

无界面使用

无需启动游戏即可转换任意模组文件夹:

./gradlew runConverter --args="/path/to/.minecraft/mods"

局限性

  • 仅支持 b1.7.3 版本 —— 这是有意为之,因为 Babric 只针对 b1.7.3。
  • 如果 Babric 模组依赖项解析失败,会在 RetroConvert 运行前导致游戏崩溃;请手动移除该 jar 文件。
  • 不要将归档的原始文件与转换后的输出文件放在一起 —— 加载器会检测到两个 ID 相同的模组。

许可证与源代码

源代码、问题跟踪器及完整技术细节可在 GitHub 上获取。