package net.minecraft.command.server; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.SyntaxErrorException; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.scoreboard.IScoreObjectiveCriteria; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; public class CommandScoreboard extends CommandBase { private static final String __OBFID = "CL_00000896"; public String getCommandName() { return "scoreboard"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender sender) { return "commands.scoreboard.usage"; } public void processCommand(ICommandSender sender, String[] args) { if (args.length >= 1) { if (args[0].equalsIgnoreCase("objectives")) { if (args.length == 1) { throw new WrongUsageException("commands.scoreboard.objectives.usage", new Object[0]); } if (args[1].equalsIgnoreCase("list")) { this.listObjectives(sender); } else if (args[1].equalsIgnoreCase("add")) { if (args.length < 4) { throw new WrongUsageException("commands.scoreboard.objectives.add.usage", new Object[0]); } this.addObjective(sender, args, 2); } else if (args[1].equalsIgnoreCase("remove")) { if (args.length != 3) { throw new WrongUsageException("commands.scoreboard.objectives.remove.usage", new Object[0]); } this.removeObjective(sender, args[2]); } else { if (!args[1].equalsIgnoreCase("setdisplay")) { throw new WrongUsageException("commands.scoreboard.objectives.usage", new Object[0]); } if (args.length != 3 && args.length != 4) { throw new WrongUsageException("commands.scoreboard.objectives.setdisplay.usage", new Object[0]); } this.setObjectiveDisplay(sender, args, 2); } return; } if (args[0].equalsIgnoreCase("players")) { if (args.length == 1) { throw new WrongUsageException("commands.scoreboard.players.usage", new Object[0]); } if (args[1].equalsIgnoreCase("list")) { if (args.length > 3) { throw new WrongUsageException("commands.scoreboard.players.list.usage", new Object[0]); } this.listPlayers(sender, args, 2); } else if (args[1].equalsIgnoreCase("add")) { if (args.length != 5) { throw new WrongUsageException("commands.scoreboard.players.add.usage", new Object[0]); } this.setPlayer(sender, args, 2); } else if (args[1].equalsIgnoreCase("remove")) { if (args.length != 5) { throw new WrongUsageException("commands.scoreboard.players.remove.usage", new Object[0]); } this.setPlayer(sender, args, 2); } else if (args[1].equalsIgnoreCase("set")) { if (args.length != 5) { throw new WrongUsageException("commands.scoreboard.players.set.usage", new Object[0]); } this.setPlayer(sender, args, 2); } else { if (!args[1].equalsIgnoreCase("reset")) { throw new WrongUsageException("commands.scoreboard.players.usage", new Object[0]); } if (args.length != 3) { throw new WrongUsageException("commands.scoreboard.players.reset.usage", new Object[0]); } this.resetPlayers(sender, args, 2); } return; } if (args[0].equalsIgnoreCase("teams")) { if (args.length == 1) { throw new WrongUsageException("commands.scoreboard.teams.usage", new Object[0]); } if (args[1].equalsIgnoreCase("list")) { if (args.length > 3) { throw new WrongUsageException("commands.scoreboard.teams.list.usage", new Object[0]); } this.listTeams(sender, args, 2); } else if (args[1].equalsIgnoreCase("add")) { if (args.length < 3) { throw new WrongUsageException("commands.scoreboard.teams.add.usage", new Object[0]); } this.addTeam(sender, args, 2); } else if (args[1].equalsIgnoreCase("remove")) { if (args.length != 3) { throw new WrongUsageException("commands.scoreboard.teams.remove.usage", new Object[0]); } this.removeTeam(sender, args, 2); } else if (args[1].equalsIgnoreCase("empty")) { if (args.length != 3) { throw new WrongUsageException("commands.scoreboard.teams.empty.usage", new Object[0]); } this.emptyTeam(sender, args, 2); } else if (args[1].equalsIgnoreCase("join")) { if (args.length < 4 && (args.length != 3 || !(sender instanceof EntityPlayer))) { throw new WrongUsageException("commands.scoreboard.teams.join.usage", new Object[0]); } this.joinTeam(sender, args, 2); } else if (args[1].equalsIgnoreCase("leave")) { if (args.length < 3 && !(sender instanceof EntityPlayer)) { throw new WrongUsageException("commands.scoreboard.teams.leave.usage", new Object[0]); } this.leaveTeam(sender, args, 2); } else { if (!args[1].equalsIgnoreCase("option")) { throw new WrongUsageException("commands.scoreboard.teams.usage", new Object[0]); } if (args.length != 4 && args.length != 5) { throw new WrongUsageException("commands.scoreboard.teams.option.usage", new Object[0]); } this.setTeamOption(sender, args, 2); } return; } } throw new WrongUsageException("commands.scoreboard.usage", new Object[0]); } protected Scoreboard getScoreboard() { return MinecraftServer.getServer().worldServerForDimension(0).getScoreboard(); } protected ScoreObjective func_147189_a(String name, boolean edit) { Scoreboard scoreboard = this.getScoreboard(); ScoreObjective scoreobjective = scoreboard.getObjective(name); if (scoreobjective == null) { throw new CommandException("commands.scoreboard.objectiveNotFound", new Object[] {name}); } else if (edit && scoreobjective.getCriteria().isReadOnly()) { throw new CommandException("commands.scoreboard.objectiveReadOnly", new Object[] {name}); } else { return scoreobjective; } } protected ScorePlayerTeam func_147183_a(String name) { Scoreboard scoreboard = this.getScoreboard(); ScorePlayerTeam scoreplayerteam = scoreboard.getTeam(name); if (scoreplayerteam == null) { throw new CommandException("commands.scoreboard.teamNotFound", new Object[] {name}); } else { return scoreplayerteam; } } protected void addObjective(ICommandSender sender, String[] args, int index) { String s = args[index++]; String s1 = args[index++]; Scoreboard scoreboard = this.getScoreboard(); IScoreObjectiveCriteria iscoreobjectivecriteria = (IScoreObjectiveCriteria)IScoreObjectiveCriteria.INSTANCES.get(s1); if (iscoreobjectivecriteria == null) { throw new WrongUsageException("commands.scoreboard.objectives.add.wrongType", new Object[] {s1}); } else if (scoreboard.getObjective(s) != null) { throw new CommandException("commands.scoreboard.objectives.add.alreadyExists", new Object[] {s}); } else if (s.length() > 16) { throw new SyntaxErrorException("commands.scoreboard.objectives.add.tooLong", new Object[] {s, Integer.valueOf(16)}); } else if (s.length() == 0) { throw new WrongUsageException("commands.scoreboard.objectives.add.usage", new Object[0]); } else { if (args.length > index) { String s2 = getChatComponentFromNthArg(sender, args, index).getUnformattedText(); if (s2.length() > 32) { throw new SyntaxErrorException("commands.scoreboard.objectives.add.displayTooLong", new Object[] {s2, Integer.valueOf(32)}); } if (s2.length() > 0) { scoreboard.addScoreObjective(s, iscoreobjectivecriteria).setDisplayName(s2); } else { scoreboard.addScoreObjective(s, iscoreobjectivecriteria); } } else { scoreboard.addScoreObjective(s, iscoreobjectivecriteria); } notifyOperators(sender, this, "commands.scoreboard.objectives.add.success", new Object[] {s}); } } protected void addTeam(ICommandSender p_147185_1_, String[] p_147185_2_, int p_147185_3_) { String s = p_147185_2_[p_147185_3_++]; Scoreboard scoreboard = this.getScoreboard(); if (scoreboard.getTeam(s) != null) { throw new CommandException("commands.scoreboard.teams.add.alreadyExists", new Object[] {s}); } else if (s.length() > 16) { throw new SyntaxErrorException("commands.scoreboard.teams.add.tooLong", new Object[] {s, Integer.valueOf(16)}); } else if (s.length() == 0) { throw new WrongUsageException("commands.scoreboard.teams.add.usage", new Object[0]); } else { if (p_147185_2_.length > p_147185_3_) { String s1 = getChatComponentFromNthArg(p_147185_1_, p_147185_2_, p_147185_3_).getUnformattedText(); if (s1.length() > 32) { throw new SyntaxErrorException("commands.scoreboard.teams.add.displayTooLong", new Object[] {s1, Integer.valueOf(32)}); } if (s1.length() > 0) { scoreboard.createTeam(s).setTeamName(s1); } else { scoreboard.createTeam(s); } } else { scoreboard.createTeam(s); } notifyOperators(p_147185_1_, this, "commands.scoreboard.teams.add.success", new Object[] {s}); } } protected void setTeamOption(ICommandSender p_147200_1_, String[] p_147200_2_, int p_147200_3_) { ScorePlayerTeam scoreplayerteam = this.func_147183_a(p_147200_2_[p_147200_3_++]); if (scoreplayerteam != null) { String s = p_147200_2_[p_147200_3_++].toLowerCase(); if (!s.equalsIgnoreCase("color") && !s.equalsIgnoreCase("friendlyfire") && !s.equalsIgnoreCase("seeFriendlyInvisibles")) { throw new WrongUsageException("commands.scoreboard.teams.option.usage", new Object[0]); } else if (p_147200_2_.length == 4) { if (s.equalsIgnoreCase("color")) { throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, joinNiceStringFromCollection(EnumChatFormatting.getValidValues(true, false))}); } else if (!s.equalsIgnoreCase("friendlyfire") && !s.equalsIgnoreCase("seeFriendlyInvisibles")) { throw new WrongUsageException("commands.scoreboard.teams.option.usage", new Object[0]); } else { throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, joinNiceStringFromCollection(Arrays.asList(new String[]{"true", "false"}))}); } } else { String s1 = p_147200_2_[p_147200_3_++]; if (s.equalsIgnoreCase("color")) { EnumChatFormatting enumchatformatting = EnumChatFormatting.getValueByName(s1); if (enumchatformatting == null || enumchatformatting.isFancyStyling()) { throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, joinNiceStringFromCollection(EnumChatFormatting.getValidValues(true, false))}); } scoreplayerteam.setNamePrefix(enumchatformatting.toString()); scoreplayerteam.setNameSuffix(EnumChatFormatting.RESET.toString()); } else if (s.equalsIgnoreCase("friendlyfire")) { if (!s1.equalsIgnoreCase("true") && !s1.equalsIgnoreCase("false")) { throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, joinNiceStringFromCollection(Arrays.asList(new String[]{"true", "false"}))}); } scoreplayerteam.setAllowFriendlyFire(s1.equalsIgnoreCase("true")); } else if (s.equalsIgnoreCase("seeFriendlyInvisibles")) { if (!s1.equalsIgnoreCase("true") && !s1.equalsIgnoreCase("false")) { throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, joinNiceStringFromCollection(Arrays.asList(new String[]{"true", "false"}))}); } scoreplayerteam.setSeeFriendlyInvisiblesEnabled(s1.equalsIgnoreCase("true")); } notifyOperators(p_147200_1_, this, "commands.scoreboard.teams.option.success", new Object[] {s, scoreplayerteam.getRegisteredName(), s1}); } } } protected void removeTeam(ICommandSender p_147194_1_, String[] p_147194_2_, int p_147194_3_) { Scoreboard scoreboard = this.getScoreboard(); ScorePlayerTeam scoreplayerteam = this.func_147183_a(p_147194_2_[p_147194_3_++]); if (scoreplayerteam != null) { scoreboard.removeTeam(scoreplayerteam); notifyOperators(p_147194_1_, this, "commands.scoreboard.teams.remove.success", new Object[] {scoreplayerteam.getRegisteredName()}); } } protected void listTeams(ICommandSender p_147186_1_, String[] p_147186_2_, int p_147186_3_) { Scoreboard scoreboard = this.getScoreboard(); if (p_147186_2_.length > p_147186_3_) { ScorePlayerTeam scoreplayerteam = this.func_147183_a(p_147186_2_[p_147186_3_++]); if (scoreplayerteam == null) { return; } Collection collection = scoreplayerteam.getMembershipCollection(); if (collection.size() <= 0) { throw new CommandException("commands.scoreboard.teams.list.player.empty", new Object[] {scoreplayerteam.getRegisteredName()}); } ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.scoreboard.teams.list.player.count", new Object[] {Integer.valueOf(collection.size()), scoreplayerteam.getRegisteredName()}); chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.DARK_GREEN); p_147186_1_.addChatMessage(chatcomponenttranslation); p_147186_1_.addChatMessage(new ChatComponentText(joinNiceString(collection.toArray()))); } else { Collection collection1 = scoreboard.getTeams(); if (collection1.size() <= 0) { throw new CommandException("commands.scoreboard.teams.list.empty", new Object[0]); } ChatComponentTranslation chatcomponenttranslation1 = new ChatComponentTranslation("commands.scoreboard.teams.list.count", new Object[] {Integer.valueOf(collection1.size())}); chatcomponenttranslation1.getChatStyle().setColor(EnumChatFormatting.DARK_GREEN); p_147186_1_.addChatMessage(chatcomponenttranslation1); Iterator iterator = collection1.iterator(); while (iterator.hasNext()) { ScorePlayerTeam scoreplayerteam1 = (ScorePlayerTeam)iterator.next(); p_147186_1_.addChatMessage(new ChatComponentTranslation("commands.scoreboard.teams.list.entry", new Object[] {scoreplayerteam1.getRegisteredName(), scoreplayerteam1.func_96669_c(), Integer.valueOf(scoreplayerteam1.getMembershipCollection().size())})); } } } protected void joinTeam(ICommandSender p_147190_1_, String[] p_147190_2_, int p_147190_3_) { Scoreboard scoreboard = this.getScoreboard(); String s = p_147190_2_[p_147190_3_++]; HashSet hashset = new HashSet(); HashSet hashset1 = new HashSet(); String s1; if (p_147190_1_ instanceof EntityPlayer && p_147190_3_ == p_147190_2_.length) { s1 = getCommandSenderAsPlayer(p_147190_1_).getCommandSenderName(); if (scoreboard.func_151392_a(s1, s)) { hashset.add(s1); } else { hashset1.add(s1); } } else { while (p_147190_3_ < p_147190_2_.length) { s1 = getPlayerName(p_147190_1_, p_147190_2_[p_147190_3_++]); if (scoreboard.func_151392_a(s1, s)) { hashset.add(s1); } else { hashset1.add(s1); } } } if (!hashset.isEmpty()) { notifyOperators(p_147190_1_, this, "commands.scoreboard.teams.join.success", new Object[] {Integer.valueOf(hashset.size()), s, joinNiceString(hashset.toArray(new String[0]))}); } if (!hashset1.isEmpty()) { throw new CommandException("commands.scoreboard.teams.join.failure", new Object[] {Integer.valueOf(hashset1.size()), s, joinNiceString(hashset1.toArray(new String[0]))}); } } protected void leaveTeam(ICommandSender p_147199_1_, String[] p_147199_2_, int p_147199_3_) { Scoreboard scoreboard = this.getScoreboard(); HashSet hashset = new HashSet(); HashSet hashset1 = new HashSet(); String s; if (p_147199_1_ instanceof EntityPlayer && p_147199_3_ == p_147199_2_.length) { s = getCommandSenderAsPlayer(p_147199_1_).getCommandSenderName(); if (scoreboard.removePlayerFromTeams(s)) { hashset.add(s); } else { hashset1.add(s); } } else { while (p_147199_3_ < p_147199_2_.length) { s = getPlayerName(p_147199_1_, p_147199_2_[p_147199_3_++]); if (scoreboard.removePlayerFromTeams(s)) { hashset.add(s); } else { hashset1.add(s); } } } if (!hashset.isEmpty()) { notifyOperators(p_147199_1_, this, "commands.scoreboard.teams.leave.success", new Object[] {Integer.valueOf(hashset.size()), joinNiceString(hashset.toArray(new String[0]))}); } if (!hashset1.isEmpty()) { throw new CommandException("commands.scoreboard.teams.leave.failure", new Object[] {Integer.valueOf(hashset1.size()), joinNiceString(hashset1.toArray(new String[0]))}); } } protected void emptyTeam(ICommandSender p_147188_1_, String[] p_147188_2_, int p_147188_3_) { Scoreboard scoreboard = this.getScoreboard(); ScorePlayerTeam scoreplayerteam = this.func_147183_a(p_147188_2_[p_147188_3_++]); if (scoreplayerteam != null) { ArrayList arraylist = new ArrayList(scoreplayerteam.getMembershipCollection()); if (arraylist.isEmpty()) { throw new CommandException("commands.scoreboard.teams.empty.alreadyEmpty", new Object[] {scoreplayerteam.getRegisteredName()}); } else { Iterator iterator = arraylist.iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); scoreboard.removePlayerFromTeam(s, scoreplayerteam); } notifyOperators(p_147188_1_, this, "commands.scoreboard.teams.empty.success", new Object[] {Integer.valueOf(arraylist.size()), scoreplayerteam.getRegisteredName()}); } } } protected void removeObjective(ICommandSender p_147191_1_, String p_147191_2_) { Scoreboard scoreboard = this.getScoreboard(); ScoreObjective scoreobjective = this.func_147189_a(p_147191_2_, false); scoreboard.func_96519_k(scoreobjective); notifyOperators(p_147191_1_, this, "commands.scoreboard.objectives.remove.success", new Object[] {p_147191_2_}); } protected void listObjectives(ICommandSender p_147196_1_) { Scoreboard scoreboard = this.getScoreboard(); Collection collection = scoreboard.getScoreObjectives(); if (collection.size() <= 0) { throw new CommandException("commands.scoreboard.objectives.list.empty", new Object[0]); } else { ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.scoreboard.objectives.list.count", new Object[] {Integer.valueOf(collection.size())}); chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.DARK_GREEN); p_147196_1_.addChatMessage(chatcomponenttranslation); Iterator iterator = collection.iterator(); while (iterator.hasNext()) { ScoreObjective scoreobjective = (ScoreObjective)iterator.next(); p_147196_1_.addChatMessage(new ChatComponentTranslation("commands.scoreboard.objectives.list.entry", new Object[] {scoreobjective.getName(), scoreobjective.getDisplayName(), scoreobjective.getCriteria().getName()})); } } } protected void setObjectiveDisplay(ICommandSender p_147198_1_, String[] p_147198_2_, int p_147198_3_) { Scoreboard scoreboard = this.getScoreboard(); String s = p_147198_2_[p_147198_3_++]; int j = Scoreboard.getObjectiveDisplaySlotNumber(s); ScoreObjective scoreobjective = null; if (p_147198_2_.length == 4) { scoreobjective = this.func_147189_a(p_147198_2_[p_147198_3_++], false); } if (j < 0) { throw new CommandException("commands.scoreboard.objectives.setdisplay.invalidSlot", new Object[] {s}); } else { scoreboard.setObjectiveInDisplaySlot(j, scoreobjective); if (scoreobjective != null) { notifyOperators(p_147198_1_, this, "commands.scoreboard.objectives.setdisplay.successSet", new Object[] {Scoreboard.getObjectiveDisplaySlot(j), scoreobjective.getName()}); } else { notifyOperators(p_147198_1_, this, "commands.scoreboard.objectives.setdisplay.successCleared", new Object[] {Scoreboard.getObjectiveDisplaySlot(j)}); } } } protected void listPlayers(ICommandSender p_147195_1_, String[] p_147195_2_, int p_147195_3_) { Scoreboard scoreboard = this.getScoreboard(); if (p_147195_2_.length > p_147195_3_) { String s = getPlayerName(p_147195_1_, p_147195_2_[p_147195_3_++]); Map map = scoreboard.func_96510_d(s); if (map.size() <= 0) { throw new CommandException("commands.scoreboard.players.list.player.empty", new Object[] {s}); } ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.scoreboard.players.list.player.count", new Object[] {Integer.valueOf(map.size()), s}); chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.DARK_GREEN); p_147195_1_.addChatMessage(chatcomponenttranslation); Iterator iterator = map.values().iterator(); while (iterator.hasNext()) { Score score = (Score)iterator.next(); p_147195_1_.addChatMessage(new ChatComponentTranslation("commands.scoreboard.players.list.player.entry", new Object[] {Integer.valueOf(score.getScorePoints()), score.func_96645_d().getDisplayName(), score.func_96645_d().getName()})); } } else { Collection collection = scoreboard.getObjectiveNames(); if (collection.size() <= 0) { throw new CommandException("commands.scoreboard.players.list.empty", new Object[0]); } ChatComponentTranslation chatcomponenttranslation1 = new ChatComponentTranslation("commands.scoreboard.players.list.count", new Object[] {Integer.valueOf(collection.size())}); chatcomponenttranslation1.getChatStyle().setColor(EnumChatFormatting.DARK_GREEN); p_147195_1_.addChatMessage(chatcomponenttranslation1); p_147195_1_.addChatMessage(new ChatComponentText(joinNiceString(collection.toArray()))); } } protected void setPlayer(ICommandSender p_147197_1_, String[] p_147197_2_, int p_147197_3_) { String s = p_147197_2_[p_147197_3_ - 1]; String s1 = getPlayerName(p_147197_1_, p_147197_2_[p_147197_3_++]); ScoreObjective scoreobjective = this.func_147189_a(p_147197_2_[p_147197_3_++], true); int j = s.equalsIgnoreCase("set") ? parseInt(p_147197_1_, p_147197_2_[p_147197_3_++]) : parseIntWithMin(p_147197_1_, p_147197_2_[p_147197_3_++], 1); Scoreboard scoreboard = this.getScoreboard(); Score score = scoreboard.getValueFromObjective(s1, scoreobjective); if (s.equalsIgnoreCase("set")) { score.setScorePoints(j); } else if (s.equalsIgnoreCase("add")) { score.increseScore(j); } else { score.decreaseScore(j); } notifyOperators(p_147197_1_, this, "commands.scoreboard.players.set.success", new Object[] {scoreobjective.getName(), s1, Integer.valueOf(score.getScorePoints())}); } protected void resetPlayers(ICommandSender p_147187_1_, String[] p_147187_2_, int p_147187_3_) { Scoreboard scoreboard = this.getScoreboard(); String s = getPlayerName(p_147187_1_, p_147187_2_[p_147187_3_++]); scoreboard.func_96515_c(s); notifyOperators(p_147187_1_, this, "commands.scoreboard.players.reset.success", new Object[] {s}); } /** * Adds the strings available in this command to the given list of tab completion options. */ public List addTabCompletionOptions(ICommandSender sender, String[] args) { if (args.length == 1) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given string array * is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"objectives", "players", "teams"}); } else { if (args[0].equalsIgnoreCase("objectives")) { if (args.length == 2) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given string * array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"list", "add", "remove", "setdisplay"}); } if (args[1].equalsIgnoreCase("add")) { if (args.length == 4) { Set set = IScoreObjectiveCriteria.INSTANCES.keySet(); /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, set); } } else if (args[1].equalsIgnoreCase("remove")) { if (args.length == 3) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.func_147184_a(false)); } } else if (args[1].equalsIgnoreCase("setdisplay")) { if (args.length == 3) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given * string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"list", "sidebar", "belowName"}); } if (args.length == 4) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.func_147184_a(false)); } } } else if (args[0].equalsIgnoreCase("players")) { if (args.length == 2) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given string * array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"set", "add", "remove", "reset", "list"}); } if (!args[1].equalsIgnoreCase("set") && !args[1].equalsIgnoreCase("add") && !args[1].equalsIgnoreCase("remove")) { if ((args[1].equalsIgnoreCase("reset") || args[1].equalsIgnoreCase("list")) && args.length == 3) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.getScoreboard().getObjectiveNames()); } } else { if (args.length == 3) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given * string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()); } if (args.length == 4) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.func_147184_a(true)); } } } else if (args[0].equalsIgnoreCase("teams")) { if (args.length == 2) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given string * array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"add", "remove", "join", "leave", "empty", "list", "option"}); } if (args[1].equalsIgnoreCase("join")) { if (args.length == 3) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.getScoreboard().getTeamNames()); } if (args.length >= 4) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given * string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()); } } else { if (args[1].equalsIgnoreCase("leave")) { /** * Returns a List of strings (chosen from the given strings) which the last word in the given * string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()); } if (!args[1].equalsIgnoreCase("empty") && !args[1].equalsIgnoreCase("list") && !args[1].equalsIgnoreCase("remove")) { if (args[1].equalsIgnoreCase("option")) { if (args.length == 3) { /** * Returns a List of strings (chosen from the given string iterable) which the last word * in the given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.getScoreboard().getTeamNames()); } if (args.length == 4) { /** * Returns a List of strings (chosen from the given strings) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"color", "friendlyfire", "seeFriendlyInvisibles"}); } if (args.length == 5) { if (args[3].equalsIgnoreCase("color")) { /** * Returns a List of strings (chosen from the given string iterable) which the last * word in the given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, EnumChatFormatting.getValidValues(true, false)); } if (args[3].equalsIgnoreCase("friendlyfire") || args[3].equalsIgnoreCase("seeFriendlyInvisibles")) { /** * Returns a List of strings (chosen from the given strings) which the last word in * the given string array is a beginning-match for. (Tab completion). */ return getListOfStringsMatchingLastWord(args, new String[] {"true", "false"}); } } } } else if (args.length == 3) { /** * Returns a List of strings (chosen from the given string iterable) which the last word in the * given string array is a beginning-match for. (Tab completion). */ return getListOfStringsFromIterableMatchingLastWord(args, this.getScoreboard().getTeamNames()); } } } return null; } } protected List func_147184_a(boolean p_147184_1_) { Collection collection = this.getScoreboard().getScoreObjectives(); ArrayList arraylist = new ArrayList(); Iterator iterator = collection.iterator(); while (iterator.hasNext()) { ScoreObjective scoreobjective = (ScoreObjective)iterator.next(); if (!p_147184_1_ || !scoreobjective.getCriteria().isReadOnly()) { arraylist.add(scoreobjective.getName()); } } return arraylist; } /** * Return whether the specified command parameter index is a username parameter. */ public boolean isUsernameIndex(String[] args, int index) { return args[0].equalsIgnoreCase("players") ? index == 2 : (!args[0].equalsIgnoreCase("teams") ? false : index == 2 || index == 3); } }