/bloodmagic 指令
基本信息
| 属性 | 值 |
|---|---|
| 指令名 | /bloodmagic |
| 别名 | BloodMagic、bloodmagic、bloodMagic、bm(共 4 个) |
| 权限等级 | 3(OP) |
| 所需权限 | 无(getRequiredPermissionLevel() 返回 3,即服务端 OP) |
| 注册位置 | AlchemicalWizardry.initCommands(FMLServerStartingEvent),AlchemicalWizardry.java:4537-4540 |
| 类 | WayofTime.alchemicalWizardry.common.commands.CommandBloodMagic |
| 子指令数 | 4 |
| 用法提示 | /bloodmagic help |
注册代码:
@EventHandler
public void initCommands(FMLServerStartingEvent event) {
event.registerServerCommand(new CommandBloodMagic());
}
4 个子指令
| 子指令 | 实现类 | 职责 |
|---|---|---|
help |
SubCommandHelp |
显示帮助 |
network |
SubCommandNetwork |
气血网络操作 |
bind |
SubCommandBind |
绑定操作 |
orb |
SubCommandOrb |
气血宝珠操作 |
注册于 CommandBloodMagic 构造器(CommandBloodMagic.java:32-35):
subCommands.put("help", new SubCommandHelp(this));
subCommands.put("network", new SubCommandNetwork(this));
subCommands.put("bind", new SubCommandBind(this));
subCommands.put("orb", new SubCommandOrb(this));
processCommand 以 args[0] 查表分发(CommandBloodMagic.java:59-),未命中则回退到帮助。
别名的 3 处大小写重复
4 个别名中有 3 个仅大小写不同:
| 别名 | 与 /bloodmagic 的差异 |
|---|---|
BloodMagic |
首字母大写 |
bloodmagic |
无差异(全小写) |
bloodMagic |
中间字母大写 |
bm |
缩写 |
其中 bloodmagic 与 getCommandName() 返回的 /bloodmagic 完全重复 —— 同一指令把自身名字注册为自己的别名。Forge 的 CommandBase 会对重复别名静默取先注册者,因此不致崩溃,但属冗余。
内部绑定指令(与子指令不同)
common/commands/ 包中还有 2 个独立的老式指令类,它们不走 subCommands 派发体系,而是各自继承 CommandBase:
| 类 | 职责 |
|---|---|
CommandBind |
独立的绑定指令 |
CommandUnbind |
独立的解绑指令 |
CommandSN |
独立指令(功能未核实) |
三个类均未被注册,属死代码。
这 3 个类在 AlchemicalWizardry.initCommands() 中未被注册(该方法只注册了 CommandBloodMagic 一个)。已用两处 grep 交叉验证:
| 验证项 | 结果 |
|---|---|
全仓库 registerServerCommand 出现次数 |
1(AlchemicalWizardry.java:4539,仅注册 CommandBloodMagic) |
CommandBind / CommandUnbind / CommandSN 在自身文件外的引用 |
0 |
即这 3 个类是完整的死代码:既未注册,也无任何其他代码路径实例化或引用。SubCommandBind(子指令,含 Sub 前缀)是活跃的,与之无关。
包内其余文件为派发框架:
| 文件 | 作用 |
|---|---|
ISubCommand |
子指令接口(位于 api/command) |
SubCommandBase |
子指令基类 |
数值
| 数值名 | 值 |
|---|---|
| 主指令数 | 1 |
| 别名数 | 4(其中 1 个与指令名重复) |
| 子指令数 | 4 |
| 权限等级 | 3 |
registerServerCommand 调用数 |
1 |
| 未注册的老式指令类 | 3(CommandBind、CommandUnbind、CommandSN) |