/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。

相关条目