@Override protected Object doInBackground() throws Exception { loginFrame.getProgressBar().setVisible(true); loginFrame.getProgressBar().setString("Connecting to minecraft.net..."); try { values = Utils.doLogin(user, pass, loginFrame.getProgressBar()); Launcher.getGameUpdater().setMinecraftUser(values[2].trim()); Launcher.getGameUpdater().setMinecraftSession(values[3].trim()); Launcher.getGameUpdater().setDownloadTicket(values[1].trim()); Launcher.getGameUpdater().setMinecraftPass(pass); UserPasswordInformation info = null; for (String username : loginFrame.usernames.keySet()) { if (username.equalsIgnoreCase(user)) { info = loginFrame.usernames.get(username); break; } } if (info != null) { if (user.contains("@")) { info.username = values[2].trim(); } else { info.username = user; } info.password = pass; } loginFrame.onEvent(Event.SUCESSFUL_LOGIN); return true; } catch (AccountMigratedException e) { loginFrame.getProgressBar().setVisible(false); loginFrame.onEvent(Event.ACCOUNT_MIGRATED); } catch (BadLoginException e) { loginFrame.getProgressBar().setVisible(false); loginFrame.onEvent(Event.BAD_LOGIN); } catch (MinecraftUserNotPremiumException e) { loginFrame.onEvent(Event.USER_NOT_PREMIUM); loginFrame.getProgressBar().setVisible(false); } catch (PermissionDeniedException e) { loginFrame.onEvent(Event.PERMISSION_DENIED); this.cancel(true); loginFrame.getProgressBar().setVisible(false); } catch (MCNetworkException e) { UserPasswordInformation info = null; for (String username : loginFrame.usernames.keySet()) { if (username.equalsIgnoreCase(user)) { info = loginFrame.usernames.get(username); break; } } boolean authFailed = (info == null); if (!authFailed) { if (info.isHash) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(pass.getBytes()); for (int i = 0; i < hash.length; i++) { if (hash[i] != info.passwordHash[i]) { authFailed = true; break; } } } catch (NoSuchAlgorithmException ex) { authFailed = true; } } else { authFailed = !(pass.equals(info.password)); } } if (authFailed) { loginFrame.offline = false; loginFrame.onEvent(Event.MINECRAFT_NETWORK_DOWN); } else { loginFrame.offline = true; Launcher.getGameUpdater().setMinecraftUser(user); loginFrame.onEvent(Event.MINECRAFT_NETWORK_DOWN); } this.cancel(true); loginFrame.getProgressBar().setVisible(false); } catch (OutdatedMCLauncherException e) { JOptionPane.showMessageDialog( loginFrame.getParent(), "Incompatible login version. Contact Spout about updating the launcher!"); loginFrame.getProgressBar().setVisible(false); } catch (UnsupportedEncodingException e) { e.printStackTrace(); this.cancel(true); loginFrame.getProgressBar().setVisible(false); } catch (Exception e) { e.printStackTrace(); } return null; }
public void runGame(String user, String session, String downloadTicket) { Dimension size = WindowMode.getModeById(Settings.getWindowModeId()).getDimension(this); Point centeredLoc = WindowMode.getModeById(Settings.getWindowModeId()) .getCenteredLocation(Launcher.getLoginFrame()); this.setLocation(centeredLoc); this.setSize(size); Launcher.getGameUpdater().setWaiting(true); while (!Launcher.getGameUpdater().isFinished()) { try { Thread.sleep(100); } catch (InterruptedException ignore) { } } Applet applet = null; try { applet = MinecraftLauncher.getMinecraftApplet(Launcher.getGameUpdater().getBuild().getLibraries()); } catch (CorruptedMinecraftJarException corruption) { corruption.printStackTrace(); } catch (MinecraftVerifyException verify) { Launcher.clearCache(); JOptionPane.showMessageDialog( getParent(), "Your Minecraft installation is corrupt, but has been cleaned. \nTry to login again.\n\n If that fails, close and restart the appplication."); this.setVisible(false); this.dispose(); Launcher.getLoginFrame().enableForm(); return; } if (applet == null) { String message = "Failed to launch Spoutcraft!"; this.setVisible(false); JOptionPane.showMessageDialog(getParent(), message); this.dispose(); Launcher.getLoginFrame().enableForm(); return; } StartupParameters params = Utils.getStartupParameters(); minecraft = new MinecraftAppletEnglober(applet); minecraft.addParameter("username", user); minecraft.addParameter("sessionid", session); minecraft.addParameter("downloadticket", downloadTicket); minecraft.addParameter("spoutcraftlauncher", "true"); minecraft.addParameter("portable", params.isPortable() + ""); if (params.getServer() != null) { minecraft.addParameter("server", params.getServer()); if (params.getPort() != null) { minecraft.addParameter("port", params.getPort()); } else { minecraft.addParameter("port", "25565"); } } else if (Settings.getDirectJoin() != null && Settings.getDirectJoin().length() > 0) { String address = Settings.getDirectJoin(); String port = "25565"; if (address.contains(":")) { String[] s = address.split(":"); address = s[0]; port = s[1]; } minecraft.addParameter("server", address); minecraft.addParameter("port", port); } if (params.getProxyHost() != null) { minecraft.addParameter("proxy_host", params.getProxyHost()); } if (params.getProxyPort() != null) { minecraft.addParameter("proxy_port", params.getProxyPort()); } if (params.getProxyUser() != null) { minecraft.addParameter("proxy_user", params.getProxyUser()); } if (params.getProxyPassword() != null) { minecraft.addParameter("proxy_pass", params.getProxyPassword()); } // minecraft.addParameter("fullscreen", WindowMode.getModeById(Settings.getWindowModeId()) == // WindowMode.FULL_SCREEN ? "true" : "false"); applet.setStub(minecraft); this.add(minecraft); validate(); this.setVisible(true); minecraft.init(); minecraft.setSize(getWidth(), getHeight()); minecraft.start(); Launcher.getLoginFrame().onEvent(Event.GAME_LAUNCH); return; }