Early Mixin

基本信息

属性 值
配置文件 mixins.dreamcraft.early.json
config 内 package com.dreammaster.mixin.mixins.early
minVersion 0.8.5-GTNH
target @env(DEFAULT)
compatibilityLevel JAVA_8
refmap mixins.dreamcraft.refmap.json
required true
Mixin 数量 5

⚠️ 关键:mixins.*.json 里没有 mixin 数组

mixins.dreamcraft.early.json 的全部内容只有 6 个键,不含 mixin 或 client/server 数组:

{
  "required": true,
  "minVersion": "0.8.5-GTNH",
  "package": "com.dreammaster.mixin.mixins.early",
  "refmap": "mixins.dreamcraft.refmap.json",
  "target": "@env(DEFAULT)",
  "compatibilityLevel": "JAVA_8"
}

真正的清单在 Java 侧:DreamCoreMod 同时实现 IEarlyMixinLoader,由 getMixins(Set<String> loadedCoreMods) 返回(DreamCoreMod.java:114-126)。getMixinConfig() 返回 "mixins.dreamcraft.early.json"(DreamCoreMod.java:109-111),config 只提供包名与 refmap,条目由加载器动态提供。

这三条 Mixin 注册路径互不相同,统计时必须分开数:

路径 载体 数量
① 早期 Mixin DreamCoreMod.getMixins() 5
② 晚期 Mixin com.dreammaster.mixin.Mixins 枚举 2
③ ASM 变换器 DreamClassTransformer 3

功能

Mixin 类 目标类 作用 注册条件
MixinMinecraft_ConfirmExit Minecraft 接管退出确认窗口 仅客户端(DreamCoreMod.java:117)
MixinMinecraft_PackIcon Minecraft 替换整合包图标 仅客户端(DreamCoreMod.java:118)
MixinIntegratedServer IntegratedServer 废掉「Open to LAN」 仅客户端(DreamCoreMod.java:121)
MixinGuiShareToLan GuiShareToLan 废掉「Open to LAN」 仅客户端(DreamCoreMod.java:122)
MixinTileEntityBeacon TileEntityBeacon 信标相关修复 双端(DreamCoreMod.java:124,在 isClient() 判断之外)

客户端判定为 FMLLaunchHandler.side().isClient()(DreamCoreMod.java:116),MixinTileEntityBeacon 的 mixins.add(...) 位于该 if 块之外,因此在服务端也会注册。

源码注释明确说明了意图:// neuter Open to LAN(DreamCoreMod.java:120)—— 依检查项 14,此为意图证据,说明这两个 Mixin 的存在本身就是目的,不是缺陷。

数值

数值名 值
早期 Mixin 总数 5
仅客户端生效 4
双端生效 1(MixinTileEntityBeacon)

交互

对玩家而言,这 5 个 Mixin 的净效果是:

  • 退出游戏时出现整合包自定义的确认窗口(可用 DreamCoreMod.properties 的 showConfirmExitWindow 关闭,见 DreamCoreMod)
  • F3 调试界面显示整合包自定义图标
  • 「Open to LAN」按钮被移除(GTNH 不支持局域网联机)
  • 信标渲染/行为修复

相关条目