001package net.minecraft.command;
002
003import java.util.List;
004import net.minecraft.entity.item.EntityItem;
005import net.minecraft.entity.player.EntityPlayerMP;
006import net.minecraft.item.Item;
007import net.minecraft.item.ItemStack;
008import net.minecraft.server.MinecraftServer;
009
010public class CommandGive extends CommandBase
011{
012    public String getCommandName()
013    {
014        return "give";
015    }
016
017    /**
018     * Return the required permission level for this command.
019     */
020    public int getRequiredPermissionLevel()
021    {
022        return 2;
023    }
024
025    public String getCommandUsage(ICommandSender par1ICommandSender)
026    {
027        return par1ICommandSender.translateString("commands.give.usage", new Object[0]);
028    }
029
030    public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
031    {
032        if (par2ArrayOfStr.length >= 2)
033        {
034            EntityPlayerMP var3 = func_82359_c(par1ICommandSender, par2ArrayOfStr[0]);
035            int var4 = parseIntWithMin(par1ICommandSender, par2ArrayOfStr[1], 1);
036            int var5 = 1;
037            int var6 = 0;
038
039            if (Item.itemsList[var4] == null)
040            {
041                throw new NumberInvalidException("commands.give.notFound", new Object[] {Integer.valueOf(var4)});
042            }
043            else
044            {
045                if (par2ArrayOfStr.length >= 3)
046                {
047                    var5 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[2], 1, 64);
048                }
049
050                if (par2ArrayOfStr.length >= 4)
051                {
052                    var6 = parseInt(par1ICommandSender, par2ArrayOfStr[3]);
053                }
054
055                ItemStack var7 = new ItemStack(var4, var5, var6);
056                EntityItem var8 = var3.dropPlayerItem(var7);
057                var8.delayBeforeCanPickup = 0;
058                notifyAdmins(par1ICommandSender, "commands.give.success", new Object[] {Item.itemsList[var4].func_77653_i(var7), Integer.valueOf(var4), Integer.valueOf(var5), var3.getEntityName()});
059            }
060        }
061        else
062        {
063            throw new WrongUsageException("commands.give.usage", new Object[0]);
064        }
065    }
066
067    /**
068     * Adds the strings available in this command to the given list of tab completion options.
069     */
070    public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
071    {
072        return par2ArrayOfStr.length == 1 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, this.getPlayers()) : null;
073    }
074
075    protected String[] getPlayers()
076    {
077        return MinecraftServer.getServer().getAllUsernames();
078    }
079
080    /**
081     * Return whether the specified command parameter index is a username parameter.
082     */
083    public boolean isUsernameIndex(int par1)
084    {
085        return par1 == 0;
086    }
087}