001    package net.minecraft.src;
002    
003    import java.util.List;
004    import net.minecraft.server.MinecraftServer;
005    
006    public class CommandXP extends CommandBase
007    {
008        public String getCommandName()
009        {
010            return "xp";
011        }
012    
013        public int func_82362_a()
014        {
015            return 2;
016        }
017    
018        public String getCommandUsage(ICommandSender par1ICommandSender)
019        {
020            return par1ICommandSender.translateString("commands.xp.usage", new Object[0]);
021        }
022    
023        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
024        {
025            if (par2ArrayOfStr.length <= 0)
026            {
027                throw new WrongUsageException("commands.xp.usage", new Object[0]);
028            }
029            else
030            {
031                String var4 = par2ArrayOfStr[0];
032                boolean var5 = var4.endsWith("l") || var4.endsWith("L");
033    
034                if (var5 && var4.length() > 1)
035                {
036                    var4 = var4.substring(0, var4.length() - 1);
037                }
038    
039                int var6 = parseInt(par1ICommandSender, var4);
040                boolean var7 = var6 < 0;
041    
042                if (var7)
043                {
044                    var6 *= -1;
045                }
046    
047                EntityPlayerMP var3;
048    
049                if (par2ArrayOfStr.length > 1)
050                {
051                    var3 = func_82359_c(par1ICommandSender, par2ArrayOfStr[1]);
052                }
053                else
054                {
055                    var3 = getCommandSenderAsPlayer(par1ICommandSender);
056                }
057    
058                if (var5)
059                {
060                    if (var7)
061                    {
062                        var3.func_82242_a(-var6);
063                        notifyAdmins(par1ICommandSender, "commands.xp.success.negative.levels", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
064                    }
065                    else
066                    {
067                        var3.func_82242_a(var6);
068                        notifyAdmins(par1ICommandSender, "commands.xp.success.levels", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
069                    }
070                }
071                else
072                {
073                    if (var7)
074                    {
075                        throw new WrongUsageException("commands.xp.failure.widthdrawXp", new Object[0]);
076                    }
077    
078                    var3.addExperience(var6);
079                    notifyAdmins(par1ICommandSender, "commands.xp.success", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
080                }
081            }
082        }
083    
084        /**
085         * Adds the strings available in this command to the given list of tab completion options.
086         */
087        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
088        {
089            return par2ArrayOfStr.length == 2 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, this.getAllUsernames()) : null;
090        }
091    
092        protected String[] getAllUsernames()
093        {
094            return MinecraftServer.getServer().getAllUsernames();
095        }
096    
097        public boolean func_82358_a(int par1)
098        {
099            return par1 == 1;
100        }
101    }