package net.minecraft.scoreboard;
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 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.server.MinecraftServer;
import net.minecraft.util.EnumChatFormatting;
public class ServerCommandScoreboard extends CommandBase
{
public String getCommandName()
{
return "scoreboard";
}
/**
* Return the required permission level for this command.
*/
public int getRequiredPermissionLevel()
{
return 2;
}
public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
{
if (par2ArrayOfStr.length >= 1)
{
if (par2ArrayOfStr[0].equalsIgnoreCase("objectives"))
{
if (par2ArrayOfStr.length == 1)
{
throw new WrongUsageException("commands.scoreboard.objectives.usage", new Object[0]);
}
if (par2ArrayOfStr[1].equalsIgnoreCase("list"))
{
this.getObjectivesList(par1ICommandSender);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("add"))
{
if (par2ArrayOfStr.length < 4)
{
throw new WrongUsageException("commands.scoreboard.objectives.add.usage", new Object[0]);
}
this.addObjective(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if (par2ArrayOfStr.length != 3)
{
throw new WrongUsageException("commands.scoreboard.objectives.remove.usage", new Object[0]);
}
this.removeObjective(par1ICommandSender, par2ArrayOfStr[2]);
}
else
{
if (!par2ArrayOfStr[1].equalsIgnoreCase("setdisplay"))
{
throw new WrongUsageException("commands.scoreboard.objectives.usage", new Object[0]);
}
if (par2ArrayOfStr.length != 3 && par2ArrayOfStr.length != 4)
{
throw new WrongUsageException("commands.scoreboard.objectives.setdisplay.usage", new Object[0]);
}
this.setObjectivesDisplay(par1ICommandSender, par2ArrayOfStr, 2);
}
return;
}
if (par2ArrayOfStr[0].equalsIgnoreCase("players"))
{
if (par2ArrayOfStr.length == 1)
{
throw new WrongUsageException("commands.scoreboard.players.usage", new Object[0]);
}
if (par2ArrayOfStr[1].equalsIgnoreCase("list"))
{
if (par2ArrayOfStr.length > 3)
{
throw new WrongUsageException("commands.scoreboard.players.list.usage", new Object[0]);
}
this.listPlayers(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("add"))
{
if (par2ArrayOfStr.length != 5)
{
throw new WrongUsageException("commands.scoreboard.players.add.usage", new Object[0]);
}
this.setPlayerScore(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if (par2ArrayOfStr.length != 5)
{
throw new WrongUsageException("commands.scoreboard.players.remove.usage", new Object[0]);
}
this.setPlayerScore(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("set"))
{
if (par2ArrayOfStr.length != 5)
{
throw new WrongUsageException("commands.scoreboard.players.set.usage", new Object[0]);
}
this.setPlayerScore(par1ICommandSender, par2ArrayOfStr, 2);
}
else
{
if (!par2ArrayOfStr[1].equalsIgnoreCase("reset"))
{
throw new WrongUsageException("commands.scoreboard.players.usage", new Object[0]);
}
if (par2ArrayOfStr.length != 3)
{
throw new WrongUsageException("commands.scoreboard.players.reset.usage", new Object[0]);
}
this.resetPlayerScore(par1ICommandSender, par2ArrayOfStr, 2);
}
return;
}
if (par2ArrayOfStr[0].equalsIgnoreCase("teams"))
{
if (par2ArrayOfStr.length == 1)
{
throw new WrongUsageException("commands.scoreboard.teams.usage", new Object[0]);
}
if (par2ArrayOfStr[1].equalsIgnoreCase("list"))
{
if (par2ArrayOfStr.length > 3)
{
throw new WrongUsageException("commands.scoreboard.teams.list.usage", new Object[0]);
}
this.getTeamList(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("add"))
{
if (par2ArrayOfStr.length < 3)
{
throw new WrongUsageException("commands.scoreboard.teams.add.usage", new Object[0]);
}
this.addTeam(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if (par2ArrayOfStr.length != 3)
{
throw new WrongUsageException("commands.scoreboard.teams.remove.usage", new Object[0]);
}
this.removeTeam(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("empty"))
{
if (par2ArrayOfStr.length != 3)
{
throw new WrongUsageException("commands.scoreboard.teams.empty.usage", new Object[0]);
}
this.emptyTeam(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("join"))
{
if (par2ArrayOfStr.length < 4 && (par2ArrayOfStr.length != 3 || !(par1ICommandSender instanceof EntityPlayer)))
{
throw new WrongUsageException("commands.scoreboard.teams.join.usage", new Object[0]);
}
this.joinTeam(par1ICommandSender, par2ArrayOfStr, 2);
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("leave"))
{
if (par2ArrayOfStr.length < 3 && !(par1ICommandSender instanceof EntityPlayer))
{
throw new WrongUsageException("commands.scoreboard.teams.leave.usage", new Object[0]);
}
this.leaveTeam(par1ICommandSender, par2ArrayOfStr, 2);
}
else
{
if (!par2ArrayOfStr[1].equalsIgnoreCase("option"))
{
throw new WrongUsageException("commands.scoreboard.teams.usage", new Object[0]);
}
if (par2ArrayOfStr.length != 4 && par2ArrayOfStr.length != 5)
{
throw new WrongUsageException("commands.scoreboard.teams.option.usage", new Object[0]);
}
this.setTeamOption(par1ICommandSender, par2ArrayOfStr, 2);
}
return;
}
}
throw new WrongUsageException("commands.scoreboard.usage", new Object[0]);
}
protected Scoreboard getScoreboardFromWorldServer()
{
return MinecraftServer.getServer().worldServerForDimension(0).getScoreboard();
}
/**
* User-safe version of Scoreboard.getObjective, does checks against the objective not being found and whether it's
* read-only or not. If true, the second parameter makes the function throw an exception if the objective is read-
* only.
*/
protected ScoreObjective getScoreObjective(String par1Str, boolean par2)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScoreObjective scoreobjective = scoreboard.getObjective(par1Str);
if (scoreobjective == null)
{
throw new CommandException("commands.scoreboard.objectiveNotFound", new Object[] {par1Str});
}
else if (par2 && scoreobjective.getCriteria().isReadOnly())
{
throw new CommandException("commands.scoreboard.objectiveReadOnly", new Object[] {par1Str});
}
else
{
return scoreobjective;
}
}
/**
* Returns the ScorePlayerTeam for the given team name.
*/
protected ScorePlayerTeam getTeam(String par1Str)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScorePlayerTeam scoreplayerteam = scoreboard.func_96508_e(par1Str);
if (scoreplayerteam == null)
{
throw new CommandException("commands.scoreboard.teamNotFound", new Object[] {par1Str});
}
else
{
return scoreplayerteam;
}
}
/**
* Handler for the 'scoreboard objectives add' command.
*/
protected void addObjective(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
String s = par2ArrayOfStr[par3++];
String s1 = par2ArrayOfStr[par3++];
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScoreObjectiveCriteria scoreobjectivecriteria = (ScoreObjectiveCriteria)ScoreObjectiveCriteria.field_96643_a.get(s1);
if (scoreobjectivecriteria == null)
{
String[] astring1 = (String[])ScoreObjectiveCriteria.field_96643_a.keySet().toArray(new String[0]);
throw new WrongUsageException("commands.scoreboard.objectives.add.wrongType", new Object[] {joinNiceString(astring1)});
}
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
{
ScoreObjective scoreobjective = scoreboard.func_96535_a(s, scoreobjectivecriteria);
if (par2ArrayOfStr.length > par3)
{
String s2 = func_82360_a(par1ICommandSender, par2ArrayOfStr, par3);
if (s2.length() > 32)
{
throw new SyntaxErrorException("commands.scoreboard.objectives.add.displayTooLong", new Object[] {s2, Integer.valueOf(32)});
}
if (s2.length() > 0)
{
scoreobjective.setDisplayName(s2);
}
}
notifyAdmins(par1ICommandSender, "commands.scoreboard.objectives.add.success", new Object[] {s});
}
}
/**
* Handler for the 'scoreboard teams add' command.
*/
protected void addTeam(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
String s = par2ArrayOfStr[par3++];
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
if (scoreboard.func_96508_e(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
{
ScorePlayerTeam scoreplayerteam = scoreboard.func_96527_f(s);
if (par2ArrayOfStr.length > par3)
{
String s1 = func_82360_a(par1ICommandSender, par2ArrayOfStr, par3);
if (s1.length() > 32)
{
throw new SyntaxErrorException("commands.scoreboard.teams.add.displayTooLong", new Object[] {s1, Integer.valueOf(32)});
}
if (s1.length() > 0)
{
scoreplayerteam.func_96664_a(s1);
}
}
notifyAdmins(par1ICommandSender, "commands.scoreboard.teams.add.success", new Object[] {s});
}
}
/**
* Handler for the 'scoreboard teams option' command.
*/
protected void setTeamOption(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
ScorePlayerTeam scoreplayerteam = this.getTeam(par2ArrayOfStr[par3++]);
String s = par2ArrayOfStr[par3++].toLowerCase();
if (!s.equalsIgnoreCase("color") && !s.equalsIgnoreCase("friendlyfire") && !s.equalsIgnoreCase("seeFriendlyInvisibles"))
{
throw new WrongUsageException("commands.scoreboard.teams.option.usage", new Object[0]);
}
else if (par2ArrayOfStr.length == 4)
{
if (s.equalsIgnoreCase("color"))
{
throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, func_96333_a(EnumChatFormatting.func_96296_a(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, func_96333_a(Arrays.asList(new String[]{"true", "false"}))});
}
}
else
{
String s1 = par2ArrayOfStr[par3++];
if (s.equalsIgnoreCase("color"))
{
EnumChatFormatting enumchatformatting = EnumChatFormatting.func_96300_b(s1);
if (s1 == null)
{
throw new WrongUsageException("commands.scoreboard.teams.option.noValue", new Object[] {s, func_96333_a(EnumChatFormatting.func_96296_a(true, false))});
}
scoreplayerteam.func_96666_b(enumchatformatting.toString());
scoreplayerteam.func_96662_c(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, func_96333_a(Arrays.asList(new String[]{"true", "false"}))});
}
scoreplayerteam.func_96660_a(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, func_96333_a(Arrays.asList(new String[]{"true", "false"}))});
}
scoreplayerteam.func_98300_b(s1.equalsIgnoreCase("true"));
}
notifyAdmins(par1ICommandSender, "commands.scoreboard.teams.option.success", new Object[] {s, scoreplayerteam.func_96661_b(), s1});
}
}
/**
* Handler for the 'scoreboard teams remove' command.
*/
protected void removeTeam(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScorePlayerTeam scoreplayerteam = this.getTeam(par2ArrayOfStr[par3++]);
scoreboard.func_96511_d(scoreplayerteam);
notifyAdmins(par1ICommandSender, "commands.scoreboard.teams.remove.success", new Object[] {scoreplayerteam.func_96661_b()});
}
/**
* Handler for the 'scoreboard teams list' command.
*/
protected void getTeamList(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
if (par2ArrayOfStr.length > par3)
{
ScorePlayerTeam scoreplayerteam = this.getTeam(par2ArrayOfStr[par3++]);
Collection collection = scoreplayerteam.getMembershipCollection();
if (collection.size() <= 0)
{
throw new CommandException("commands.scoreboard.teams.list.player.empty", new Object[] {scoreplayerteam.func_96661_b()});
}
par1ICommandSender.sendChatToPlayer(EnumChatFormatting.DARK_GREEN + par1ICommandSender.translateString("commands.scoreboard.teams.list.player.count", new Object[] {Integer.valueOf(collection.size()), scoreplayerteam.func_96661_b()}));
par1ICommandSender.sendChatToPlayer(joinNiceString(collection.toArray()));
}
else
{
Collection collection1 = scoreboard.func_96525_g();
if (collection1.size() <= 0)
{
throw new CommandException("commands.scoreboard.teams.list.empty", new Object[0]);
}
par1ICommandSender.sendChatToPlayer(EnumChatFormatting.DARK_GREEN + par1ICommandSender.translateString("commands.scoreboard.teams.list.count", new Object[] {Integer.valueOf(collection1.size())}));
Iterator iterator = collection1.iterator();
while (iterator.hasNext())
{
ScorePlayerTeam scoreplayerteam1 = (ScorePlayerTeam)iterator.next();
par1ICommandSender.sendChatToPlayer(par1ICommandSender.translateString("commands.scoreboard.teams.list.entry", new Object[] {scoreplayerteam1.func_96661_b(), scoreplayerteam1.func_96669_c(), Integer.valueOf(scoreplayerteam1.getMembershipCollection().size())}));
}
}
}
/**
* Handler for the 'scoreboard teams join' command.
*/
protected void joinTeam(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScorePlayerTeam scoreplayerteam = scoreboard.func_96508_e(par2ArrayOfStr[par3++]);
HashSet hashset = new HashSet();
String s;
if (par1ICommandSender instanceof EntityPlayer && par3 == par2ArrayOfStr.length)
{
s = getCommandSenderAsPlayer(par1ICommandSender).getEntityName();
scoreboard.func_96521_a(s, scoreplayerteam);
hashset.add(s);
}
else
{
while (par3 < par2ArrayOfStr.length)
{
s = func_96332_d(par1ICommandSender, par2ArrayOfStr[par3++]);
scoreboard.func_96521_a(s, scoreplayerteam);
hashset.add(s);
}
}
if (!hashset.isEmpty())
{
notifyAdmins(par1ICommandSender, "commands.scoreboard.teams.join.success", new Object[] {Integer.valueOf(hashset.size()), scoreplayerteam.func_96661_b(), joinNiceString(hashset.toArray(new String[0]))});
}
}
/**
* Handler for the 'scoreboard teams leave' command.
*/
protected void leaveTeam(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
HashSet hashset = new HashSet();
HashSet hashset1 = new HashSet();
String s;
if (par1ICommandSender instanceof EntityPlayer && par3 == par2ArrayOfStr.length)
{
s = getCommandSenderAsPlayer(par1ICommandSender).getEntityName();
if (scoreboard.func_96524_g(s))
{
hashset.add(s);
}
else
{
hashset1.add(s);
}
}
else
{
while (par3 < par2ArrayOfStr.length)
{
s = func_96332_d(par1ICommandSender, par2ArrayOfStr[par3++]);
if (scoreboard.func_96524_g(s))
{
hashset.add(s);
}
else
{
hashset1.add(s);
}
}
}
if (!hashset.isEmpty())
{
notifyAdmins(par1ICommandSender, "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]))});
}
}
/**
* Handler for the 'scoreboard teams empty' command.
*/
protected void emptyTeam(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScorePlayerTeam scoreplayerteam = this.getTeam(par2ArrayOfStr[par3++]);
ArrayList arraylist = new ArrayList(scoreplayerteam.getMembershipCollection());
if (arraylist.isEmpty())
{
throw new CommandException("commands.scoreboard.teams.empty.alreadyEmpty", new Object[] {scoreplayerteam.func_96661_b()});
}
else
{
Iterator iterator = arraylist.iterator();
while (iterator.hasNext())
{
String s = (String)iterator.next();
scoreboard.removePlayerFromTeam(s, scoreplayerteam);
}
notifyAdmins(par1ICommandSender, "commands.scoreboard.teams.empty.success", new Object[] {Integer.valueOf(arraylist.size()), scoreplayerteam.func_96661_b()});
}
}
/**
* Handler for the 'scoreboard objectives remove' command.
*/
protected void removeObjective(ICommandSender par1ICommandSender, String par2Str)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
ScoreObjective scoreobjective = this.getScoreObjective(par2Str, false);
scoreboard.func_96519_k(scoreobjective);
notifyAdmins(par1ICommandSender, "commands.scoreboard.objectives.remove.success", new Object[] {par2Str});
}
/**
* Handler for the 'scoreboard objectives list' command.
*/
protected void getObjectivesList(ICommandSender par1ICommandSender)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
Collection collection = scoreboard.getScoreObjectives();
if (collection.size() <= 0)
{
throw new CommandException("commands.scoreboard.objectives.list.empty", new Object[0]);
}
else
{
par1ICommandSender.sendChatToPlayer(EnumChatFormatting.DARK_GREEN + par1ICommandSender.translateString("commands.scoreboard.objectives.list.count", new Object[] {Integer.valueOf(collection.size())}));
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
ScoreObjective scoreobjective = (ScoreObjective)iterator.next();
par1ICommandSender.sendChatToPlayer(par1ICommandSender.translateString("commands.scoreboard.objectives.list.entry", new Object[] {scoreobjective.getName(), scoreobjective.getDisplayName(), scoreobjective.getCriteria().func_96636_a()}));
}
}
}
/**
* Handler for the 'scoreboard objectives setdisplay' command.
*/
protected void setObjectivesDisplay(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
String s = par2ArrayOfStr[par3++];
int j = Scoreboard.getObjectiveDisplaySlotNumber(s);
ScoreObjective scoreobjective = null;
if (par2ArrayOfStr.length == 4)
{
scoreobjective = this.getScoreObjective(par2ArrayOfStr[par3++], false);
}
if (j < 0)
{
throw new CommandException("commands.scoreboard.objectives.setdisplay.invalidSlot", new Object[] {s});
}
else
{
scoreboard.func_96530_a(j, scoreobjective);
if (scoreobjective != null)
{
notifyAdmins(par1ICommandSender, "commands.scoreboard.objectives.setdisplay.successSet", new Object[] {Scoreboard.getObjectiveDisplaySlot(j), scoreobjective.getName()});
}
else
{
notifyAdmins(par1ICommandSender, "commands.scoreboard.objectives.setdisplay.successCleared", new Object[] {Scoreboard.getObjectiveDisplaySlot(j)});
}
}
}
/**
* Handler for the 'scoreboard players list' command.
*/
protected void listPlayers(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
if (par2ArrayOfStr.length > par3)
{
String s = func_96332_d(par1ICommandSender, par2ArrayOfStr[par3++]);
Map map = scoreboard.func_96510_d(s);
if (map.size() <= 0)
{
throw new CommandException("commands.scoreboard.players.list.player.empty", new Object[] {s});
}
par1ICommandSender.sendChatToPlayer(EnumChatFormatting.DARK_GREEN + par1ICommandSender.translateString("commands.scoreboard.players.list.player.count", new Object[] {Integer.valueOf(map.size()), s}));
Iterator iterator = map.values().iterator();
while (iterator.hasNext())
{
Score score = (Score)iterator.next();
par1ICommandSender.sendChatToPlayer(par1ICommandSender.translateString("commands.scoreboard.players.list.player.entry", new Object[] {Integer.valueOf(score.func_96652_c()), 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]);
}
par1ICommandSender.sendChatToPlayer(EnumChatFormatting.DARK_GREEN + par1ICommandSender.translateString("commands.scoreboard.players.list.count", new Object[] {Integer.valueOf(collection.size())}));
par1ICommandSender.sendChatToPlayer(joinNiceString(collection.toArray()));
}
}
/**
* Handler for the 'scoreboard players [add|remove|set]' commands.
*/
protected void setPlayerScore(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
String s = par2ArrayOfStr[par3 - 1];
String s1 = func_96332_d(par1ICommandSender, par2ArrayOfStr[par3++]);
ScoreObjective scoreobjective = this.getScoreObjective(par2ArrayOfStr[par3++], true);
int j = s.equalsIgnoreCase("set") ? parseInt(par1ICommandSender, par2ArrayOfStr[par3++]) : parseIntWithMin(par1ICommandSender, par2ArrayOfStr[par3++], 1);
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
Score score = scoreboard.func_96529_a(s1, scoreobjective);
if (s.equalsIgnoreCase("set"))
{
score.func_96647_c(j);
}
else if (s.equalsIgnoreCase("add"))
{
score.func_96649_a(j);
}
else
{
score.func_96646_b(j);
}
notifyAdmins(par1ICommandSender, "commands.scoreboard.players.set.success", new Object[] {scoreobjective.getName(), s1, Integer.valueOf(score.func_96652_c())});
}
/**
* Handler for the 'scoreboard players reset' command.
*/
protected void resetPlayerScore(ICommandSender par1ICommandSender, String[] par2ArrayOfStr, int par3)
{
Scoreboard scoreboard = this.getScoreboardFromWorldServer();
String s = func_96332_d(par1ICommandSender, par2ArrayOfStr[par3++]);
scoreboard.func_96515_c(s);
notifyAdmins(par1ICommandSender, "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 par1ICommandSender, String[] par2ArrayOfStr)
{
if (par2ArrayOfStr.length == 1)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"objectives", "players", "teams"});
}
else
{
if (par2ArrayOfStr[0].equalsIgnoreCase("objectives"))
{
if (par2ArrayOfStr.length == 2)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"list", "add", "remove", "setdisplay"});
}
if (par2ArrayOfStr[1].equalsIgnoreCase("add"))
{
if (par2ArrayOfStr.length == 4)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, ScoreObjectiveCriteria.field_96643_a.keySet());
}
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if (par2ArrayOfStr.length == 3)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreObjectivesList(false));
}
}
else if (par2ArrayOfStr[1].equalsIgnoreCase("setdisplay"))
{
if (par2ArrayOfStr.length == 3)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"list", "sidebar", "belowName"});
}
if (par2ArrayOfStr.length == 4)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreObjectivesList(false));
}
}
}
else if (par2ArrayOfStr[0].equalsIgnoreCase("players"))
{
if (par2ArrayOfStr.length == 2)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"set", "add", "remove", "reset", "list"});
}
if (!par2ArrayOfStr[1].equalsIgnoreCase("set") && !par2ArrayOfStr[1].equalsIgnoreCase("add") && !par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if ((par2ArrayOfStr[1].equalsIgnoreCase("reset") || par2ArrayOfStr[1].equalsIgnoreCase("list")) && par2ArrayOfStr.length == 3)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreboardFromWorldServer().getObjectiveNames());
}
}
else
{
if (par2ArrayOfStr.length == 3)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames());
}
if (par2ArrayOfStr.length == 4)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreObjectivesList(true));
}
}
}
else if (par2ArrayOfStr[0].equalsIgnoreCase("teams"))
{
if (par2ArrayOfStr.length == 2)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"add", "remove", "join", "leave", "empty", "list", "option"});
}
if (par2ArrayOfStr[1].equalsIgnoreCase("join"))
{
if (par2ArrayOfStr.length == 3)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreboardFromWorldServer().func_96531_f());
}
if (par2ArrayOfStr.length >= 4)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames());
}
}
else
{
if (par2ArrayOfStr[1].equalsIgnoreCase("leave"))
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames());
}
if (!par2ArrayOfStr[1].equalsIgnoreCase("empty") && !par2ArrayOfStr[1].equalsIgnoreCase("list") && !par2ArrayOfStr[1].equalsIgnoreCase("remove"))
{
if (par2ArrayOfStr[1].equalsIgnoreCase("option"))
{
if (par2ArrayOfStr.length == 3)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreboardFromWorldServer().func_96531_f());
}
if (par2ArrayOfStr.length == 4)
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"color", "friendlyfire", "seeFriendlyInvisibles"});
}
if (par2ArrayOfStr.length == 5)
{
if (par2ArrayOfStr[3].equalsIgnoreCase("color"))
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, EnumChatFormatting.func_96296_a(true, false));
}
if (par2ArrayOfStr[3].equalsIgnoreCase("friendlyfire") || par2ArrayOfStr[3].equalsIgnoreCase("seeFriendlyInvisibles"))
{
return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"true", "false"});
}
}
}
}
else if (par2ArrayOfStr.length == 3)
{
return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, this.getScoreboardFromWorldServer().func_96531_f());
}
}
}
return null;
}
}
/**
* If the parameter is true, does not return read-only entries.
*/
protected List getScoreObjectivesList(boolean par1)
{
Collection collection = this.getScoreboardFromWorldServer().getScoreObjectives();
ArrayList arraylist = new ArrayList();
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
ScoreObjective scoreobjective = (ScoreObjective)iterator.next();
if (!par1 || !scoreobjective.getCriteria().isReadOnly())
{
arraylist.add(scoreobjective.getName());
}
}
return arraylist;
}
/**
* Return whether the specified command parameter index is a username parameter.
*/
public boolean isUsernameIndex(String[] par1ArrayOfStr, int par2)
{
return par1ArrayOfStr[0].equalsIgnoreCase("players") ? par2 == 2 : (!par1ArrayOfStr[0].equalsIgnoreCase("teams") ? false : par2 == 2 || par2 == 3);
}
}