package net.minecraft.server; import java.util.Collections; import java.util.List; import javax.annotation.Nullable; public class CommandGamemode extends CommandAbstract { public CommandGamemode() {} public String getCommand() { return "gamemode"; } public int a() { return 2; } public String getUsage(ICommandListener icommandlistener) { return "commands.gamemode.usage"; } public void execute(MinecraftServer minecraftserver, ICommandListener icommandlistener, String[] astring) throws CommandException { if (astring.length <= 0) { throw new ExceptionUsage("commands.gamemode.usage", new Object[0]); } else { EnumGamemode enumgamemode = this.c(icommandlistener, astring[0]); EntityPlayer entityplayer = astring.length >= 2 ? a(minecraftserver, icommandlistener, astring[1]) : a(icommandlistener); entityplayer.a(enumgamemode); // CraftBukkit start - handle event cancelling the change if (entityplayer.playerInteractManager.getGameMode() != enumgamemode) { icommandlistener.sendMessage(new ChatComponentText("Failed to set the gamemode of '" + entityplayer.getName() + "'")); return; } // CraftBukkit end ChatMessage chatmessage = new ChatMessage("gameMode." + enumgamemode.b(), new Object[0]); if (icommandlistener.getWorld().getGameRules().getBoolean("sendCommandFeedback")) { entityplayer.sendMessage(new ChatMessage("gameMode.changed", new Object[] { chatmessage})); } if (entityplayer == icommandlistener) { a(icommandlistener, this, 1, "commands.gamemode.success.self", new Object[] { chatmessage}); } else { a(icommandlistener, this, 1, "commands.gamemode.success.other", new Object[] { entityplayer.getName(), chatmessage}); } } } protected EnumGamemode c(ICommandListener icommandlistener, String s) throws ExceptionInvalidNumber { EnumGamemode enumgamemode = EnumGamemode.a(s, EnumGamemode.NOT_SET); return enumgamemode == EnumGamemode.NOT_SET ? WorldSettings.a(a(s, 0, EnumGamemode.values().length - 2)) : enumgamemode; } public List<String> tabComplete(MinecraftServer minecraftserver, ICommandListener icommandlistener, String[] astring, @Nullable BlockPosition blockposition) { return astring.length == 1 ? a(astring, new String[] { "survival", "creative", "adventure", "spectator"}) : (astring.length == 2 ? a(astring, minecraftserver.getPlayers()) : Collections.<String>emptyList()); // CraftBukkit - decompile error } public boolean isListStart(String[] astring, int i) { return i == 1; } // CraftBukkit start - fix decompiler error @Override public int compareTo(ICommand o) { return a((ICommand) o); } // CraftBukkit end }