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 的辅助实现。
相关条目
- 动态 Mixin 注册 - 本页 10 个的注册入口
- 功能兼容矩阵 - 3 个 Tweak 的冲突禁用
- CoreTweaks 配置 - 门控开关与默认值