/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,也没有向聊天栏返回任何文本 —— 所有内容只写入文件。
相关条目
- /oredistribution - 同一注册者提供的另一条调试指令
- BD lib 库本体 - 两条指令的注册时机