结构导出
GuideNH 能把游戏里的结构导出成文件,供其它 mod 或文档流程使用。 这条链路横跨 coremod、mixin、网络与指令四个部分。
两种导出目标
| 目标 | 入口 | 说明 |
|---|---|---|
| StructureLib | com/hfstudio/structurelibexport/(33 文件) |
导出成 StructureLib 能读取的结构文件 |
| 场景(GameScene) | 同包 GameSceneExport* |
把指南 3D 场景导出成数据 |
| 区域(Region) | GuideNhRegionExport*(网络封包 ID 7) |
导出选中区域的场景数据 |
| 场景贴图 | 两个 Capture mixin | 把场景渲染成图片 |
structurelibexport 包(33 文件)
这是与 com.hfstudio.guidenh 平级的第三个包根,不在 guidenh 包下。
| 类 | 职责 |
|---|---|
StructureLibExportRunner |
导出主流程 |
StructureLibExportOptions |
导出选项 |
StructureLibExportOptionParser |
命令行式选项解析 |
StructureLibExportTaskSpec |
任务规格(位置、范围、文件名) |
StructureLibExportBackground |
后台执行 |
StructureLibExportFileNamer |
文件命名规则 |
StructureLibExportSubcommand |
/exportStructure structureLib 的执行体 |
StructureLibExportManifest / StructureLibExportManifestWriter |
导出清单读写 |
StructureLibAlignmentResolver |
对齐方式解析 |
StructureLibLayerResolver |
图层解析 |
StructureLibControllerDiscovery / StructureLibControllerSpec |
GT 控制器发现 |
StructureLibNumericFilter |
数值过滤 |
StructureLibOrientationSpec |
朝向规格 |
StructureLibExportPlanner |
导出规划 |
StructureLibExportOverlayRenderer |
离屏叠加渲染 |
StructureLibExportView |
导出视图 |
StructureLibExportImageLimits |
图像尺寸上限 |
StructureLibSceneBuilder |
从场景构建结构 |
StructureLibSceneBuildResult |
构建结果 |
StructureLibSceneCameraFitter |
相机拟合 |
StructureLibSceneImageExporter |
场景图像导出 |
StructureLibExportLevelRenderer |
离屏关卡渲染 |
StructureLibExportTimestamp |
时间戳 |
StructureExportCommand |
/exportStructure 客户端指令 |
StructureExportBootstrap |
客户端指令注册引导 |
GameSceneExportRunner |
GameScene 导出主流程 |
GameSceneExportOptions / GameSceneExportOptionParser |
GameScene 导出选项 |
GameSceneExportTaskSpec / GameSceneExportFileNamer |
GameScene 任务与命名 |
GameSceneExportManifest |
GameScene 清单 |
GameSceneExport* 把导出能力接到了
MDX 标签 的 <GameScene> 上——
即指南里的 3D 场景可以被反向导出。
场景贴图捕获
两个 mixin(见 Coremod 与 Mixin)负责把渲染 结果截出来:
| Mixin | 截什么 |
|---|---|
MixinModelRendererSceneExportCapture |
模型渲染(ModelRenderer) |
MixinTessellatorSceneExportCapture |
基础几何绘制(Tessellator) |
配合 StructureLibExportLevelRenderer 做离屏渲染,
产出可写入文档的图片。
指令入口
/exportStructure(客户端指令,见 指令):
| 子命令 | 作用 |
|---|---|
structureLib |
导出 StructureLib 结构文件,25 个选项;未装 StructureLib 时抛异常 |
gameScene |
导出 GameScene 场景数据,17 个选项,无外部依赖 |
另有 /guidenh 的两个服务端子命令:
| 子命令 | 参数 | 说明 |
|---|---|---|
importstructure |
<dx> <dy> <dz> <filePath> |
从文件导入结构,权限 3 |
placeallstructures |
<dx> <dy> <dz> |
放置全部结构,权限 3 |
坐标由 GuideStructureCoordinateParser.parsePosition(base, arg) 解析,
是相对玩家当前方块坐标的偏移,不是绝对坐标。
importstructure 通过
GuideNhClientBridgeMessage.importStructure(x, y, z, filePath)
发给客户端,因此必须在有客户端的服务器上执行。
网络
结构与区域数据都走 网络协议:
| 封包 ID | 类 | 方向 |
|---|---|---|
| 1 | GuideNhStructureRequestMessage |
Side.SERVER |
| 7 | GuideNhRegionExportRequestMessage |
Side.SERVER |
大结构分块传输,由 GuideNhStructureChunkAssembler 在接收端拼接。
这是必要的:Forge 对单个自定义载荷有硬上限。
相关键位
| 键位 | 默认 | 作用 |
|---|---|---|
key.guidenh.cycle_region_wand_mode |
未绑定 | 切换区域导出魔棒模式 |
魔棒用来圈选导出区域,默认不绑定,需玩家自行设置。 详情见 键位。
依赖
StructureLib(modid structurelib)是这条链路的目标格式。
它已在 relation.md 收录(✓ 完成),有独立分类页 → structurelib。
相关 mixin late/compat/structurelib/MixinSurvivalBuildStructureWalker
只在该 mod 存在时生效(Mods.StructureLib 作为 ITargetMod 条件)。
相关条目
- 指令 - 指令参数与权限
- 网络协议 - 分块传输
- Coremod 与 Mixin - 捕获型 mixin
- 键位 - 区域导出魔棒
- structurelib - 目标格式宿主 mod