指令(Commands)

基本信息

属性 值
源目录 src/main/java/com/mitchej123/hodgepodge/commands/
指令总数 4(1 服务端 + 3 客户端)
服务端注册 Hodgepodge.java:93 —— aEvent.registerServerCommand(new DebugCommand())(FMLServerStartingEvent)
客户端注册 client/HodgepodgeClient.java:70-72 —— 三次 ClientCommandHandler.instance.registerCommand(...)
补全支持 /hp 自带三级 Tab 补全;/packetstats 自带子指令校验
权限 3 个客户端指令各自 getRequiredPermissionLevel() 均返回 0;/hp 未覆写该方法,沿用 CommandBase 默认值

功能

4 个指令都是诊断用途,不提供任何游戏内容。Hodgepodge 不注册方块、物品、实体或配方,因此没有 /give 之类的内容指令。

⚠️ 指令名大小写不敏感:FixesConfig.fixCaseCommands(默认 true)修复了原版命令处理器不允许任意大小写的问题;FixesConfig.fixSlashCommands 修复了处理器不检查前导 /。

明细

服务端指令

指令 权限 源文件 子指令
/hp 4(OP,默认) commands/DebugCommand.java toggle、anchor、randomNbt

/hp 子指令

子指令 参数 行为 源位置
/hp toggle anchordebug 无 翻转 AnchorAlarm.AnchorDebug 静态标志,回复 Anchor debugging: <bool>。这是全模组唯一可运行时切换的调试开关 DebugCommand.java:75-78
/hp anchor list [player] 可选玩家名 列出该玩家放置的 Railcraft 锚并写入日志,回复 Saved anchors dumped to the log for player: <name>;玩家不在当前世界时回复 No such player entity in the current world : <name>。省略玩家名则用指令发送者 DebugCommand.java:84-91
/hp randomNbt <bytes> 字节数(≥1) 往手持物品的 NBT 写入一个名为 DebugJunk 的随机 byte[],并触发 detectAndSendChanges() 同步 DebugCommand.java:97-113

/hp 的 Tab 补全覆盖三级:/hp → toggle/anchor/randomNbt → anchordebug/list → 在线玩家名列表(DebugCommand.java:42-61)。

/hp anchor list 依赖 Railcraft 的锚实体(util/AnchorAlarm.java),无 Railcraft 时没有作用。

客户端指令

指令 权限 源文件 行为
/allocationshud 0 commands/AllocationsCommand.java 切换分配速率 HUD:首次执行创建 AllocationRateHUD 并注册到 MinecraftForge.EVENT_BUS,再次执行注销并置空
/packetstats 0 commands/PacketStatsCommand.java 封包统计,见下
/dumptextureatlas 0 commands/DumpTextureAtlasCommand.java 分别导出 TextureMap.locationBlocksTexture 与 locationItemsTexture 两张贴图集到 ~/.minecraft/debug/,回复 Copied both atlases to your /.minecraft/debug folder.。两张图独立 try,任一失败会先发一条红色错误再继续下一张

/packetstats 子指令

子指令 参数 行为
/packetstats queue 无 立即读取 NetworkManager 的接收队列并输出快照(ticks = 0)
/packetstats incoming [ticks] 1–12000,默认 200 统计窗口期内按封包类型累计计数,输出 Top 10

细节(PacketStatsCommand.java:36-38):

  • DEFAULT_TICKS = 200,MAX_TICKS = 12000,TOP_COUNT = 10
  • incoming 子指令在 DebugConfig.trackIncomingPackets(默认 true)关闭时直接抛 CommandException,提示需在配置里打开该开关
  • queue 模式即使在 trackIncomingPackets 关闭时仍可用 —— 源码注释:「When disabled, /packetstats can still inspect the existing receive queue」(DebugConfig.java)
  • 重复执行同一命令会重启测量(PacketStatsCommand.java:104)
  • 反射取 NetworkManager 的 receivedPacketsQueue 字段,混淆环境下改用 SRG 名 field_150748_i(PacketStatsCommand.java:52-53,依赖 HodgepodgeCore.isObf())
  • 无活动客户端连接时抛 CommandException("[PacketStats] No active client connection")

相关条目