/**
* Updates an entity's position and rotation as specified by the packet
*/
public void handleEntityTeleport(S18PacketEntityTeleport packetIn)
{
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.gameController);
Entity entity = this.clientWorldController.getEntityByID(packetIn.getEntityId());
if (entity != null)
{
entity.serverPosX = packetIn.getX();
entity.serverPosY = packetIn.getY();
entity.serverPosZ = packetIn.getZ();
double d0 = (double)entity.serverPosX / 32.0D;
double d1 = (double)entity.serverPosY / 32.0D;
double d2 = (double)entity.serverPosZ / 32.0D;
float f = (float)(packetIn.getYaw() * 360) / 256.0F;
float f1 = (float)(packetIn.getPitch() * 360) / 256.0F;
if (Math.abs(entity.posX - d0) < 0.03125D && Math.abs(entity.posY - d1) < 0.015625D && Math.abs(entity.posZ - d2) < 0.03125D)
{
entity.setPositionAndRotation2(entity.posX, entity.posY, entity.posZ, f, f1, 3, true);
}
else
{
entity.setPositionAndRotation2(d0, d1, d2, f, f1, 3, true);
}
if(entity == Minecraft.getMinecraft().thePlayer) {
PlayerHandler.yaw = f;
PlayerHandler.pitch = f1;
}
entity.onGround = packetIn.getOnGround();
}
}