001    package net.minecraft.src;
002    
003    import java.util.List;
004    import net.minecraft.server.MinecraftServer;
005    
006    public class CommandServerTp extends CommandBase
007    {
008        public String getCommandName()
009        {
010            return "tp";
011        }
012    
013        public String getCommandUsage(ICommandSender par1ICommandSender)
014        {
015            return par1ICommandSender.translateString("commands.tp.usage", new Object[0]);
016        }
017    
018        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
019        {
020            if (par2ArrayOfStr.length < 1)
021            {
022                throw new WrongUsageException("commands.tp.usage", new Object[0]);
023            }
024            else
025            {
026                MinecraftServer var3 = MinecraftServer.getServer();
027                EntityPlayerMP var4;
028    
029                if (par2ArrayOfStr.length != 2 && par2ArrayOfStr.length != 4)
030                {
031                    var4 = (EntityPlayerMP)getCommandSenderAsPlayer(par1ICommandSender);
032                }
033                else
034                {
035                    var4 = var3.getConfigurationManager().getPlayerForUsername(par2ArrayOfStr[0]);
036    
037                    if (var4 == null)
038                    {
039                        throw new PlayerNotFoundException();
040                    }
041                }
042    
043                if (par2ArrayOfStr.length != 3 && par2ArrayOfStr.length != 4)
044                {
045                    if (par2ArrayOfStr.length == 1 || par2ArrayOfStr.length == 2)
046                    {
047                        EntityPlayerMP var10 = var3.getConfigurationManager().getPlayerForUsername(par2ArrayOfStr[par2ArrayOfStr.length - 1]);
048    
049                        if (var10 == null)
050                        {
051                            throw new PlayerNotFoundException();
052                        }
053    
054                        var4.playerNetServerHandler.setPlayerLocation(var10.posX, var10.posY, var10.posZ, var10.rotationYaw, var10.rotationPitch);
055                        notifyAdmins(par1ICommandSender, "commands.tp.success", new Object[] {var4.getEntityName(), var10.getEntityName()});
056                    }
057                }
058                else if (var4.worldObj != null)
059                {
060                    int var5 = par2ArrayOfStr.length - 3;
061                    int var6 = 30000000;
062                    int var7 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[var5++], -var6, var6);
063                    int var8 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[var5++], 0, 256);
064                    int var9 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[var5++], -var6, var6);
065                    var4.setPositionAndUpdate((double)((float)var7 + 0.5F), (double)var8, (double)((float)var9 + 0.5F));
066                    notifyAdmins(par1ICommandSender, "commands.tp.coordinates", new Object[] {var4.getEntityName(), Integer.valueOf(var7), Integer.valueOf(var8), Integer.valueOf(var9)});
067                }
068            }
069        }
070    
071        /**
072         * Adds the strings available in this command to the given list of tab completion options.
073         */
074        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
075        {
076            return par2ArrayOfStr.length != 1 && par2ArrayOfStr.length != 2 ? null : getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames());
077        }
078    }