module-spongemixins

基本信息

属性 值
modid spongemixins
Java 文件 5
加载插件 无
产出 …-spongemixins-1.7.10.jar
启用版本 Minecraft 1.7.10

功能

SpongeMixins 的 1.7.10 模拟层。mcmod.info 自述 UniMixins module that provides an emulation of SpongeMixins (version: ${extraVersion} from GTNHMixins).

即:让 Sponge 生态(SpongePowered 系 mod)以为自己在用官方 SpongeMixins, 实际被重定向到 GTNHMixins。

5 个类

文件 作用
ru/timeconqueror/spongemixins/SpongeMixins.java @Mod 主类
ru/timeconqueror/spongemixins/core/SpongeMixinsCore.java 核心逻辑
ru/timeconqueror/spongemixins/MinecraftURLClassPath.java 类路径
com/gtnewhorizon/gtnhmixins/GTNHMixins.java 去 @Mod 的 GTNHMixins 副本
com/gtnewhorizon/gtnhmixins/MinecraftURLClassPath.java 与 gtnhmixins 版完全相同

SpongeMixins 主类的特殊之处

@Mod(modid = SpongeMixins.MODID, version = "2.0.1", name = SpongeMixins.NAME, acceptableRemoteVersions = "*")

⚠️ 本模块是全仓唯一把版本号写成字面量 "2.0.1" 的 @Mod —— 其余 9 个模块全是 @VERSION@ 占位符或 GRADLETOKEN_VERSION 常量。 说「所有模块版本都是占位符」会漏掉这个例外。

⚠️ SpongeMixins.NAME 的值为 "SpongeMixins Loader"(带 Loader 后缀), 而 MODID = "spongemixins"。

⚠️ 源码中 NAME 与 MODID 两个常量都带 @deprecated use {@link GTNHMixins#NAME} instead / MODID 标注, 即 SpongeMixins 是待废弃的兼容层,GTNHMixins 才是正解。

实现要点

⚠️ manifest 里没有 FMLCorePlugin,只有 TweakClass + ForceLoadAsMod

  • FMLCorePluginContainsFMLMod。因此:
  1. 本模块不是 IFMLLoadingPlugin,不走 FML 加载插件机制;
  2. 不会被 module-all 的 EmbeddedFMLCorePlugins.txt 聚合 (该文件由各子模块 manifest 的 FMLCorePlugin 属性拼成);
  3. 但会被 module-mixin 的自检检查 —— SanityCheckHelper.checkIfJarPrefixesExist 的前缀列表里含 "spongemixins-"。

⚠️ module-spongemixins/build.gradle 有 relocate 'com.gtnewhorizon', 'ru.timeconqueror.spongemixins.repackage.com.gtnewhorizon' —— 把 com.gtnewhorizon 整个包重定位进自己的命名空间。

相关条目