指令(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 = 10incoming子指令在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")
相关条目
- Debug 配置 -
/packetstats incoming依赖trackIncomingPackets - Coremod 引导 - 提供
HodgepodgeCore.isObf()供封包统计选择字段名 - F3 与性能 HUD - 区块生成统计等其它诊断入口