覆盖层可见性
基本信息
| 属性 | 值 |
|---|---|
| 所属配置类 | MiscConfig |
| 字段 | public static OverlayVisibility overlayVisibility |
| 类型 | 枚举 MiscConfig.OverlayVisibility |
| 默认值 | HIDE(@Config.DefaultEnum("HIDE")) |
| 服务端同步 | ✅ @Config.Sync |
| 配置分类 | category = "misc" |
| 配置注释 | Show overlays (WAILA, etc.) while in freecam |
取值穷举
| 取值 | RevealGate.shouldHide() |
三个后期 Mixin 的效果 |
|---|---|---|
HIDE |
overlayVisibility == HIDE && isActive() → freecam 中为 true |
Waila 提示栏、Thaumcraft 四类叠加层、holoinventory 全息投影全部隐藏 |
SHOW |
恒为 false |
不做任何遮挡,全部照常显示 |
RevealGate:统一门控
三个后期 Mixin 都不直接读配置,而是共用一个专门的门控类
com.caedis.freecam.camera.RevealGate:
public static boolean shouldHide() {
return MiscConfig.overlayVisibility == OverlayVisibility.HIDE
&& FreecamController.instance().isActive();
}
它把"配置为 HIDE 且 自由相机已激活"两个条件合成一个布尔值,
使三个 Mixin 只需写 && !RevealGate.shouldHide()。
RevealGate 的 shouldHide() 是本 mod 唯一读取 overlayVisibility 的位置——
改这个配置项会同时影响下列全部 6 个注入点。
门控的注入点
| Mixin | 目标方法 | 注入器 | 隐藏的具体内容 |
|---|---|---|---|
waila.MixinOverlayRenderer |
OverlayRenderer.isOverlayVisible |
@ModifyReturnValue RETURN |
提示栏可见性判定 |
thaumcraft.MixinRenderEventHandler |
drawTagsOnContainer |
@Inject HEAD + cancellable |
护目镜容器标签 |
thaumcraft.MixinRenderEventHandler |
drawTextInAir |
@Inject HEAD + cancellable |
护目镜悬浮文字 |
thaumcraft.MixinRenderEventHandler |
showScannedBlocks |
@Inject HEAD + cancellable |
魔能检测器扫描脉冲 |
thaumcraft.MixinRenderEventHandler |
renderMarkedBlocks |
@Inject HEAD + cancellable |
傀儡放置/铃标记 |
holoinventory.MixinRenderer |
Renderer.renderEvent |
@ModifyExpressionValue 字段读 |
全息物品投影 |
三个目标类全部 remap = false,且各自的清单项都带 addRequiredMod(TargetedMod.X)
(见 Mixin 加载阶段)——未安装对应 mod 时这些 Mixin 根本不会被应用。
各 Mixin 的省流考量
源码注释记录了两个不同取向:
holoinventory那条用@ModifyExpressionValue只改Renderer.enabled的读值, 注释解释为该字段由KeyManager拥有并会持久化到配置文件,写它会与用户的开关按键冲突;thaumcraft那组故意打在绘制方法上而不是逐帧的renderLast/blockHighlight事件方法, 注释说明这样"只有在真的绘制东西时才会分配CallbackInfo"。
Waila 那条的注释指出 isOverlayVisible 同时把控了绘制和 WailaTickHandler 中
每 tick 的射线检测/提示构建,因此改这一处即可省掉整套逐 tick 开销。
不受本选项影响的东西
| 内容 | 是否受 overlayVisibility 控制 |
|---|---|
| Waila 提示栏 | ✅ |
| Thaumcraft 护目镜/检测器/傀儡标记 | ✅ |
| holoinventory 全息投影 | ✅ |
| 原版手持物 | ❌ 由 显示手部 控制 |
| 原版方块高亮/破坏进度 | ❌ 无对应补丁 |
其它配置项
MiscConfig 共 5 项:
| 字段 | 类型 | 默认值 | 服务端同步 |
|---|---|---|---|
| fullBright | boolean |
false |
✅ |
| disableSubmersionFog | boolean |
false |
✅ |
overlayVisibility |
OverlayVisibility |
HIDE |
✅ |
| initialPerspective | Perspective |
INSIDE |
❌ |
| showHand | boolean |
false |
❌ |
相关条目
- Mixin 加载阶段 - 三个后期 Mixin 的加载条件与全部 7 个 Mixin 枚举
- 兼容模组 -
TargetedMod与Mods两套第三方 mod 判定的区别 - 显示手部 - 另一条叠加层控制,但门控类是
MiscConfig.showHand - 自由相机状态机 -
isActive()决定RevealGate是否放行