一個簡單的設定 GameMode 命令(gm gamemode)
此示例顯示瞭如何使用 onCommand 的一個非常基本的示例。我不建議直接在 onCommand 中處理你的命令,但這對於這個簡單的情況起了作用。
在這個例子中,我們嘗試設定玩家的遊戲模式。
我們需要做的第一件事是確保發件人不是 ConsoleCommandSender,因為我們無法設定控制檯的遊戲模式。這是通過(sender instanceof Player)完成的。
接下來,我們希望玩家輸入/ gm CREATIVE(或其他任何遊戲模式),所以我們必須檢查兩件事:
- 確保它們傳入 1 個引數(CREATIVE)
- 確保他們的命令是
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;
}