mapInstallLocation.setEnabled(false);
serverMap.setEnabled(false);
tpInstall.setEnabled(false);
tpInstallLocation.setEnabled(false);
LoginWorker loginWorker = new LoginWorker(username, password, mojangData, selectedProfile) {
@Override
public void done () {
String responseStr;
try {
responseStr = get();
} catch (InterruptedException err) {
Logger.logError("User cancelled login process", err);
enableObjects();
return;
} catch (ExecutionException err) {
// Worker should not leak ExecutionExceptions to caller: all Exceptions are handled internally twice
if (err.getCause() instanceof IOException) {
Logger.logError("Error while logging in", err);
PlayOfflineDialog d = new PlayOfflineDialog("mcDown", username, UserManager.getUUID(username), getResp());
d.setVisible(true);
}
enableObjects();
return;
}
RESPONSE = getResp();
Logger.logDebug("responseStr: " + responseStr);
String uuid = UserManager.getUUID(username);
if (responseStr.equals("good")) {
Logger.logInfo("Login complete.");
try {
// save userdata, including new mojangData
Main.getUserManager().write();
Logger.logDebug("user data saved");
} catch (IOException e) {
Logger.logError("logindata saving failed!");
}
runGameUpdater();
} else if (uuid != null && !uuid.isEmpty() && RESPONSE != null && responseStr.equals("offline")) {
Logger.logDebug("Asking user for offline mode");
PlayOfflineDialog d = new PlayOfflineDialog("mcDown", username, uuid, RESPONSE);
d.setVisible(true);
} else {
Logger.logDebug("Bad responseStr, not starting MC");
enableObjects();
return;
}//if user doesn't want offline mode
enableObjects();
}
};
loginWorker.execute();
}