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(标准 Forge GuiConfig)
    • Preview → 跳 GuiPreview
    • Help → 切换内置帮助文本(alexiillib.gui.config.help.0..3)

GuiPreview

  • 构造时 new MinecraftDisplayer(true)(preview=true 跳过资源加载),同时弹 FramePreview Swing 窗口。
  • 每帧 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 comment
    • JComboBox<EType>
    • 颜色选择按钮 → JColorChooser → 回写 render.setColour(c)
    • 当 EType == STATIC_TEXT 时额外添加 JTextField toDisplay(注意:源码中此处 JTextField 没被 panel.add,是已知的 TODO 漏洞)

数据流

  1. 用户在 FramePreview 改文本 / 进度 → 触发 FramePreview.open + 联动到 GuiPreview.debugText/debugPercent。
  2. 用户在 FrameEditor 修改 comment/type/colour → 选中行同步更新。
  3. 用户在 FrameEditor 点 Open Editor 再次打开 → 通过 preview.getImageData() 重新拉取 displayer.images。
  4. 用户在 GuiPreview 按 ESC → onGuiClosed 关闭 displayer 与 Swing 窗口,切回 BaseConfig。

已知限制

  • FrameEditor.handle 中 if (render.type == EType.STATIC_TEXT) 块只声明了 JTextField toDisplay,未添加到面板。
  • debugText 和 debugPercent 是 public 字段(非方法),由 Swing 事件直接赋值。

相关条目