Forge反射模组开发:用Stub绕过@Mod注解导入(补充篇)
作者声明:创作过程中使用了AI辅助
上篇聊了反射框架,但有个前置问题没解决:既然整个反射体系的前提是“不能引入任何MC依赖”,Forge包又和Minecraft强绑定,那主类上的@Mod注解怎么过编译?
答案就是Compile-Time Stub。
为什么必须用Stub?
在纯反射框架下,由于Forge包与Minecraft强绑定的特性,我们不能引入真的Forge包。
但Forge模组入口点是由@Mod注解定义的,这时候就要用到Stub。
Stub的本质是:给编译器一个假契约,运行时由Loader提供真类。
关键要点
CodeBlock Loading...
三条铁律:
- 包名精确匹配
net.minecraftforge.fml.common.Mod - 绝不打包进JAR —— Gradle里
jar { exclude 'net/minecraftforge/**' } - 不写default值、不加多余属性 —— 保持最小契约,防止误用
一句话总结
Stub不是“简化版Forge API”,而是编译期占位符。它让你在不触碰任何真实Forge类的情况下,依然能写出合法的@Mod标注类。配合上篇的反射体系,才算真正闭环。