CommandAmidst
基本信息
| 属性 | 值 |
|---|---|
| 类名 | sedridor.forgeamidst.CommandAmidst |
| 文件 | src/main/java/sedridor/forgeamidst/CommandAmidst.java |
| 行数 | 39 |
| 继承 | extends net.minecraft.command.CommandBase |
| 命令名 | /amidst |
| 启用版本 | Minecraft 1.7.10 |
功能
服务端注册的命令,用于打开 Amidst 地图。由
ForgeAmidst 的 serverStarting 中
event.registerServerCommand(new CommandAmidst()) 注册。
5 个接口实现(全部实测值)
| 方法 | 返回 | 值 |
|---|---|---|
getCommandName() |
String |
"amidst" |
canCommandSenderUseCommand(ICommandSender) |
boolean |
true(无权限门槛) |
getRequiredPermissionLevel() |
int |
0(任何玩家可用) |
getCommandUsage(ICommandSender) |
String |
"/amidst" |
processCommand(ICommandSender, String[]) |
void |
打开地图 |
⚠️ canCommandSenderUseCommand 返回 true 且权限等级 0 ——
即任何玩家都能执行,无 OP 要求、无白名单。
processCommand 内部也不检查 ICommandSender 是否为
EntityPlayer(尽管下游 FinderWindow 是客户端 GUI)。
⚠️ 命令不接受任何参数(用法就是裸 /amidst),
但 processCommand 仍接收 String[] 形参 —— 多余输入被静默忽略。
与 F6 的差异
processCommand 的逻辑与 TickHandler 的按键分支同源
(同样是 FinderWindow.instance == null → loadAmidst() + loadMap()),
但没有 1 秒冷却,也没有 currentScreen == null 限制。
⚠️ 因此连续敲 /amidst 可绕过 F6 的冷却。
实现要点
- 命令走 FML 服务端命令(
FMLServerStartingEvent.registerServerCommand), 不是ClientCommandHandler。因此命令在服务端注册, 但其效果(打开 GUI)只在客户端发生。 - 本 mod 全仓没有
ClientCommandHandler调用。
关联
- ForgeAmidst -
serverStarting中注册 - TickHandler - F6 快捷键的另一条入口
- FinderWindow - 被打开的窗口