Tweak Mixin

[!INFO] 注册真源:MixinConfigPlugin.getMixins() 的 Phase.DEFAULT 分支 源码目录:src/main/java/makamys/coretweaks/mixin/tweak/

10 个 Tweak Mixin

# Mixin 门控配置 默认 需客户端 需 OptiFine
1 crashhandler.MixinMinecraft crashHandler true 是 否
2 lightfixstare.MixinWorld lightFixStare true 否 否
3 farplane.MixinEntityRenderer clampFarPlaneDistance true 是 否
4 disablefog.MixinEntityRenderer disableFog false 是 否
5 newworldguimaxlength.MixinGuiCreateWorld uncapCreateWorldGuiTextFieldLength false 否 否
6 extendsprint.MixinEntityPlayerSP extendSprintTimeLimit true 是 否
7 cloudheightcheck.MixinEntityRenderer tweakCloudHeightCheck true 是 否
8 synctweak.MixinMinecraft forceUncapFramerate false 是 否
9 ofcustomsky.MixinOFD6CustomSky ofUnlockCustomSkyMinRenderDistance true 是 是
10 ofupdaterenderersreturn.MixinRenderGlobal ofFixUpdateRenderersReturnValue false 是 是

#9 / #10 位于 if (Compat.isOptifinePresent() && isClient) 块内。

改常量而非改逻辑的 Mixin

三个 Tweak 用 @ModifyConstant 精确改写字面量, 而非替换方法体 —— 这决定了它们的行为边界:

Mixin 常量 值 含义
extendsprint.MixinEntityPlayerSP:12 setSprinting 的 intValue 600 冲刺时限 600 tick = 30 秒
extendsprint.MixinEntityPlayerSP:20 localSetSprinting 的 intValue 600 同上(remap = false)
cloudheightcheck.MixinEntityRenderer:16 renderWorld 的 doubleValue 128.0D 基准云高
cloudheightcheck.MixinEntityRenderer:21 renderWorld 的 doubleValue 128.0D 同上(第二个 ordinal)
ofcustomsky.MixinOFD6CustomSky:12 renderSky 的 intValue 8 自定义天空最小渲染距离

三个常量都带 expect = 0(extendsprint)或 ordinal 限定, 使 Mixin 在目标代码不符合预期时立即失败而非静默错位。

extendSprintTimeLimit 的实际改法

@ModifyConstant 把 600 换成 Integer.MAX_VALUE 之类的极大值 (配置注释:「increases this limit to be virtually infinite」), 对应上游 MC-4839(1.9 修复)。注意源码常量 600 = 30 秒, 与配置注释「can’t sprint for longer than 30 seconds」一致。

tweakCloudHeightCheck 的三态

clampFarPlaneDistance 之外的 cloudHeightCheckMode(枚举 CloudHeightCheck) 提供三种渲染策略:

取值 行为
VARIABLE_CORRECTED(默认) 保留原版「玩家在云下则不透明、否则透明」,但转折点跟随实际云高而非固定 128,并附带修复 OptiFine 在 Y=128 与云高之间的云消失 bug
ALWAYS_TRANSPARENT 永远透明(b1.7.3 与 1.15+ 的行为)
ALWAYS_OPAQUE 永远不透明

clampFarPlaneDistance 的配套数值

除布尔开关外还有一个 ConfigFloat:

配置 类型 默认 范围
clampFarPlaneDistance FeatureSetting true —
minFarPlaneDistance float 180f 0f … Float.MAX_VALUE

配置注释:「Setting it to 180 or higher fixes clipping in OptiFine’s custom skybox that happens when using lower render distances.」 MixinEntityRenderer 用 @ModifyArg 改写远平面距离参数。

forceUncapFramerate 的实验性标注

配置注释直言:

EXPERIMENTAL: Uncaps framerate even when framelimiter is enabled. … It seems to make things worse though, at least with OptiFine.

对应 tweak/synctweak.MixinMinecraft,注入 Minecraft 限帧器逻辑。 默认 false,开启时解除限帧但保留其「每帧更新区块的时间预算」。

会被其它 mod 自动禁用的 Tweak

Config.shouldDisable 对 3 个 Tweak 做冲突检测:

Tweak 被禁用于
crashHandler BetterCrashes 或 CrashGuard 存在
lightFixStare Supernova 存在
tweakCloudHeightCheck NotFine 存在

详见 功能兼容矩阵。

非 Mixin 的 Tweak

mainMenuContinueButton 不走 Mixin,而是在 CoreTweaksMod.onConstruction 中实例化 LoadLastWorldButton 并注册为 IModEventListener:

if (Config.mainMenuContinueButton.isActive()) {
    registerListener(LoadLastWorldButton.instance = new LoadLastWorldButton());
}

它在主菜单加一个「Continue」按钮(配置注释给出按钮 ID -2026964516), 本地化键 gui.coretweaks.menu.continue(见 assets/coretweaks/lang/en_US.lang,该文件只有这一行)。

同属非 Mixin 的还有 FarPlaneDistanceTweaker 与 LightFixStare 两个 tweak/ 根目录下的类,作为对应 Mixin 的辅助实现。

相关条目