一个简单的设置 GameMode 命令(gm gamemode)

此示例显示了如何使用 onCommand 的一个非常基本的示例。我不建议直接在 onCommand 中处理你的命令,但这对于这个简单的情况起了作用。

在这个例子中,我们尝试设置玩家的游戏模式。

我们需要做的第一件事是确保发件人不是 ConsoleCommandSender,因为我们无法设置控制台的游戏模式。这是通过(sender instanceof Player)完成的。

接下来,我们希望玩家输入/ gm CREATIVE(或其他任何游戏模式),所以我们必须检查两件事:

  1. 确保它们传入 1 个参数(CREATIVE)
  2. 确保他们的命令是 gm

我们完成了这些检查:args.length == 1 && label.equalsIgnoreCase(gm

现在我们确定玩家输入了“/ gm x”。

接下来我们需要做的是将 args [0]转换为 GameMode 对象,以便我们可以将它应用到播放器。这可以通过 GameMode.valueOf(String) 来完成。但是,根据 Java 枚举文档,如果将一个字符串传递给与枚举不匹配的 valueOf(),它将抛出 IllegalArgumentException - 所以我们必须确保赶上那个。

一旦我们有了游戏模式,我们就可以继续使用 p.setGameMode(gm),玩家的游戏模式也会改变。在我们捕获异常的情况下 - 我们只是打印出一个语句并返回 false。

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (sender instanceof Player) { 
        final Player p = (Player) sender;

        if (args.length == 1 && label.equalsIgnoreCase("gm")) {
            try {
                GameMode gm = GameMode.valueOf(args[0]);
                p.setGameMode(gm);
                p.sendMessage(ChatColor.GREEN + "Your gamemode has been set to: " + gm.toString());
                return true;
            } catch (IllegalArgumentException e) {
                p.sendMessage(ChatColor.RED + "Invalid gamemode option!");
                return false;
            }

        }
    }
    return false;
}