/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 文件 否(字面量英文)

相关条目