private boolean teleportTo(EntityLivingBase mob, double destX, double destY, double destZ) {
    double oldX = mob.posX;
    double oldY = mob.posY;
    double oldZ = mob.posZ;
    boolean success = false;
    mob.posX = destX;
    mob.posY = destY;
    mob.posZ = destZ;
    int x = MathHelper.floor_double(mob.posX);
    int y = MathHelper.floor_double(mob.posY);
    int z = MathHelper.floor_double(mob.posZ);
    Block blockID;

    if (mob.worldObj.blockExists(x, y, z)) {
      boolean hitGround = false;
      while (!hitGround && y < 96) {
        blockID = mob.worldObj.getBlock(x, y - 1, z);
        if (blockID.getMaterial().blocksMovement()) {
          hitGround = true;
        } else {
          --mob.posY;
          --y;
        }
      }

      if (hitGround) {
        mob.setPosition(mob.posX, mob.posY, mob.posZ);

        if (mob.worldObj.getCollidingBoundingBoxes(mob, mob.boundingBox).isEmpty()
            && !mob.worldObj.isAnyLiquid(mob.boundingBox)) {
          success = true;
        }
      } else {
        return false;
      }
    }

    if (!success) {
      mob.setPosition(oldX, oldY, oldZ);
      return false;
    } else {
      short range = 128;
      for (int i = 0; i < range; ++i) {
        double var19 = (double) i / ((double) range - 1.0D);
        float var21 = (mob.worldObj.rand.nextFloat() - 0.5F) * 0.2F;
        float var22 = (mob.worldObj.rand.nextFloat() - 0.5F) * 0.2F;
        float var23 = (mob.worldObj.rand.nextFloat() - 0.5F) * 0.2F;
        double var24 =
            oldX
                + (mob.posX - oldX) * var19
                + (mob.worldObj.rand.nextDouble() - 0.5D) * (double) mob.width * 2.0D;
        double var26 =
            oldY + (mob.posY - oldY) * var19 + mob.worldObj.rand.nextDouble() * (double) mob.height;
        double var28 =
            oldZ
                + (mob.posZ - oldZ) * var19
                + (mob.worldObj.rand.nextDouble() - 0.5D) * (double) mob.width * 2.0D;
        mob.worldObj.spawnParticle(
            "portal", var24, var26, var28, (double) var21, (double) var22, (double) var23);
      }

      mob.worldObj.playSoundEffect(oldX, oldY, oldZ, "mob.endermen.portal", 1.0F, 1.0F);
      mob.worldObj.playSoundAtEntity(mob, "mob.endermen.portal", 1.0F, 1.0F);
    }
    return true;
  }