Diagnostics Mixin
[!INFO] 注册真源:
MixinConfigPlugin.getMixins()的Phase.DEFAULT分支末尾 源码目录:src/main/java/makamys/coretweaks/mixin/diagnostics/
2 个 Diagnostics Mixin
| # | Mixin | 目标类 | 门控配置 | 默认 | 需客户端 |
|---|---|---|---|---|---|
| 1 | enhancemapstorageerrors.MixinMapStorage |
MapStorage |
enhanceMapStorageErrors |
true | 否 |
| 2 | detectdatawatcherconflict.MixinDataWatcher |
DataWatcher |
detectDataWatcherIdConflicts |
true | 否 |
两个都不需要客户端(服务端同样有用),且都不在
if (Compat.isOptifinePresent()) 块内。
MixinDataWatcher 的两个层次
detectDataWatcherIdConflicts 启用后还有配套开关:
| 配置 | 类型 | 默认 | 说明 |
|---|---|---|---|
detectDataWatcherIdConflicts |
FeatureSetting |
true |
主开关 |
detectDataWatcherIdConflictCulprit |
boolean |
false |
是否记录并打印注册调用栈 |
配置注释明确说明后者为何默认关闭:
Keep track of all registration stack traces, and print which ones conflict. Off by default because it adds some overhead to DataWatcher object registration.
即默认只做类型化注册冲突的告警(原版仅在无类型注册方法里告警),
开启 detectDataWatcherIdConflictCulprit 后才额外保留全部注册栈以定位冲突方,
代价是注册开销上升。
功能描述:某个 mod 用带类型的注册方法占用了已被占用的 ID 槽时 发出警告 —— 这是 mod 之间 DataWatcher ID 冲突的经典症状。
MixinMapStorage
enhanceMapStorageErrors 把 MapStorage 的错误输出改得更详细。
对应 Config 分类 Diagnostics,注释为
「Makes MapStorage’s errors more informative.」
MapStorage 是 1.7.10 中小地图/维度地图存档的容器,
其报错在 modpack 中极难定位,本 Mixin 补充上下文。
⚠️ 第三个 Diagnostics 功能被硬编码关闭
/coretweaks 指令(Config.coreTweaksCommand)同属 Diagnostics 分类,
但其注解被注释掉、字段硬编码:
// @ConfigBoolean(cat="Diagnostics", def=TRUE, com="Enables the /coretweaks command, used to access various
// diagnostics. Invoke it in-game for additional information.")
public static FeatureSetting coreTweaksCommand = FeatureSetting.FALSE;
注释掉的注解声明它是 @ConfigBoolean(默认值 TRUE),
但字段实际类型是 FeatureSetting 且硬编码为 FALSE。
注解与字段类型本就不匹配,恢复注解也会编译失败 ——
说明这是主动关闭而非单纯注释掉配置。
因此 CoreTweaksMod.init() 中的
if (Config.coreTweaksCommand.isActive()) {
ClientCommandHandler.instance.registerCommand(new CoreTweaksCommand());
}
永远不执行 —— /coretweaks 指令在当前版本无法在游戏中使用。
详见 coretweaks 指令。
即 Diagnostics 分类名义上有 3 个功能,实际可用 2 个。
目录中还有一个非 Mixin 的 diagnostics 实现
src/main/java/makamys/coretweaks/diagnostics/DataWatcherMonitor.java
位于 mixin/ 之外,是 MixinDataWatcher 的支撑实现类
(负责冲突记录与栈追踪),本身不带 @Mixin 注解。
相关条目
- 动态 Mixin 注册 - 本页 2 个的注册入口
- coretweaks 指令 - 同分类但被硬编码关闭
- CoreTweaks 配置 - 门控开关与硬编码 FALSE