/dumpregistry

基本信息

属性 值
指令名 dumpregistry(CommandDumpRegistry.scala:23)
权限等级 2(CommandDumpRegistry.scala:24)
用法字符串 dumpregistry(无参数)
输出文件 <Minecraft 主目录>/registry.dump
注册位置 BdLib.serverStarting(BdLib.scala:80)
实现类 net.bdew.lib.CommandDumpRegistry(单例 object)

功能

/dumpregistry 是一个服务端调试指令,把当前游戏实例的注册表内容完整导出为文本文件。用于排查模组冲突、ID 重复或矿物字典问题。

输出文件路径由 FMLInjectionData.data()(6).asInstanceOf[File] 取得 —— 源码中作者本人对该取法留有注释「is there a better way to get this?」(CommandDumpRegistry.scala:28-30),即 Minecraft 主目录。

输出结构

文件按 5 个小节顺序写入,各节之间以两个换行分隔:

顺序 小节标题 内容来源
1 ==== BLOCKS ==== GameData.getBlockRegistry,取 getNameForObject 后排序(:36-44)
2 ==== ITEMS ==== GameData.getItemRegistry,取 getNameForObject 后排序(:46-54)
3 ==== CUSTOM STACKS ==== 反射读取 GameData 的私有字段 customItemStacks(:56-69)
4 ==== ORE DICT ==== OreDictionary.getOreNames 排序后展开(:71-78)
5 ==== FLUIDS ==== FluidRegistry(:80-84)

方块与物品两节均先 map(getNameForObject).toList.sorted.mkString("\n"),因此输出是按名称字典序排列的,便于用文本工具做 diff 比较两次存档/整合包之间的差异。

CUSTOM STACKS 一节使用 Java 反射突破访问限制:先 classOf[GameData].getDeclaredField("customItemStacks") 再 setAccessible(true),取出 Guava Table[String, String, ItemStack](:57-58)。

数值

数值名 值
输出小节数 5
所需参数个数 0
权限等级 2
方块/物品节的排序方式 字典序(.sorted)
小节分隔符 \n\n

交互

触发 行为
玩家/控制台输入 /dumpregistry 在游戏主目录生成 registry.dump,覆盖同名旧文件
权限等级不足 2 FML/原版指令系统拒绝执行
反射访问被安全策略阻止 异常上抛(CUSTOM STACKS 一节依赖反射)

该指令没有对应的客户端 GUI,也没有向聊天栏返回任何文本 —— 所有内容只写入文件。

相关条目