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 int func_82362_a() 014 { 015 return 2; 016 } 017 018 public String getCommandUsage(ICommandSender par1ICommandSender) 019 { 020 return par1ICommandSender.translateString("commands.tp.usage", new Object[0]); 021 } 022 023 public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) 024 { 025 if (par2ArrayOfStr.length < 1) 026 { 027 throw new WrongUsageException("commands.tp.usage", new Object[0]); 028 } 029 else 030 { 031 EntityPlayerMP var3; 032 033 if (par2ArrayOfStr.length != 2 && par2ArrayOfStr.length != 4) 034 { 035 var3 = getCommandSenderAsPlayer(par1ICommandSender); 036 } 037 else 038 { 039 var3 = func_82359_c(par1ICommandSender, par2ArrayOfStr[0]); 040 041 if (var3 == null) 042 { 043 throw new PlayerNotFoundException(); 044 } 045 } 046 047 if (par2ArrayOfStr.length != 3 && par2ArrayOfStr.length != 4) 048 { 049 if (par2ArrayOfStr.length == 1 || par2ArrayOfStr.length == 2) 050 { 051 EntityPlayerMP var11 = func_82359_c(par1ICommandSender, par2ArrayOfStr[par2ArrayOfStr.length - 1]); 052 053 if (var11 == null) 054 { 055 throw new PlayerNotFoundException(); 056 } 057 058 var3.playerNetServerHandler.setPlayerLocation(var11.posX, var11.posY, var11.posZ, var11.rotationYaw, var11.rotationPitch); 059 notifyAdmins(par1ICommandSender, "commands.tp.success", new Object[] {var3.getEntityName(), var11.getEntityName()}); 060 } 061 } 062 else if (var3.worldObj != null) 063 { 064 int var4 = par2ArrayOfStr.length - 3; 065 double var5 = this.func_82368_a(par1ICommandSender, var3.posX, par2ArrayOfStr[var4++]); 066 double var7 = this.func_82367_a(par1ICommandSender, var3.posY, par2ArrayOfStr[var4++], 0, 0); 067 double var9 = this.func_82368_a(par1ICommandSender, var3.posZ, par2ArrayOfStr[var4++]); 068 var3.setPositionAndUpdate(var5, var7, var9); 069 notifyAdmins(par1ICommandSender, "commands.tp.success.coordinates", new Object[] {var3.getEntityName(), Double.valueOf(var5), Double.valueOf(var7), Double.valueOf(var9)}); 070 } 071 } 072 } 073 074 private double func_82368_a(ICommandSender par1ICommandSender, double par2, String par4Str) 075 { 076 return this.func_82367_a(par1ICommandSender, par2, par4Str, -30000000, 30000000); 077 } 078 079 private double func_82367_a(ICommandSender par1ICommandSender, double par2, String par4Str, int par5, int par6) 080 { 081 boolean var7 = par4Str.startsWith("~"); 082 double var8 = var7 ? par2 : 0.0D; 083 084 if (!var7 || par4Str.length() > 1) 085 { 086 boolean var10 = par4Str.contains("."); 087 088 if (var7) 089 { 090 par4Str = par4Str.substring(1); 091 } 092 093 var8 += func_82363_b(par1ICommandSender, par4Str); 094 095 if (!var10 && !var7) 096 { 097 var8 += 0.5D; 098 } 099 } 100 101 if (par5 != 0 || par6 != 0) 102 { 103 if (var8 < (double)par5) 104 { 105 throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(var8), Integer.valueOf(par5)}); 106 } 107 108 if (var8 > (double)par6) 109 { 110 throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(var8), Integer.valueOf(par6)}); 111 } 112 } 113 114 return var8; 115 } 116 117 /** 118 * Adds the strings available in this command to the given list of tab completion options. 119 */ 120 public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) 121 { 122 return par2ArrayOfStr.length != 1 && par2ArrayOfStr.length != 2 ? null : getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames()); 123 } 124 125 public boolean func_82358_a(int par1) 126 { 127 return par1 == 0; 128 } 129 }