指南框架
GuideNH 的核心是一套四段式渲染管线:资源包里的 Markdown 文件经过编译, 变成一棵文档树,再映射成 3D 场景图,最后由渲染器逐帧绘制。
资源包 Markdown(YAML frontmatter + 正文)
└─ 编译器 guide/compiler Markdown → 文档模型
└─ 文档模型 guide/document 页面 / 章节 / 导航 / 锚点
└─ 场景图 guide/scene 3D 方块 / 实体 / 标注 / 相机
└─ 渲染 guide/render + guide/internal 逐帧绘制
门面类(guide/ 根目录 9 个)
| 类 | 职责 |
|---|---|
Guide |
一本指南书。GuideRegistry 按 ID 索引它 |
GuideBuilder |
构建 Guide 的建造者 |
GuidePage |
单页 |
GuideAnchor / PageAnchor |
页内锚点 |
PageCollection |
页面集合 |
GuidePageChange |
页面变更事件载荷 |
GuidePageIcon |
页面图标 |
GuidesCommon |
公共工具 |
文档模型(guide/document,136 文件)
页面、章节、导航元数据、分类、锚点的对象模型。 README 明确列出支持 YAML frontmatter、导航元数据、分类、锚点、 表格、脚注、Mermaid、LaTeX、图表与高亮文本。
编译管线(guide/compiler,87 文件)
把 Markdown 编译进文档模型。内建标签的注册在
guide/internal/syntax/BuiltinSyntaxContributor.java,共 119 个唯一标签
(完整清单见 MDX 标签)。
⚠️ 该文件在 guide/internal/syntax/,不在 guide/syntax/——
guide/syntax/ 是另一回事(18 个文件,语法高亮与语法贡献者接口)。
移植的 JS 生态
com/hfstudio/guidenh/libs/ 下 160 个文件、4 个包,把
unified / remark / micromark 这套 JavaScript 的 Markdown 工具链概念
移植到 Java:
| 包 | 文件数 | 对应 JS 生态 |
|---|---|---|
libs/micromark |
82 | micromark(Markdown 解析器) |
libs/mdast |
65 | mdast(Markdown 抽象语法树) |
libs/mdx |
7 | MDX(可执行 Markdown) |
libs/unist |
6 | unist(通用语法树) |
⚠️ 路径是 libs,不是 guide/libs——guide/ 下没有 libs 子目录
(实测 find src/main/java/com/hfstudio/guidenh/guide/libs 无此路径)。
这是本 mod 在架构上最不寻常的一点:它没有直接用 Java 的 Markdown 库, 而是自建了一套与 JS 同构的分层(micromark 解析 → mdast/mdx 节点 → unist 定位)。
场景图(guide/scene,140 文件)
3D 场景部分。支持方块 / 实体摆放、StructureLib 导入、Ponder 回放、 图层滑块、网格控制、标注与方块统计。
标注类(可从标签名反推)包括 BlockAnnotation / BoxAnnotation /
DiamondAnnotation / ImageAnnotation / InputAnnotation /
LineAnnotation / TextAnnotation / BlockAnnotationTemplate。
方块定位辅助在 guide/scene/level/GuidebookLevel.java(1154 行起有方块 UID 查找)
与 guide/scene/support/GuideBlockMatcher.java。
布局与渲染
| 包 | 文件数 | 职责 |
|---|---|---|
guide/layout |
10 | 布局引擎 |
guide/editor |
11 | 指南编辑器 |
guide/render |
6 | 渲染 |
guide/style |
6 | 样式 / 主题 |
guide/color |
6 | 颜色 |
guide/sound |
4 | 声音(<PlaySound> / <SoundArea> / <SoundLink> 标签) |
guide/indices |
8 | 索引(物品索引导航、搜索) |
guide/extensions |
3 | 扩展点 |
guide/navigation |
2 | 导航 |
guide/latex |
2 | GuideLatexRenderer / GuideLatexTextureCache |
guide/ui |
1 | UI 壳 |
导出
| 包 | 文件数 | 职责 |
|---|---|---|
guide/mediawiki |
61 | MediaWiki 导出 |
guide/siteexport |
53 | 站点导出 |
com/hfstudio/structurelibexport |
33 | StructureLib 导出(平级包根,见 结构导出) |
guideme/flatbuffers/scene |
16 | flatbuffers 生成的场景结构代码 |
内部实现(guide/internal,374 文件)
占全部主源(1402)的 26.7%,是最大的单一包。含场景运行时、渲染器、编辑器、
MasterScheduler 调度器、GuideOnStartup 启动流程、
GuideDevelopmentResourcePackWatcher 开发期资源包监听、
BuiltinSyntaxContributor 标签注册等。
生命周期
GuideNH(com/hfstudio/guidenh/GuideNH.java)是标准 FML 生命周期:
| 阶段 | 处理函数 |
|---|---|
| preInit | proxy.preInit(event) |
| init | proxy.init(event) |
| postInit | proxy.postInit(event) |
| loadComplete | proxy.completeInit(event) |
通过 @SidedProxy 分客户端 / 服务端:ClientProxy / CommonProxy。
相关条目
- MDX 标签 - 编译期可用的 119 个标签
- 结构导出 - 场景图对外输出
- Coremod 与 Mixin - 为何需要改原版类
- 模组兼容 - 场景图里的物品 / 配方怎么取