结构导出

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 条件)。

相关条目