public boolean TeleportPlayerToPlayer(ProxiedPlayer src, ProxiedPlayer dst) {
		if (src == null) {
			ErrorMsg("TeleportPlayerToPlayer: src is null!");
			return false;
		}
		
		if (dst == null) {
			ErrorMsg("TeleportPlayerToPlayer: dst is null!");
			return false;
		}

		if (src.getName() == dst.getName()) {
			ErrorMsg("TeleportPlayerToPlayer: cannot teleport to self!");
			return false;
		}

		// Send player to the right server (if necessary)
        if (!SameServer(src.getServer(), dst.getServer())) {
            src.connect(dst.getServer().getInfo());
            DebugMsg("DEBUG connect " + src.getName() + " to server " + dst.getServer().getInfo().getName());
        }

        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(bytes);

        try {
            out.writeUTF("TeleportToPlayer");
            out.writeUTF(src.getName());
            out.writeUTF(dst.getName());
            getProxy().getScheduler().runAsync(this, new SendPluginMessage("BTBukkit", dst.getServer().getInfo(), bytes));
            if (isDebug()) {
            	String data = dumpPacket(bytes.toByteArray());
            	DebugMsg("DEBUG sent {BTBukkit}: " + data);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
            return false;
        }
		return true;
	}