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 /**
014 * Return the required permission level for this command.
015 */
016 public int getRequiredPermissionLevel()
017 {
018 return 2;
019 }
020
021 public String getCommandUsage(ICommandSender par1ICommandSender)
022 {
023 return par1ICommandSender.translateString("commands.xp.usage", new Object[0]);
024 }
025
026 public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
027 {
028 if (par2ArrayOfStr.length <= 0)
029 {
030 throw new WrongUsageException("commands.xp.usage", new Object[0]);
031 }
032 else
033 {
034 String var4 = par2ArrayOfStr[0];
035 boolean var5 = var4.endsWith("l") || var4.endsWith("L");
036
037 if (var5 && var4.length() > 1)
038 {
039 var4 = var4.substring(0, var4.length() - 1);
040 }
041
042 int var6 = parseInt(par1ICommandSender, var4);
043 boolean var7 = var6 < 0;
044
045 if (var7)
046 {
047 var6 *= -1;
048 }
049
050 EntityPlayerMP var3;
051
052 if (par2ArrayOfStr.length > 1)
053 {
054 var3 = func_82359_c(par1ICommandSender, par2ArrayOfStr[1]);
055 }
056 else
057 {
058 var3 = getCommandSenderAsPlayer(par1ICommandSender);
059 }
060
061 if (var5)
062 {
063 if (var7)
064 {
065 var3.addExperienceLevel(-var6);
066 notifyAdmins(par1ICommandSender, "commands.xp.success.negative.levels", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
067 }
068 else
069 {
070 var3.addExperienceLevel(var6);
071 notifyAdmins(par1ICommandSender, "commands.xp.success.levels", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
072 }
073 }
074 else
075 {
076 if (var7)
077 {
078 throw new WrongUsageException("commands.xp.failure.widthdrawXp", new Object[0]);
079 }
080
081 var3.addExperience(var6);
082 notifyAdmins(par1ICommandSender, "commands.xp.success", new Object[] {Integer.valueOf(var6), var3.getEntityName()});
083 }
084 }
085 }
086
087 /**
088 * Adds the strings available in this command to the given list of tab completion options.
089 */
090 public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
091 {
092 return par2ArrayOfStr.length == 2 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, this.getAllUsernames()) : null;
093 }
094
095 protected String[] getAllUsernames()
096 {
097 return MinecraftServer.getServer().getAllUsernames();
098 }
099
100 /**
101 * Return whether the specified command parameter index is a username parameter.
102 */
103 public boolean isUsernameIndex(int par1)
104 {
105 return par1 == 1;
106 }
107 }