public static void teleToLocation(Player player, Location loc, Reflection ref) {
    if (player.isTeleporting() || player.isDeleted()) return;
    player.setIsTeleporting(true);

    player.setTarget(null);
    player.stopMove();

    if (player.isInBoat()) player.setBoat(null);

    player.breakFakeDeath();

    player.sendPacket(new TeleportToLocation(player, loc));

    player.decayMe();

    player.setLoc(loc);

    if (ref == null) player.setReflection(ReflectionManager.DEFAULT);

    // Нужно при телепорте с более высокой точки на более низкую, иначе наносится вред от "падения"
    player.setLastClientPosition(null);
    player.setLastServerPosition(null);

    player.sendPacket(new ExTeleportToLocationActivate(player, loc));
  }