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