package net.minecraft.command;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
public abstract class CommandBase implements ICommand
{
private static IAdminCommand theAdmin = null;
/**
* Return the required permission level for this command.
*/
public int getRequiredPermissionLevel()
{
return 4;
}
public String getCommandUsage(ICommandSender par1ICommandSender)
{
return "/" + this.getCommandName();
}
public List getCommandAliases()
{
return null;
}
/**
* Returns true if the given command sender is allowed to use this command.
*/
public boolean canCommandSenderUseCommand(ICommandSender par1ICommandSender)
{
return par1ICommandSender.canCommandSenderUseCommand(this.getRequiredPermissionLevel(), this.getCommandName());
}
/**
* Adds the strings available in this command to the given list of tab completion options.
*/
public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
{
return null;
}
/**
* Parses an int from the given string.
*/
public static int parseInt(ICommandSender par0ICommandSender, String par1Str)
{
try
{
return Integer.parseInt(par1Str);
}
catch (NumberFormatException var3)
{
throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str});
}
}
/**
* Parses an int from the given sring with a specified minimum.
*/
public static int parseIntWithMin(ICommandSender par0ICommandSender, String par1Str, int par2)
{
return parseIntBounded(par0ICommandSender, par1Str, par2, Integer.MAX_VALUE);
}
/**
* Parses an int from the given string within a specified bound.
*/
public static int parseIntBounded(ICommandSender par0ICommandSender, String par1Str, int par2, int par3)
{
int var4 = parseInt(par0ICommandSender, par1Str);
if (var4 < par2)
{
throw new NumberInvalidException("commands.generic.num.tooSmall", new Object[] {Integer.valueOf(var4), Integer.valueOf(par2)});
}
else if (var4 > par3)
{
throw new NumberInvalidException("commands.generic.num.tooBig", new Object[] {Integer.valueOf(var4), Integer.valueOf(par3)});
}
else
{
return var4;
}
}
public static double func_82363_b(ICommandSender par0ICommandSender, String par1Str)
{
try
{
return Double.parseDouble(par1Str);
}
catch (NumberFormatException var3)
{
throw new NumberInvalidException("commands.generic.double.invalid", new Object[] {par1Str});
}
}
/**
* Returns the given ICommandSender as a EntityPlayer or throw an exception.
*/
public static EntityPlayerMP getCommandSenderAsPlayer(ICommandSender par0ICommandSender)
{
if (par0ICommandSender instanceof EntityPlayerMP)
{
return (EntityPlayerMP)par0ICommandSender;
}
else
{
throw new PlayerNotFoundException("You must specify which player you wish to perform this action on.", new Object[0]);
}
}
public static EntityPlayerMP func_82359_c(ICommandSender par0ICommandSender, String par1Str)
{
EntityPlayerMP var2 = PlayerSelector.matchOnePlayer(par0ICommandSender, par1Str);
if (var2 != null)
{
return var2;
}
else
{
var2 = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par1Str);
if (var2 == null)
{
throw new PlayerNotFoundException();
}
else
{
return var2;
}
}
}
public static String func_82360_a(ICommandSender par0ICommandSender, String[] par1ArrayOfStr, int par2)
{
return func_82361_a(par0ICommandSender, par1ArrayOfStr, par2, false);
}
public static String func_82361_a(ICommandSender par0ICommandSender, String[] par1ArrayOfStr, int par2, boolean par3)
{
StringBuilder var4 = new StringBuilder();
for (int var5 = par2; var5 < par1ArrayOfStr.length; ++var5)
{
if (var5 > par2)
{
var4.append(" ");
}
String var6 = par1ArrayOfStr[var5];
if (par3)
{
String var7 = PlayerSelector.matchPlayersAsString(par0ICommandSender, var6);
if (var7 != null)
{
var6 = var7;
}
else if (PlayerSelector.hasArguments(var6))
{
throw new PlayerNotFoundException();
}
}
var4.append(var6);
}
return var4.toString();
}
/**
* Joins the given string array into a "x, y, and z" seperated string.
*/
public static String joinNiceString(Object[] par0ArrayOfObj)
{
StringBuilder var1 = new StringBuilder();
for (int var2 = 0; var2 < par0ArrayOfObj.length; ++var2)
{
String var3 = par0ArrayOfObj[var2].toString();
if (var2 > 0)
{
if (var2 == par0ArrayOfObj.length - 1)
{
var1.append(" and ");
}
else
{
var1.append(", ");
}
}
var1.append(var3);
}
return var1.toString();
}
/**
* Returns true if the given substring is exactly equal to the start of the given string (case insensitive).
*/
public static boolean doesStringStartWith(String par0Str, String par1Str)
{
return par1Str.regionMatches(true, 0, par0Str, 0, par0Str.length());
}
/**
* 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).
*/
public static List getListOfStringsMatchingLastWord(String[] par0ArrayOfStr, String ... par1ArrayOfStr)
{
String var2 = par0ArrayOfStr[par0ArrayOfStr.length - 1];
ArrayList var3 = new ArrayList();
String[] var4 = par1ArrayOfStr;
int var5 = par1ArrayOfStr.length;
for (int var6 = 0; var6 < var5; ++var6)
{
String var7 = var4[var6];
if (doesStringStartWith(var2, var7))
{
var3.add(var7);
}
}
return var3;
}
/**
* 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).
*/
public static List getListOfStringsFromIterableMatchingLastWord(String[] par0ArrayOfStr, Iterable par1Iterable)
{
String var2 = par0ArrayOfStr[par0ArrayOfStr.length - 1];
ArrayList var3 = new ArrayList();
Iterator var4 = par1Iterable.iterator();
while (var4.hasNext())
{
String var5 = (String)var4.next();
if (doesStringStartWith(var2, var5))
{
var3.add(var5);
}
}
return var3;
}
/**
* Return whether the specified command parameter index is a username parameter.
*/
public boolean isUsernameIndex(int par1)
{
return false;
}
public static void notifyAdmins(ICommandSender par0ICommandSender, String par1Str, Object ... par2ArrayOfObj)
{
notifyAdmins(par0ICommandSender, 0, par1Str, par2ArrayOfObj);
}
public static void notifyAdmins(ICommandSender par0ICommandSender, int par1, String par2Str, Object ... par3ArrayOfObj)
{
if (theAdmin != null)
{
theAdmin.notifyAdmins(par0ICommandSender, par1, par2Str, par3ArrayOfObj);
}
}
/**
* Sets the static IAdminCommander.
*/
public static void setAdminCommander(IAdminCommand par0IAdminCommand)
{
theAdmin = par0IAdminCommand;
}
/**
* Compares the name of this command to the name of the given command.
*/
public int compareNameTo(ICommand par1ICommand)
{
return this.getCommandName().compareTo(par1ICommand.getCommandName());
}
public int compareTo(Object par1Obj)
{
return this.compareNameTo((ICommand)par1Obj);
}
}