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} —— 占位符命名在本仓不统一,
不能假定所有模块的替换键相同。
相关条目
- 模块总览 - 10 模块对照
- module-mixin - 提供 Mixin 运行时的配套模块
- module-all - 会聚合本模块的
FMLCorePlugin