Preview / Editor GUI
基本信息
| 属性 | 值 |
|---|---|
| 主类 | BaseConfig(mod 配置入口) |
| Preview GUI | GuiPreview + FramePreview |
| Editor 窗口 | FrameEditor(Swing) |
| 入口 | BaseConfig 的 Preview 按钮 |
组件
BaseConfig(Mods 配置 GUI)
- 左侧
GitHubUserScrollingList:贡献者列表(远程拉取)。 - 右侧
CommitScrollingList:commit 历史;当前 commit 金色(0xBFB23A)、旧 commit 蓝色(0x00CAFF)、已发布 release 绿色(0x11FF44)。 - 顶部按钮区(按文档顺序):
Main Configuration File→ 跳ActualConfig(标准 ForgeGuiConfig)Preview→ 跳GuiPreviewHelp→ 切换内置帮助文本(alexiillib.gui.config.help.0..3)
GuiPreview
- 构造时
new MinecraftDisplayer(true)(preview=true跳过资源加载),同时弹FramePreviewSwing 窗口。 - 每帧
drawScreen把当前debugText/debugPercent通过displayer.renderPreview渲染到主屏幕。 setImageData(ImageRender[]):通过Minecraft.func_152344_a切回主线程 → 关闭旧 displayer → 用新数据开新 displayer(避免阻塞主线程)。- ESC → 关闭并回到
BaseConfig。
FramePreview(Swing 副窗口)
- 顶部
Open Editor→ 启动FrameEditor。 - 底部
Exit→SwingUtilities.invokeLater(preview::dispose)。 - 中间:消息文本框(默认 “Random Text”,实时联动到
GuiPreview.debugText)+ 水平滚动条(值/1000 =debugPercent)。
FrameEditor
- 左侧
JList<String>:列出所有ImageRender.comment,未填写显示<unnamed>。 - 选中 → 右侧
JPanel settingsPanel用handle(ImageRender)渲染:JTextField commentJComboBox<EType>- 颜色选择按钮 →
JColorChooser→ 回写render.setColour(c) - 当
EType == STATIC_TEXT时额外添加JTextField toDisplay(注意:源码中此处JTextField没被panel.add,是已知的 TODO 漏洞)
数据流
- 用户在
FramePreview改文本 / 进度 → 触发FramePreview.open+ 联动到GuiPreview.debugText/debugPercent。 - 用户在
FrameEditor修改 comment/type/colour → 选中行同步更新。 - 用户在
FrameEditor点Open Editor再次打开 → 通过preview.getImageData()重新拉取displayer.images。 - 用户在
GuiPreview按 ESC →onGuiClosed关闭 displayer 与 Swing 窗口,切回BaseConfig。
已知限制
FrameEditor.handle中if (render.type == EType.STATIC_TEXT)块只声明了JTextField toDisplay,未添加到面板。debugText和debugPercent是public字段(非方法),由 Swing 事件直接赋值。