信息屏显示与渲染

基本信息

属性 值
屏幕模型 panel/Screen.java(Screen,Screen.java:11)
屏幕管理器 panel/ScreenManager.java(ScreenManager,ScreenManager.java:21)
卡片包装实现 panel/CardWrapperImpl.java
设置包装实现 panel/CardSettingsWrapperImpl.java
GUI 类数量 16(ls gui/*.java | wc -l)
自定义控件 12 个(ls gui/controls/*.java | wc -l)
配置界面 gui/ConfigGui.java

Screen:屏幕区域

Screen 用两个三维坐标框描述一块屏幕的覆盖范围(Screen.java:11-23):

字段 含义
minX / minY / minZ 屏幕包围盒最小角
maxX / maxY / maxZ 屏幕包围盒最大角
coreX / coreY / coreZ 所属核心面板坐标
cachedCore 缓存的核心面板 TileEntity
powered 是否通电

getCore(IBlockAccess) 带缓存失效逻辑:当缓存为 null、已失效(isInvalid())或世界对象不同时,重新从坐标取 TileEntity 并重新缓存(Screen.java:25-33)。setCore 在记录核心 TileEntity 的同时把它的坐标复制进三个 coreX/Y/Z 字段(Screen.java:39-43),这样即使核心方块被卸载,也能靠坐标重新定位。

ScreenManager:屏幕注册表

ScreenManager 以世界为维度维护所有已加载的屏幕(getWorldKey(World),ScreenManager.java:31;getScreens(),ScreenManager.java:41)。主要方法:

方法 作用 引用
loadScreen(TileEntityInfoPanel) 为面板加载屏幕 ScreenManager.java:105
loadScreen(World, coreX, coreY, coreZ) 按坐标加载屏幕 ScreenManager.java:133
registerInfoPanel(TileEntityInfoPanel) 注册面板 ScreenManager.java:188
registerInfoPanelExtender(TileEntityInfoPanelExtender) 注册扩展 ScreenManager.java:206
unregisterScreenPart(TileEntity) 注销面板或扩展 ScreenManager.java:165
clearWorld(World) 卸载世界时清理 ScreenManager.java:256

GUI 类

gui/ 下 16 个类,按用途分组:

组 类
面板 GuiInfoPanel、GuiAdvancedInfoPanel、GuiRemoteMonitor、GuiPanelSlope
告警 GuiHowlerAlarm、GuiIndustrialAlarm
监测 GuiIC2Thermo、GuiRemoteThermo
计数器 GuiEnergyCounter、GuiAverageCounter
触发器 GuiRangeTrigger
卡片 GuiCardText、GuiScreenColor、GuiTextArea
配置 GuiFactory、ConfigGui

ConfigGui 继承 Forge 的 GuiConfig(gui/ConfigGui.java:10),由 @Mod(guiFactory = "shedar.mods.ic2.nuclearcontrol.gui.GuiFactory")(IC2NuclearControl.java:62)声明,在游戏选项界面中提供本模组配置项的图形编辑入口。

gui/controls/ 下 12 个自定义控件:

控件 用途
CompactButton、SmallGuiButton 按钮
GuiToggleButton 开关按钮
IconButton 图标按钮
GuiScrollableList 可滚动列表
GuiHowlerAlarmListBox 警报音选择列表
GuiHowlerAlarmSlider 告警音量滑块
GuiRemoteThermoSlider 远程温度监控滑块
GuiInfoPanelCheckBox 面板复选框
GuiInfoPanelShowLabels 显示标签开关
GuiRangeTriggerInvertRedstone 范围触发器反转红石开关
GuiThermoInvertRedstone 温度监控器反转红石开关

HTTP 网页传感器

网页传感器走独立的异步通道,实现在 panel/http/:

类 作用 引用
HttpCardSender 单例请求调度器 panel/http/HttpCardSender.java:23-27
Request 实现 Runnable 的单次 HTTP 请求 panel/http/Request.java:21

HttpCardSender 用 ConcurrentLinkedQueue<Long> 维护可用的请求 ID 池(HttpCardSender.java:31),提供 requestId()(取 ID)、send()(发送队列)、add(cardData, cardType, id)(入队)三个方法(HttpCardSender.java:42,53,64)。Request 构造时接收 URL 与未发送数据表 ConcurrentHashMap<Long, JsonNodeBuilder>(Request.java:29),在 run() 中执行(Request.java:48)—— 即使用独立线程池而非游戏主线程,避免阻塞渲染。

⚠️ 该功能的入口配置项与配方均已被注释(见配置项与升级件),类本身保留但无法通过正常途径启用。

相关条目