project 包
基本信息
| 属性 | 值 |
|---|---|
| 位置 | src/main/java/sedridor/amidst/project/ |
| 类数 | 5 |
| 启用版本 | Minecraft 1.7.10 |
会话管理层。5 个类全部是 Swing 组件或与之协作。
5 个类
| 类 | 继承 | 行数 | 作用 |
|---|---|---|---|
FinderWindow |
JFrame |
59 | 主窗口,单例 instance |
Project |
JPanel |
159 | 一次地图会话(种子 + 世界类型) |
MapViewer |
JComponent? |
— | 地图视图容器 |
SaveLoader |
— | — | 存档读写 |
SkinManager |
— | — | 皮肤 / 图标资源 |
Swing 依赖
| 类 | Swing 角色 |
|---|---|
FinderWindow |
顶层窗口(JFrame) |
Project |
内容面板(JPanel) |
CrashDialog(在 gui/) |
另一个顶层窗口(JFrame) |
AmidstMenu(在 gui/) |
菜单栏(JMenuBar) |
⚠️ 本 mod 不使用任何 Minecraft GUI 类:
全仓 IGuiHandler 命中数 0,
无 GuiScreen 子类(GuiIngameMenuAmidst / GuiMainMenuAmidst
是继承原版菜单插入按钮,属另一回事)。
关系图
FinderWindow (JFrame, 单例 instance)
├── AmidstMenu (JMenuBar) ← gui/
├── pane (Container, BorderLayout)
└── Project (JPanel, curProject)
├── MapViewer ← 地图视图
├── Map ← map/
│ ├── Layer / LiveLayer / IconLayer / ImageLayer
│ ├── FragmentManager / Fragment
│ ├── MapObject × 10
│ └── layers/ × 11
├── widget/ × 15
└── SaveLoader ← 存档
两条打开地图的路径
| 路径 | 行为 |
|---|---|
FinderWindow.instance == null |
loadAmidst() → loadMap()(创建窗口) |
instance != null && !isVisible() |
setVisible(true) + 必要时 new Project(seed, worldType) |
⚠️ 两条路径在 TickHandler、 CommandAmidst、 GuiIngameMenuAmidst 三处重复实现(复制粘贴), 没有抽出统一方法。
关联
- FinderWindow - 主窗口
- Project - 会话
- Map - 地图
- Options - 全局配置
- 菜单 GUI -
JMenuBar与崩溃对话框