package net.minecraft.command; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; public class CommandServerTp extends CommandBase { public String getCommandName() { return "tp"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender par1ICommandSender) { return par1ICommandSender.translateString("commands.tp.usage", new Object[0]); } public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) { if (par2ArrayOfStr.length < 1) { throw new WrongUsageException("commands.tp.usage", new Object[0]); } else { EntityPlayerMP entityplayermp; if (par2ArrayOfStr.length != 2 && par2ArrayOfStr.length != 4) { entityplayermp = getCommandSenderAsPlayer(par1ICommandSender); } else { entityplayermp = func_82359_c(par1ICommandSender, par2ArrayOfStr[0]); if (entityplayermp == null) { throw new PlayerNotFoundException(); } } if (par2ArrayOfStr.length != 3 && par2ArrayOfStr.length != 4) { if (par2ArrayOfStr.length == 1 || par2ArrayOfStr.length == 2) { EntityPlayerMP entityplayermp1 = func_82359_c(par1ICommandSender, par2ArrayOfStr[par2ArrayOfStr.length - 1]); if (entityplayermp1 == null) { throw new PlayerNotFoundException(); } if (entityplayermp1.worldObj != entityplayermp.worldObj) { notifyAdmins(par1ICommandSender, "commands.tp.notSameDimension", new Object[0]); return; } entityplayermp.mountEntity((Entity)null); entityplayermp.playerNetServerHandler.setPlayerLocation(entityplayermp1.posX, entityplayermp1.posY, entityplayermp1.posZ, entityplayermp1.rotationYaw, entityplayermp1.rotationPitch); notifyAdmins(par1ICommandSender, "commands.tp.success", new Object[] {entityplayermp.getEntityName(), entityplayermp1.getEntityName()}); } } else if (entityplayermp.worldObj != null) { int i = par2ArrayOfStr.length - 3; double d0 = this.func_82368_a(par1ICommandSender, entityplayermp.posX, par2ArrayOfStr[i++]); double d1 = this.func_82367_a(par1ICommandSender, entityplayermp.posY, par2ArrayOfStr[i++], 0, 0); double d2 = this.func_82368_a(par1ICommandSender, entityplayermp.posZ, par2ArrayOfStr[i++]); entityplayermp.mountEntity((Entity)null); entityplayermp.setPositionAndUpdate(d0, d1, d2); notifyAdmins(par1ICommandSender, "commands.tp.success.coordinates", new Object[] {entityplayermp.getEntityName(), Double.valueOf(d0), Double.valueOf(d1), Double.valueOf(d2)}); } } } private double func_82368_a(ICommandSender par1ICommandSender, double par2, String par4Str) { return this.func_82367_a(par1ICommandSender, par2, par4Str, -30000000, 30000000); } private double func_82367_a(ICommandSender par1ICommandSender, double par2, String par4Str, int par5, int par6) { boolean flag = par4Str.startsWith("~"); double d1 = flag ? par2 : 0.0D; if (!flag || par4Str.length() > 1) { boolean flag1 = par4Str.contains("."); if (flag) { par4Str = par4Str.substring(1); } d1 += parseDouble(par1ICommandSender, par4Str); if (!flag1 && !flag) { d1 += 0.5D; } } if (par5 != 0 || par6 != 0) { if (d1 < (double)par5) { throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(d1), Integer.valueOf(par5)}); } if (d1 > (double)par6) { throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(d1), Integer.valueOf(par6)}); } } return d1; } /** * Adds the strings available in this command to the given list of tab completion options. */ public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) { return par2ArrayOfStr.length != 1 && par2ArrayOfStr.length != 2 ? null : getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames()); } /** * Return whether the specified command parameter index is a username parameter. */ public boolean isUsernameIndex(String[] par1ArrayOfStr, int par2) { return par2 == 0; } }