gui 包

基本信息

属性 值
位置 src/main/java/sedridor/amidst/gui/
类数 4
启用版本 Minecraft 1.7.10

AMIDST 自身的 Swing 界面辅助类。注意与 菜单 GUI 区分: 本包是 sedridor.amidst.gui(AMIDST 库内部), menu-guis 条目讲的是 sedridor.forgeamidst(Forge 侧,继承原版 MC 菜单)。

4 个类

类 作用
AmidstMenu 菜单栏(JMenuBar),挂在 FinderWindow
CrashDialog 崩溃对话框,extends JFrame
PNGFileFilter PNG 文件过滤器(文件对话框用)
PlayerMenuItem 玩家菜单项

CrashDialog

项 值
继承 extends javax.swing.JFrame
触发 Amidst.main 里设置的 Thread.setDefaultUncaughtExceptionHandler

⚠️ 这是第二个顶层 Swing 窗口(第一个是 FinderWindow)。 即崩溃时会额外弹出一个独立窗口,而不是 Minecraft 的 CrashReportScreen 或 FML 崩溃报告。

⚠️ Amidst 里的全局异常处理器:

Thread.setDefaultUncaughtExceptionHandler((thread, e) ->
    Log.crash(e, "AMIDST has encounted an uncaught exception on thread: " + thread));

⚠️ 该字符串里有拼写错误 encounted(应为 encountered)—— 源码既有拼写,引用时不要「顺手改正」。

⚠️ 设的是 setDefaultUncaughtExceptionHandler(全局), 即影响整个 JVM 进程的所有未捕获异常,不限于 AMIDST 线程。 在 Forge 环境下这会覆盖其它 mod / FML 的全局处理器。

AmidstMenu

JMenuBar,在 FinderWindow 构造器中 setJMenuBar(this.menuBar = new AmidstMenu(this)) 挂载。

两个「菜单」的区别(本仓易混点)

类 包 类型 出现位置
AmidstMenu sedridor.amidst.gui JMenuBar AMIDST 独立窗口顶部
GuiIngameMenuAmidst sedridor.forgeamidst extends GuiIngameMenu Minecraft 暂停菜单
GuiMainMenuAmidst sedridor.forgeamidst extends GuiMainMenu Minecraft 主菜单

⚠️ 后两者通过覆写原版菜单 + 插入按钮把 AMIDST 唤起, 菜单本身是 Minecraft 的;AmidstMenu 则属于 Swing 窗口内部。 见 菜单 GUI。

关联