module-compatfuture

基本信息

属性 值
modid unimixins-compatfuture
Java 文件 3
加载插件 io.github.legacymoddingmc.unimixins.compatfuture.CompatFutureCore
产出 …-compatfuture-1.7.10.jar
启用版本 Minecraft 1.7.10

功能

跨版本垫片。mcmod.info 自述 UniMixins module that makes the mod usable on 1.8.9 ~ 1.12.2。

原理是提供新版 FML 才有的 API 桩(stub),让面向 1.12.2 编译的 mod 能在 1.7.10 上加载 —— 即在本版本上「伪造」高版本的结构。

3 个类

类 作用
CompatFutureModule 空 @Mod 标记类
CompatFutureCore IFMLLoadingPlugin
stub/cpw/mods/fml/relauncher/IFMLLoadingPlugin 桩类

关键机制

⚠️ 桩类的包名是 io.github.legacymoddingmc.unimixins.compatfuture.stub.cpw.mods.fml.relauncher.IFMLLoadingPlugin, 而 module-compatfuture/build.gradle 通过 relocate 'io.github.legacymoddingmc.unimixins.compat.stub.cpw', 'cpw' 把它重定位回官方包名 cpw.mods.fml.relauncher。

也就是说:源码里写在私有 stub 包下,构建时改名成 看起来像 FML 官方 API 的样子。

⚠️ 这是有意伪造包名的 reloc,路径前缀还不一致 (build.gradle 写 compat.stub.cpw,实际源码目录是 compatfuture/stub/cpw)。 grep 源码时按 compat.stub.cpw 搜搜不到。

实现要点

⚠️ 本模块的 manifest 没有 TweakClass,只有 FMLCorePluginContainsFMLMod + ForceLoadAsMod + FMLCorePlugin。 即它是纯加载插件,不引入 Mixin 运行时(那由 module-mixin 提供)。

⚠️ mcmod.info 里本模块的 version 与 mcversion 用的是 ${version} / ${minecraft_version} 占位符,而多数其它模块用 ${extraVersion} / ${mcversion} —— 占位符命名在本仓不统一, 不能假定所有模块的替换键相同。

相关条目