新版本里,只要 mods/ 下的 jar 通过 ForgeSPI 提供了下列任一服务,就会被 ModDirTransformerDiscoverer 收录,并被 ModsFolderLocator 无条件从 mod 扫描结果里排除:
cpw.mods.modlauncher.api.ITransformationService
net.minecraftforge.forgespi.locating.IModLocator
net.minecraftforge.forgespi.locating.IDependencyLocator
net.minecraftforge.fml.loading.ImmediateWindowProvider
没有任何"两者皆可"的开关。 后果是模组开发者一旦实现 ForgeSPI(拿类加载优先级、做兼容修复、 注入 transformer),这个 jar 就不再作为 Mod 出现 —— 没有 @Mod、没有注册表、没有事件总线, mods.toml 直接被忽略。
因此想要让一个jar同时作为service和mod加载,必须从ModDirTransformerDiscoverer.found删除自己的jar,以及从ModLauncher 已构造的 Configuration中删除自己的模块记录