覆盖层可见性

基本信息

属性 值
所属配置类 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 ❌

相关条目