/dumphandlers 指令
基本信息
| 属性 | 值 |
|---|---|
| 指令名 | /dumphandlers |
| 实现类 | mcp.mobius.waila.commands.CommandDumpHandlers(CommandDumpHandlers.java:10) |
| 指令名方法 | getCommandName()(CommandDumpHandlers.java:13-15) |
| 用法字符串 | /dumphandlers(CommandDumpHandlers.java:18-20) |
| 注册时机 | FMLServerStartingEvent(Waila.java:122-125) |
| 权限 | 无 OP 等级检查;无参数 |
Waila 注册的唯一服务端指令,用于在排查 provider 冲突时把已注册的 handler 列表打到控制台。
功能
processCommand(CommandDumpHandlers.java:22-)遍历 ModuleRegistrar 的各个 provider 映射,对每个键(Class)打印其类名,再缩进打印该键下的每个 provider 实现类名(CommandDumpHandlers.java:26-32 的 Head 段为模板)。
打印的 8 个段
CommandDumpHandlers.java 共 109 行,processCommand 打印 8 段(4 个方块 + 4 个实体):
| 段标题 | 对应 ModuleRegistrar 字段 |
起始行 |
|---|---|---|
HEAD BLOCK PROVIDERS |
headBlockProviders |
CommandDumpHandlers.java:25 |
BODY BLOCK PROVIDERS |
bodyBlockProviders |
CommandDumpHandlers.java:34 |
TAIL BLOCK PROVIDERS |
tailBlockProviders |
CommandDumpHandlers.java:43 |
STACK BLOCK PROVIDERS |
stackBlockProviders |
CommandDumpHandlers.java:52 |
HEAD ENTITY PROVIDERS |
headEntityProviders |
CommandDumpHandlers.java:61 |
BODY ENTITY PROVIDERS |
bodyEntityProviders |
CommandDumpHandlers.java:70 |
TAIL ENTITY PROVIDERS |
tailEntityProviders |
CommandDumpHandlers.java:79 |
STACK ENTITY PROVIDERS |
— | CommandDumpHandlers.java:88 |
前 4 段的实现模式见 CommandDumpHandlers.java:26-32(HEAD 段):遍历 keySet() 打印 Class 名,再缩进打印该 Class 下的 provider 实现类名。
未覆盖的部分:ModuleRegistrar 中另有 NBT provider(NBTDataProviders、NBTEntityProviders)、FMP provider(3 个)、blockClassDecorators、FMPClassDecorators、syncedNBTKeys 等映射(ModuleRegistrar.java:32-52),均未出现在本指令的 8 个段中。因此 /dumphandlers 只能排查文本 provider,不能排查 NBT 同步与装饰器冲突。
输出使用 System.out.print / System.out.printf(CommandDumpHandlers.java:25、CommandDumpHandlers.java:27),即只进控制台,不回显给执行者——这是它作为排障工具而非游戏内功能的原因。
数值
| 项 | 值 | 来源 |
|---|---|---|
| Waila 注册的指令数 | 1 | Waila.java:124 |
| 指令参数个数 | 0 | CommandDumpHandlers.java:18-20 |
| 打印段数 | 8(4 方块 + 4 实体) | CommandDumpHandlers.java:25-88 |
CommandDumpHandlers.java 总行数 |
109 | 文件清点 |
ModuleRegistrar 中 provider/decorator 映射表数 |
16 | ModuleRegistrar.java:32-52 |
ModuleRegistrar 共声明 16 个 provider/decorator 映射表:5 个方块(Head/Body/Tail/Stack/NBT)+ 5 个实体(Head/Body/Tail/Override/NBT)+ 3 个 FMP + blockClassDecorators + FMPClassDecorators + syncedNBTKeys(ModuleRegistrar.java:32-52)。其中仅 8 个被 /dumphandlers 打印。
另有 summaryProviders(ModuleRegistrar.java:55)、wikiDescriptions(ModuleRegistrar.java:54)、IMCRequests(ModuleRegistrar.java:57)、tooltipRenderers(ModuleRegistrar.java:59)四个非 provider 映射,不计入上表。
交互
| 触发 | 行为 |
|---|---|
| 服务端启动 | Waila.serverStarting 向 FMLServerStartingEvent 注册本指令(Waila.java:122-125) |
玩家/控制台执行 /dumphandlers |
向服务端控制台打印全部已注册 provider 列表;执行者聊天栏无反馈 |
指令在服务端注册,但打印的是客户端也会用到的 provider 表——ModuleRegistrar 是双端共用的单例(ModuleRegistrar.java:65-68),因此服务端输出反映的是服务端进程内注册到的 handler。
相关条目
- IMC 注册入口 - provider 的注册通道,决定本指令的输出内容
- IWailaRegistrar - 被打印的 16 个映射表的来源接口
- 内置集成 - 20 个内置模块注册的 handler