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(另有独立 sourceSet src/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 桩。

变换路径

Mixin 分组

设定

命令

已知源码缺陷

# 位置 问题
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 —