垂直视距

基本信息

属性 值
配置键 cubicchunks.config.vert_view_distance(默认 8)
桥接类 com.cardinalstar.cubicchunks.api.compat.CubicChunksVideoSettings
GUI 控件 ClientEventHandler.VertViewDistanceSlider
注入位置 原版「视频设置」界面(GuiVideoSettings)
最小值 2
最大值 装了 Angelica 为 64,未装为 32

功能

垂直视距只控制服务器向客户端发送多少立方体,不改变客户端实际渲染距离(原版渲染距离仍由「渲染距离」选项决定)。配置注释明确写着 “Does not affect rendering, only what chunks are sent to client”(CubicChunksConfig.java:80-81)。

CubicChunksVideoSettings(api/compat/CubicChunksVideoSettings.java)是一层薄桥接,把上下限硬编码在这里、把当前值读写接到配置上:

  • getMinVerticalViewDistance() 固定返回 2(:8-10)
  • getMaxVerticalViewDistance() 返回 Mods.Angelica.isModLoaded() ? 64 : 32(:12-14)——装了 Angelica 时上限翻倍
  • getVerticalViewDistance() 读 CubicChunksConfig.verticalCubeLoadDistance(:16-18)
  • setVerticalViewDistance(int) 走 CubicChunksConfig.setVerticalViewDistance(:20-22),后者赋值并 ConfigurationManager.save 立即落盘(CubicChunksConfig.java:283-286)

滑块的注入条件

ClientEventHandler(event/handlers/ClientEventHandler.java)在客户端事件里检查:

if (currentGui instanceof GuiVideoSettings && !Mods.Angelica.isModLoaded()) {   // :84

即只有未安装 Angelica 时才把 VertViewDistanceSlider 插进原版视频设置界面(通过 (IGuiVideoSettings) gvs).getOptionsRowList(),:86)。装了 Angelica 时 Angelica 自带的设置界面接管,滑块不再由本模组注入。

滑块本体(ClientEventHandler.java:100 起)宽 150、高 20(:106),拖动时把鼠标 X 映射到 0~1 再用 MathUtil.lerp 换算回整数值(:129,175-176),显示文本为 I18n.format("cubicchunks.gui.vertical_cube_load_distance", 当前值)(:183-186),对应英文 Vertical Distance: %d cubes(en_US.lang:12)。

注:滑块的 getHoverState(...) 被覆写为无条件返回 0(ClientEventHandler.java:119-121),即永远不高亮。

数值

数值名 值 来源
最小垂直视距 2 CubicChunksVideoSettings.java:9
最大垂直视距(有 Angelica) 64 CubicChunksVideoSettings.java:13
最大垂直视距(无 Angelica) 32 CubicChunksVideoSettings.java:13
配置默认值 8 CubicChunksConfig.java:82
滑块尺寸 150 × 20 ClientEventHandler.java:107
显示文本 Vertical Distance: %d cubes en_US.lang:12

交互

触发 行为
打开「选项 → 视频设置」(无 Angelica) 列表中多出一行 Vertical Distance: N cubes 滑块
拖动滑块 立即改写 verticalCubeLoadDistance 并保存配置文件
安装 Angelica 该滑块不再出现(Angelica 接管设置界面)
调大垂直视距 服务器发送更多立方体 → 内存与带宽上升,远处方块更快可见

相关条目