一个简单的设置 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;
}