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 调用。

关联