模块总览
基本信息
| 属性 | 值 |
|---|---|
| 仓库 | UniMixins(LegacyModdingMC/UniMixins) |
| Gradle 模块数 | 11 |
@Mod 数 |
10 |
| modid 数 | 10(module-common 除外) |
| Java 文件 | 87 |
| Minecraft | 1.7.10(根 gradle.properties:12) |
| Forge | 10.13.4.1614-1.7.10(gradle.properties:13) |
⚠️ 核心结论:一个仓库 = 10 个 modid
分类名 unimixins 不等于单个 modid。本仓是 Gradle 多模块工程,
每个模块产出独立 jar、带独立 @Mod 注解与独立 modid。
| Gradle 模块 | modid(实测) | Java | 加载插件 FMLCorePlugin |
MixinConfigs |
|---|---|---|---|---|
module-all |
unimixins |
2 | …unimixins.all.AllCore |
4 个(见下) |
module-mixin |
unimixins-mixin |
4 | …unimixins.mixin.MixinCore |
无 |
module-compat |
unimixins-compat |
10 | …unimixins.compat.CompatCore |
无 |
module-compatfuture |
unimixins-compatfuture |
3 | …compatfuture.CompatFutureCore |
无 |
module-mixinextras |
mixinextras |
2 | …unimixins.mixinextras.MixinExtrasCore |
无 |
module-mixinbooterlegacy |
mixinbooterlegacy |
22 | …mixinbooterlegacy.MixinBooterLegacyPlugin |
无(自带 mixin.mixinbooterlegacy.json) |
module-gtnhmixins |
gtnhmixins |
12 | com.gtnewhorizon.gtnhmixins.core.GTNHMixinsCore |
mixins.gtnhmixins.json |
module-spongemixins |
spongemixins |
5 | 无 | 无 |
module-mixingasm |
mixingasm |
8 | 无 | mixingasm.mixin.json |
module-gasstation |
gasstation ⚠️ |
12 | com.falsepattern.gasstation.core.GasStationCore |
mixins.gasstation.json |
module-common |
无 modid | 7 | 无 | 无 |
⚠️ gasstation 的 modid 在源码里是占位符:
module-gasstation/.../Tags.java:8 写 public static final String MODID = "GRADLETOKEN_MODID";,
真实值由 module-gasstation/build.gradle:40 的
replace("GRADLETOKEN_MODID", "gasstation") 在处理资源时替换。
mcmod.info 里直接写 "modid": "gasstation"。照抄源码字面量会得到错误 modid。
⚠️ spongemixins 与 mixingasm 的 manifest 里没有 FMLCorePlugin ——
它们只声明 TweakClass + ForceLoadAsMod,
不是 FML 加载插件(IFMLLoadingPlugin),而是纯 Mixin 提供方。
⚠️ module-common 没有任何 @Mod,是纯内部库(配置工具 + 版本比较 + 自检),
被其它模块 shadow 打包并 relocate 到 <模块>.repackage.common。
统一的 manifest 约定
除 module-common 外,所有模块的 shadowJar manifest 都带这 4 项:
| 属性 | 值 |
|---|---|
TweakClass |
org.spongepowered.asm.launch.MixinTweaker |
ForceLoadAsMod |
true |
FMLCorePluginContainsFMLMod |
true |
FMLCorePlugin |
各模块的 *Core / *Plugin(spongemixins 与 mixingasm 除外) |
module-all 与 module-mixin 另加 Java agent 三件套:
Premain-Class / Agent-Class = org.spongepowered.tools.agent.MixinAgent,
以及 Can-Redefine-Classes / Can-Retransform-Classes = true。
module-all 的 MixinConfigs 重复项
module-all/build.gradle 声明:
'MixinConfigs': 'mixins.gtnhmixins.json,mixins.gasstation.json,mixins.gtnhmixins.json,mixingasm.mixin.json'
⚠️ mixins.gtnhmixins.json 出现了两次(第 1 与第 3 段),
是源码中实际存在的重复项,不是抄写错误。
module-all 本身不含这两个 json —— 它们由被聚合的子模块提供。
各模块条目
- module-all - 聚合包,唯一带
Premain-Class的双形态包 - module-mixin - Mixin 库 fork,
unimixins-mixin - module-compat - 兼容补丁 + 4 个 ASM transformer
- module-compatfuture - 1.8.9 ~ 1.12.2 跨版本垫片
- module-mixinextras - MixinExtras
- module-mixinbooterlegacy - MixinBooterLegacy(22 文件)
- module-gtnhmixins - GTNHMixins
- module-spongemixins - SpongeMixins 模拟层,无加载插件
- module-mixingasm - Mixingasm,无加载插件
- module-gasstation - GasStation fork,modid 为构建期占位符
- module-common - 纯内部库,无 modid