package net.minecraft.server;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import javax.annotation.Nullable;
public class CommandTp extends CommandAbstract {
public CommandTp() {}
public String getCommand() {
return "tp";
}
public int a() {
return 2;
}
public String getUsage(ICommandListener icommandlistener) {
return "commands.tp.usage";
}
public void execute(MinecraftServer minecraftserver, ICommandListener icommandlistener, String[] astring) throws CommandException {
if (astring.length < 1) {
throw new ExceptionUsage("commands.tp.usage", new Object[0]);
} else {
byte b0 = 0;
Object object;
if (astring.length != 2 && astring.length != 4 && astring.length != 6) {
object = a(icommandlistener);
} else {
object = b(minecraftserver, icommandlistener, astring[0]);
b0 = 1;
}
if (astring.length != 1 && astring.length != 2) {
if (astring.length < b0 + 3) {
throw new ExceptionUsage("commands.tp.usage", new Object[0]);
} else if (((Entity) object).world != null) {
boolean flag = true;
int i = b0 + 1;
CommandAbstract.CommandNumber commandabstract_commandnumber = a(((Entity) object).locX, astring[b0], true);
CommandAbstract.CommandNumber commandabstract_commandnumber1 = a(((Entity) object).locY, astring[i++], -4096, 4096, false);
CommandAbstract.CommandNumber commandabstract_commandnumber2 = a(((Entity) object).locZ, astring[i++], true);
CommandAbstract.CommandNumber commandabstract_commandnumber3 = a((double) ((Entity) object).yaw, astring.length > i ? astring[i++] : "~", false);
CommandAbstract.CommandNumber commandabstract_commandnumber4 = a((double) ((Entity) object).pitch, astring.length > i ? astring[i] : "~", false);
a((Entity) object, commandabstract_commandnumber, commandabstract_commandnumber1, commandabstract_commandnumber2, commandabstract_commandnumber3, commandabstract_commandnumber4);
a(icommandlistener, (ICommand) this, "commands.tp.success.coordinates", new Object[] { ((Entity) object).getName(), Double.valueOf(commandabstract_commandnumber.a()), Double.valueOf(commandabstract_commandnumber1.a()), Double.valueOf(commandabstract_commandnumber2.a())});
}
} else {
Entity entity = b(minecraftserver, icommandlistener, astring[astring.length - 1]);
// CraftBukkit Start
// Use Bukkit teleport method in all cases. It has cross dimensional handling, events
if (((Entity) object).getBukkitEntity().teleport(entity.getBukkitEntity(), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.COMMAND)) {
a(icommandlistener, (ICommand) this, "commands.tp.success", new Object[] { ((Entity) object).getName(), entity.getName()});
// CraftBukkit End
}
}
}
}
private static void a(Entity entity, CommandAbstract.CommandNumber commandabstract_commandnumber, CommandAbstract.CommandNumber commandabstract_commandnumber1, CommandAbstract.CommandNumber commandabstract_commandnumber2, CommandAbstract.CommandNumber commandabstract_commandnumber3, CommandAbstract.CommandNumber commandabstract_commandnumber4) {
float f;
if (entity instanceof EntityPlayer) {
EnumSet enumset = EnumSet.noneOf(PacketPlayOutPosition.EnumPlayerTeleportFlags.class);
if (commandabstract_commandnumber.c()) {
enumset.add(PacketPlayOutPosition.EnumPlayerTeleportFlags.X);
}
if (commandabstract_commandnumber1.c()) {
enumset.add(PacketPlayOutPosition.EnumPlayerTeleportFlags.Y);
}
if (commandabstract_commandnumber2.c()) {
enumset.add(PacketPlayOutPosition.EnumPlayerTeleportFlags.Z);
}
if (commandabstract_commandnumber4.c()) {
enumset.add(PacketPlayOutPosition.EnumPlayerTeleportFlags.X_ROT);
}
if (commandabstract_commandnumber3.c()) {
enumset.add(PacketPlayOutPosition.EnumPlayerTeleportFlags.Y_ROT);
}
f = (float) commandabstract_commandnumber3.b();
if (!commandabstract_commandnumber3.c()) {
f = MathHelper.g(f);
}
float f1 = (float) commandabstract_commandnumber4.b();
if (!commandabstract_commandnumber4.c()) {
f1 = MathHelper.g(f1);
}
entity.stopRiding();
((EntityPlayer) entity).playerConnection.a(commandabstract_commandnumber.b(), commandabstract_commandnumber1.b(), commandabstract_commandnumber2.b(), f, f1, enumset, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.COMMAND); // CraftBukkit
entity.h(f);
} else {
float f2 = (float) MathHelper.g(commandabstract_commandnumber3.a());
f = (float) MathHelper.g(commandabstract_commandnumber4.a());
f = MathHelper.a(f, -90.0F, 90.0F);
entity.setPositionRotation(commandabstract_commandnumber.a(), commandabstract_commandnumber1.a(), commandabstract_commandnumber2.a(), f2, f);
entity.h(f2);
}
if (!(entity instanceof EntityLiving) || !((EntityLiving) entity).cH()) {
entity.motY = 0.0D;
entity.onGround = true;
}
}
public List<String> tabComplete(MinecraftServer minecraftserver, ICommandListener icommandlistener, String[] astring, @Nullable BlockPosition blockposition) {
return astring.length != 1 && astring.length != 2 ? Collections.<String>emptyList() : a(astring, minecraftserver.getPlayers()); // CraftBukkit - decompile error
}
public boolean isListStart(String[] astring, int i) {
return i == 0;
}
// CraftBukkit start - fix decompile error
@Override
public int compareTo(ICommand o) {
return a((ICommand) o);
}
// CraftBukkit end
}