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