一個簡單的設定 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;
}