001    package net.minecraft.src;
002    
003    import java.util.Arrays;
004    import java.util.List;
005    import net.minecraft.server.MinecraftServer;
006    
007    public class CommandServerMessage extends CommandBase
008    {
009        public List getCommandAliases()
010        {
011            return Arrays.asList(new String[] {"w", "msg"});
012        }
013    
014        public String getCommandName()
015        {
016            return "tell";
017        }
018    
019        /**
020         * Return the required permission level for this command.
021         */
022        public int getRequiredPermissionLevel()
023        {
024            return 0;
025        }
026    
027        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
028        {
029            if (par2ArrayOfStr.length < 2)
030            {
031                throw new WrongUsageException("commands.message.usage", new Object[0]);
032            }
033            else
034            {
035                EntityPlayerMP var3 = func_82359_c(par1ICommandSender, par2ArrayOfStr[0]);
036    
037                if (var3 == null)
038                {
039                    throw new PlayerNotFoundException();
040                }
041                else if (var3 == par1ICommandSender)
042                {
043                    throw new PlayerNotFoundException("commands.message.sameTarget", new Object[0]);
044                }
045                else
046                {
047                    String var4 = func_82361_a(par1ICommandSender, par2ArrayOfStr, 1, !(par1ICommandSender instanceof EntityPlayer));
048                    var3.sendChatToPlayer("\u00a77\u00a7o" + var3.translateString("commands.message.display.incoming", new Object[] {par1ICommandSender.getCommandSenderName(), var4}));
049                    par1ICommandSender.sendChatToPlayer("\u00a77\u00a7o" + par1ICommandSender.translateString("commands.message.display.outgoing", new Object[] {var3.getCommandSenderName(), var4}));
050                }
051            }
052        }
053    
054        /**
055         * Adds the strings available in this command to the given list of tab completion options.
056         */
057        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
058        {
059            return getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames());
060        }
061    
062        /**
063         * Return whether the specified command parameter index is a username parameter.
064         */
065        public boolean isUsernameIndex(int par1)
066        {
067            return par1 == 0;
068        }
069    }