全景图(Panorama)

基本信息

属性 值
源码类 lumien.custommainmenu.configuration.elements.Panorama(继承 Element)
配置位置 顶层 other → panorama(GuiConfig.loadOthers,GuiConfig.java:155-173)
绘制入口 GuiCustom.renderSkybox / drawPanorama(GuiCustom.java:332-434)
立方体面数 固定 6(Panorama.java:26)

可配置项

字段 必填 类型 默认值 说明
images 是 字符串 — 必须含 %c 占位符,逐面替换为 0–5
blur 是 bool — 是否做全景模糊
gradient 是 bool — 是否在全景上叠天空渐变
animate 否 bool true 关闭后固定停在 position
position 否 int 0 关闭动画时的固定朝向
animationSpeed 否 int 1 每 tick 累加到 panoramaTimer 的角度步进
synced 否 bool false 与主菜单共享同一份 panoramaTimer

⚠️ blur 与 gradient 是无判空的硬读(GuiConfig.java:159-160),缺失即崩。images 会先过 getStringPlease,所以写成 JSON 数组会在每次加载时随机取一个。

六个面如何展开

构造函数把 images 里的 %c 依次替换成 0~5 并各自解析为贴图(Panorama.java:25-29)。drawPanorama 的渲染顺序(GuiCustom.java:394-410)与原版 PanoramaRenderer 一致:

面序号 旋转 对应方位
0 无 前
1 +90° 绕 Z 右
2 180° 绕 Z 后
3 -90° 绕 Z 左
4 +90° 绕 X 上
5 -90° 绕 X 下

场景按 8×8 = 64 个方块平铺(GuiCustom.java:377-378),每面 alpha 为 255/(k+1) 制造纵深。

动画与同步

updateScreen 中(GuiCustom.java:441-453):

  • synced = true 时,读主菜单的 panoramaTimer,再把算出的值写回主菜单,其他界面因此与主菜单共用同一视角。
  • synced = false 时按自身配置累加或固定。
  • ⚠️ 同步路径同样直接解引用 getGUI("mainmenu")(GuiCustom.java:443),若 mainmenu 未定义则空指针(见背景里同一条链路)。

模糊与渐变

  • blur = true 时在 renderSkybox 末尾连调 6 次 rotateAndBlurSkybox(GuiCustom.java:336-342),每次把 256×256 离屏纹理回拷并做 3 遍偏移混合。
  • gradient = true 时额外画两层 drawGradientRect(GuiCustom.java:189-192),颜色常量 -2130706433(0x80FFFFFF)与 16777215。

相关条目