/dumpalleles
基本信息
| 属性 | 值 |
|---|---|
| 指令名 | dumpalleles |
| 权限等级 | 2 |
| 注册时机 | FMLServerStartingEvent,Gendustry.scala:168 |
| 用法 | dumpalleles(getCommandUsage 返回字面量字符串,非本地化键) |
| 参数个数 | 0(不校验 params.length) |
| Tab 补全 | 无 |
功能
把 Forestry 全局等位基因注册表转储成文本文件,供分析模组包 / 整合包内的全部基因种类。
输出文件
| 属性 | 值 |
|---|---|
| 路径 | <Minecraft 主目录>/alleles.dump |
| 主目录来源 | FMLInjectionData.data()(6).asInstanceOf[File] |
| 编码 | 平台默认(FileWriter) |
FMLInjectionData.data()(6) 是 FML 内部 mcHome 字段,源码里带一句原作者的注释 // is there a better way to get this? —— 依赖 FML 私有字段索引,跨 FML 版本可能失效。
文件格式
==== ALLELES ====
<alleleUID> (<allele.getName>)
<alleleUID> (<allele.getName>)
...
- 首行固定
==== ALLELES ==== - 每行
"%s (%s)".format(id, allele.getName)—— 左括号内是 UID,右括号内是本地化名 - 全部行按 UID 字母序排序(
.toList.sorted)后以\n连接 - 末尾追加两个换行
排序保证了两次转储的 diff 稳定,便于版本间对比。
错误处理
try / catch (Throwable) / finally 三段式:
| 分支 | 行为 |
|---|---|
| 成功 | 回复 Alleles dumped to <绝对路径>(dumpFile.getCanonicalPath,字面量英文,非本地化) |
| 失败 | 回复 Failed to save registry dump: <异常>,并 Gendustry.logErrorException("Failed to save registry dump", e) |
| 无论成败 | finally { dumpWriter.close() } |
FileWriter 在 try 块之前创建 —— 若文件被占用无法创建,异常会逃出 processCommand 而不是被 catch (Throwable) 捕获。
用途
这是三条指令中唯一不发放游戏内物品的指令,属于纯诊断工具。配合 Gene Template 与 /givetemplate 使用:先转储得到合法 UID 列表,再按 UID 发放模板。
三条指令对照
| 指令 | 参数 | 产出 | 消息本地化 |
|---|---|---|---|
givetemplate |
1 | 模板 | 是(gendustry.givetemplate.*) |
givesample |
3 | 样本 | 是(gendustry.givesample.*,5 键全译) |
dumpalleles |
0 | 文件 | 否(字面量英文) |
相关条目
- /givetemplate - 姊妹指令
- /givesample - 姊妹指令