Mixin 配置
基本信息
| 属性 | 值 |
|---|---|
| 类型 | mixin 配置文件与构建期开关 |
| 配置文件 | src/main/resources/mixins.foundation.early.json、src/main/resources/mixins.foundation.json |
| 实际被加载的配置 | 仅 mixins.foundation.early.json |
| UniMixins 最低版本 | 0.8.5-GTNH |
| refmap | mixins.foundation.refmap.json(构建期生成,不在源码仓库内) |
| 资源目录文件总数 | 3(两个 JSON + mcmod.info) |
行为
mixins.foundation.early.json(被 coremod 加载)
{
"required": true,
"minVersion": "0.8.5-GTNH",
"package": "com.gtnewhorizons.foundation.mixins.early",
"refmap": "mixins.foundation.refmap.json",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8"
}
由 FoundationCore.getMixinConfig() 返回(源码 core/FoundationCore.java:56),
通过 IEarlyMixinLoader 交给 UniMixins 在早期挂载。
mixins.foundation.json(未被任何代码引用)
{
"required": true,
"minVersion": "0.8.5-GTNH",
"refmap": "mixins.foundation.refmap.json",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8"
}
该文件只比 early 版少了 package 一行。全仓库对 mixins.foundation.json 的引用为
零——grep -rn "mixins.foundation" src/main/java 唯一命中是
FoundationCore.java:56 的 mixins.foundation.early.json。它是 GTNH 约定插件
(com.gtnewhorizons.gtnhconvention)按默认命名生成的常规 mixin 配置,占位存在但本
coremod 不会请求它:Foundation 全部 6 个 mixin 都是 EARLY,没有 LATE 阶段。
关键点:mixin 类不在 JSON 里枚举
两个 JSON 都没有 "mixins" 数组(grep '"mixins"' 在 src/main/resources/*.json
零命中)。实际类清单在 Java 侧枚举 Mixins 中,通过
IMixins.getEarlyMixins(Mixins.class, loadedCoreMods) 动态生成,见
Mixin 清单。
因此 early JSON 里的 "package": "com.gtnewhorizons.foundation.mixins.early" 在当前
代码路径下并不承担类名解析职责——Mixins 枚举里的类名是相对
com.gtnewhorizons.foundation.mixins 的(如 client.MixinChunk、
MixinS21PacketChunkData),由 GTNHLib 补全为全限定名。
JSON 字段对照
| 字段 | mixins.foundation.early.json |
mixins.foundation.json |
说明 |
|---|---|---|---|
required |
true |
true |
配置缺失或应用失败时直接启动失败 |
minVersion |
0.8.5-GTNH |
0.8.5-GTNH |
UniMixins 最低版本 |
package |
com.gtnewhorizons.foundation.mixins.early |
无 | |
refmap |
mixins.foundation.refmap.json |
mixins.foundation.refmap.json |
源码仓库内不存在(find -name "*refmap*" 无结果),由构建期注解处理器生成 |
target |
@env(DEFAULT) |
@env(DEFAULT) |
默认环境(同时含客户端与服务端) |
compatibilityLevel |
JAVA_8 |
JAVA_8 |
|
mixins |
无此键 | 无此键 | 类清单改由 Mixins 枚举提供 |
Gradle 开关(gradle.properties)
构建脚本 build.gradle.kts 全文只有 plugins { id("com.gtnewhorizons.gtnhconvention") },
所有行为由 gradle.properties 驱动。与 mixin / coremod 相关的项:
| 属性 | 值 | 作用 |
|---|---|---|
usesMixins |
true |
启用 mixin 支持,并自动加入 UniMixins 依赖 |
usesMixinDebug |
true |
追加调试参数(verbose 输出 + class 导出) |
mixinsPackage |
mixins |
允许放置 mixin 的包,构建期校验越界即失败 |
coreModClass |
core.FoundationCore |
coremod 入口(配合 modGroup 解析为 com.gtnewhorizons.foundation.core.FoundationCore) |
mixinPlugin |
(空) | 不使用自定义 IMixinConfigPlugin |
separateMixinSourceSet |
(空) | mixin 不拆独立 source set,与主源码同编译单元 |
forceEnableMixins |
false |
不为依赖本 mod 的其他 mod 强制开启 mixin |
containsMixinsAndOrCoreModOnly |
false |
本 mod 有普通 @Mod 类(Foundation),不是纯 mixin/coremod |
accessTransformersFile |
(空) | 不使用 Access Transformer(与 getAccessTransformerClass() 返回 null 一致) |
modGroup |
com.gtnewhorizons.foundation |
根包 |
apiPackage |
api |
对外 API 包 com.gtnewhorizons.foundation.api |
generateGradleTokenClass |
com.gtnewhorizons.foundation.Tags |
生成含 VERSION 的类(Tags 本身不在源码仓库,由构建生成) |
minecraftVersion |
1.7.10 |
|
forgeVersion |
10.13.4.1614 |
|
mappingsVersion |
12(channel = stable) |
|
enableModernJavaSyntax |
true |
经 Jabel 使用 Java 17 语法,仍以 JVM 8 为目标 |
enableGenericInjection |
true |
向反编译源码注入泛型 |
数值
| 数值 | 值 |
|---|---|
| 资源目录文件数 | 3 |
| JSON 配置文件数 | 2 |
| 被 coremod 实际加载的 JSON | 1 |
声明 "mixins" 数组的 JSON |
0 |
| 源码仓库内的 refmap 文件 | 0 |