/dynmapexp
基本信息
| 属性 | 值 |
|---|---|
| 指令名 | dynmapexp |
| 注册位置 | src/main/java/org/dynmap/forge/DynmapPlugin.java:1474 |
| 处理类 | DynmapExpCommand(DynmapPlugin.java:2064-2068) |
| 分派入口 | DynmapCore.processCommand 的 dynmapexp 分支(DynmapCore.java:1427-1433) |
| 子命令实现 | DynmapExpCommands.processCommand(DynmapExpCommands.java:62) |
| 导出实现 | org.dynmap.exporter.OBJExport(OBJExport.java:40) |
| 帮助表 | commandinfo 中本指令 7 行(DynmapCore.java:1185-1290) |
功能
把已渲染的地图区域导出为 Wavefront OBJ 3D 模型,供外部建模/渲染工具使用。流程是"选区 → 导出":先用 pos0/pos1 或 radius 划定立方体区域,再 export 生成文件。
分派使用 DynmapExpCommands.java:65-89 的 equalsIgnoreCase 链,每个分支交给独立的 handle* 方法。上下文 ExportContext ctx = getContext(sender)(DynmapExpCommands.java:65)按发送者保存,因此两个玩家的选区互不干扰。
导出坐标做了轴序转换:OBJExport.java:122 注释 Minecraft XYZ maps to OBJ YZX,即 Minecraft 的 Y 轴(向上)在 OBJ 中映射到 Z 轴。
子命令
| 子命令 | 处理方法 | 源码行 | 作用 |
|---|---|---|---|
set |
handleSetExport |
DynmapExpCommands.java:66-67 |
设置导出参数 |
pos0 |
handlePosN(…, 0) |
DynmapExpCommands.java:72-73 |
选区角点 0 |
pos1 |
handlePosN(…, 1) |
DynmapExpCommands.java:75-76 |
选区角点 1 |
radius |
handleRadius |
DynmapExpCommands.java:69-70 |
以当前位置为心的半径选区 |
export |
handleDoExport |
DynmapExpCommands.java:78-79 |
执行导出 |
reset |
handleResetExport |
DynmapExpCommands.java:81-82 |
重置选区 |
purge |
handlePurgeExport |
DynmapExpCommands.java:84-85 |
清除导出产物 |
info |
handleInfo |
DynmapExpCommands.java:87-88 |
输出导出信息 |
数值
set 支持的分组开关(DynmapExpCommands.java:146-155),均为布尔:
| 开关 | 源码行 |
|---|---|
groupByChunk |
DynmapExpCommands.java:146 |
groupByBlockID |
DynmapExpCommands.java:149 |
groupByBlockIDData |
DynmapExpCommands.java:152 |
groupByTexture |
DynmapExpCommands.java:155 |
交互
| 触发 | 行为 |
|---|---|
| 未知子命令 | processCommand 返回 false(DynmapExpCommands.java:65 起 rslt 初值 false),回落到 printCommandHelp(DynmapCore.java:1429-1431) |
选区未定义即 export |
由 handleDoExport 自行处理 |
已核实的不一致
purge 与 info 在运行时有分派但未登记进 commandinfo 帮助表(DynmapCore.java:1185-1290 内对应字符串出现 0 次)。/dynmapexp help 因此不会列出这两项。仓库中未找到注释表明这是有意省略,此处仅记录行为。