Newer
Older
KeeperJerry_Launcher / Launcher / source-authlib / yggdrasil / LegacyBridge.java
@sashok724 sashok724 on 18 Jun 2017 3 KB Typo
package com.mojang.authlib.yggdrasil;

import java.util.HashMap;
import java.util.Map;

import launcher.LauncherAPI;
import launcher.client.ClientLauncher;
import launcher.client.PlayerProfile;
import launcher.helper.CommonHelper;
import launcher.helper.IOHelper;
import launcher.helper.LogHelper;
import launcher.helper.SecurityHelper;
import launcher.request.auth.CheckServerRequest;
import launcher.request.auth.JoinServerRequest;

@LauncherAPI
public final class LegacyBridge {
    private LegacyBridge() {
    }

    @SuppressWarnings("unused")
    public static boolean checkServer(String username, String serverID) throws Exception {
        LogHelper.debug("LegacyBridge.checkServer, Username: '%s', Server ID: %s", username, serverID);
        return new CheckServerRequest(username, serverID).request() != null;
    }

    @SuppressWarnings("unused") // Result is user properties (Used by BungeeCord)
    public static Map<String, String> checkServerWithProperties(String username, String serverID) throws Exception {
        PlayerProfile pp = new CheckServerRequest(username, serverID).request();
        if (pp == null) {
            return null;
        }

        // Add properties
        Map<String, String> properties = new HashMap<>(5);
        properties.put("uuid", pp.uuid.toString());
        properties.put("uuid-hash", ClientLauncher.toHash(pp.uuid));
        if (pp.skin != null) {
            properties.put(ClientLauncher.SKIN_URL_PROPERTY, pp.skin.url);
            properties.put(ClientLauncher.SKIN_DIGEST_PROPERTY, SecurityHelper.toHex(pp.skin.digest));
        }
        if (pp.cloak != null) {
            properties.put(ClientLauncher.CLOAK_URL_PROPERTY, pp.cloak.url);
            properties.put(ClientLauncher.CLOAK_DIGEST_PROPERTY, SecurityHelper.toHex(pp.cloak.digest));
        }

        // We're done
        return properties;
    }

    @SuppressWarnings("unused")
    public static String getCloakURL(String username) {
        LogHelper.debug("LegacyBridge.getCloakURL: '%s'", username);
        return CommonHelper.replace(System.getProperty("launcher.legacy.cloaksURL",
            "http://skins.minecraft.net/MinecraftCloaks/%username%.png"), "username", IOHelper.urlEncode(username));
    }

    @SuppressWarnings("unused")
    public static String getSkinURL(String username) {
        LogHelper.debug("LegacyBridge.getSkinURL: '%s'", username);
        return CommonHelper.replace(System.getProperty("launcher.legacy.skinsURL",
            "http://skins.minecraft.net/MinecraftSkins/%username%.png"), "username", IOHelper.urlEncode(username));
    }

    @SuppressWarnings("unused")
    public static String joinServer(String username, String accessToken, String serverID) {
        if (!ClientLauncher.isLaunched()) {
            return "Bad Login (Cheater)";
        }

        // Join server
        LogHelper.debug("LegacyBridge.joinServer, Username: '%s', Access token: %s, Server ID: %s", username, accessToken, serverID);
        try {
            return new JoinServerRequest(username, accessToken, serverID).request() ? "OK" : "Bad Login (Clientside)";
        } catch (Exception e) {
            return e.toString();
        }
    }
}