CoreTweaks
[!INFO] Git Commit:
103cecb| Updated: 2026-10-02
CoreTweaks 是一个纯底层优化/修复补丁集:不提供任何方块、物品或实体, 而是通过 Coremod ASM 变换器 + 37 个 Mixin + 1 个访问变换器 直接修改 Minecraft / Forge 自身的字节码与行为。
- modid:
coretweaks(全小写,与分类名一致) - 资源域:
coretweaks(assets/coretweaks/lang/) - 包根:
makamys.coretweaks(另有独立 sourceSetsrc/api/java/fastcraft/) - Coremod 类:
CoreTweaksPlugin(@MCVersion("1.7.10")) - @Mod 类:
CoreTweaksMod - version:
Tags.VERSION(构建期常量,源码中无字面量) - 目标版本: Minecraft 1.7.10 / Forge 10.13.4.1614
- 依赖:
mcmod.info的dependencies为空数组;但usesMixins = true意味着隐含依赖 UniMixins - 语言文件: 仅 2 行(
en_US.lang/zh_CN.lang),唯一键为gui.coretweaks.menu.continue
⚠️ 本模组不注册任何方块、物品、实体、附魔、药水效果或成就 ——
GameRegistry.registerBlock / registerItem 等全仓零调用。
CoreTweaksMod 的 8 个 @EventHandler 里也没有任何注册动作,
只有监听器分发与 3 个非注册型优化对象的构造。
关键陷阱:Mixin JSON 数组全空
| 文件 | target | mixins 数组元素数 |
|---|---|---|
coretweaks.mixin.json |
(默认) | 0 |
coretweaks-init.mixin.json |
@env(INIT) |
0 |
coretweaks-preinit.mixin.json |
@env(PREINIT) |
0 |
全部 Mixin 由 MixinConfigPlugin.getMixins() 运行时动态返回。
数 JSON 会得到 0,严重少算。正确做法是对
mixin/ 目录 37 个 .java 与源码中所有 mixins.add("…")
字符串做集合差运算,结果为 37 ↔ 37 严格一一对应。
其中 1 个在 PREINIT 阶段、36 个在 DEFAULT 阶段、0 个在 INIT 阶段
(coretweaks-init.mixin.json 是空壳)。
源码结构
| 包 | 文件数 | 职责 |
|---|---|---|
| (根) | 8 | CoreTweaks 常量 + CoreTweaksMod + CoreTweaksPlugin(coremod)+ Config + MixinConfigPlugin + Compat + Persistence + ConfigMigrator |
mixin |
37 | 全部带 @Mixin,按 bugfix/optimization/tweak/diagnostics 四组 |
asm |
3 | Coremod ASM 变换器 |
optimization |
13 | 变换器缓存、资源包加速、纹理加载等 |
util |
18 | 配置注解处理、ASM 工具、GL 工具、包装集合 |
tweak |
4 | FarPlaneDistanceTweaker / LightFixStare / LoadLastWorldButton / crashhandler |
command |
2 | CoreTweaksCommand / ISubCommand |
bugfix |
3 | DoubleEatFixer / MobCapHandler / SafeFMLLog |
ducks |
2 | IChunkProviderClient / IForge5160Entity |
api |
1 | IWrapper |
diagnostics |
1 | DataWatcherMonitor |
compat / api(根级子包) |
— | 见上表根级条目 |
另有 src/api/java/fastcraft/ab.java 与 ah.java
两个混淆名文件(独立 sourceSet,不在 makamys.coretweaks 包下),
是 FastCraft 纹理加载 Mixin 所依赖的 API 桩。
变换路径
- Coremod 与 ASM 变换器 - 3 个 ASM 变换器 + 1 个 AT + coremod 生命周期
- 动态 Mixin 注册 - 37 个 Mixin 的注册入口与 3 个阶段的分派
Mixin 分组
- Bugfix Mixin - 12 个,11 项功能(
fixEntityTracking注入 3 个类) - Optimization Mixin - 13 个,含 3 个永不可达
- Tweak Mixin - 10 个,3 个用
@ModifyConstant改字面量 - Diagnostics Mixin - 2 个
设定
- CoreTweaks 配置 - 53 个配置项,
FeatureSetting三值开关 - 功能兼容矩阵 - 8 条禁用分支,探测 8 个外部 mod
命令
- coretweaks 指令 - ⚠️ 被硬编码关闭,当前不可用
已知源码缺陷
| # | 位置 | 问题 |
|---|---|---|
| 1 | MixinConfigPlugin.getMixins() 的 Phase.INIT 分支 |
完全为空,coretweaks-init.mixin.json 是无作用的空壳 |
| 2 | Config.java(clientChunkMap / threadedTextureLoader) |
注解被注释 + 硬编码 FeatureSetting.FALSE,导致 3 个 Mixin 永不可达 |
| 3 | Config.java(coreTweaksCommand) |
同上;且注释声明 @ConfigBoolean 而字段为 FeatureSetting,取消注释也无法编译 |
| 4 | CoreTweaksCommand |
全仓零个 ISubCommand 实现、零次 register() 调用 → 子命令表恒空 |
| 5 | CoreTweaksPlugin |
getModContainerClass / getSetupClass / injectData / getAccessTransformerClass 四个回调全为带 // TODO Auto-generated method stub 的空实现 |
| 6 | CoreTweaksPlugin.getAccessTransformerClass() |
返回 null,但 META-INF/coretweaks_at.cfg 存在(靠 FML 扫描而非该回调生效) |
| 7 | Config.reload() 的 setCategoryComment |
分类注释写作 transformer_cache.full(下划线),实际分类名为 transformerCache.full(驼峰);appliable 拼写错误;「_enabled」键名描述与 categoryProperty 不符 |
| 8 | MixinConfigPlugin.shouldApplyMixin |
无条件 return true,不校验目标类存在性 |
外部依赖
mcmod.info 的 dependencies 为空数组,requiredMods 也为空。
但 gradle.properties 的 usesMixins = true 意味着隐含依赖 UniMixins
(GTNH 模板注释:UniMixins is automatically set as a required dependency
if usesMixins = true)。
以下均为可选集成,由 Compat 探测后按需生效,
且均不在本 wiki 收录范围(relation.md 无对应行),
故不建分类、不建前向引用:
| 依赖 | 作用 | 缺失时 |
|---|---|---|
| OptiFine | 解锁 3 个 OF 专属 Mixin | OF 优化不生效,不报错 |
| FastCraft | 按 fcVersion 注入 4 个纹理 Mixin |
分支静默跳过 |
| FoamFix | CoreTweaks 反射移除其 JarDiscovererMemoryLeakFixPatcher |
TRACE 日志,正常返回 |
| UniMixins | Mixin 框架(usesMixins = true 的隐式依赖) |
无法启动 |
| BetterCrashes / CrashGuard | 冲突则禁 crashHandler |
— |
| backport5160 | 冲突则禁 fixEntityTracking |
— |
| NotFine / LUMINA / Supernova | 各自冲突则禁对应修复 | — |
| Hodgepodge ≥1.6.14 | 冲突则禁 fixForgeChatLinkCrash |
— |