From 7c7b6e0fd951b576f3103606efb254a31b04623e Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Sat, 28 May 2016 23:17:49 +0800 Subject: [PATCH] Fixed #73 --- .../yggdrasil/YggdrasilAuthentication.java | 2 +- .../launcher/core/launch/MinecraftLoader.java | 12 ++++++++++++ .../core/version/MinecraftVersion.java | 2 +- .../launcher/ui/LauncherSettingsPanel.form | 12 ++++++++++++ .../launcher/ui/LauncherSettingsPanel.java | 19 ++++++++++++++++++- 5 files changed, 44 insertions(+), 3 deletions(-) diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/auth/yggdrasil/YggdrasilAuthentication.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/auth/yggdrasil/YggdrasilAuthentication.java index 93a79777e..53d89b54c 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/auth/yggdrasil/YggdrasilAuthentication.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/auth/yggdrasil/YggdrasilAuthentication.java @@ -148,7 +148,7 @@ public class YggdrasilAuthentication { if (StrUtils.isNotBlank(response.error)) { HMCLog.err("Failed to log in, the auth server returned an error: " + response.error + ", message: " + response.errorMessage + ", cause: " + response.cause); - if (response.errorMessage.contains("Invalid token")) + if (response.errorMessage != null && response.errorMessage.contains("Invalid token")) response.errorMessage = C.i18n("login.invalid_token"); throw new AuthenticationException("Request error: " + response.errorMessage); } diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/launch/MinecraftLoader.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/launch/MinecraftLoader.java index d43fe8938..178cd07bd 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/launch/MinecraftLoader.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/launch/MinecraftLoader.java @@ -19,6 +19,7 @@ package org.jackhuang.hellominecraft.launcher.core.launch; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.jackhuang.hellominecraft.util.StrUtils; import org.jackhuang.hellominecraft.util.logging.HMCLog; @@ -44,13 +45,24 @@ public class MinecraftLoader extends AbstractMinecraftLoader { @Override protected void makeSelf(List res) throws GameException { StringBuilder library = new StringBuilder(""); + ArrayList opt = new ArrayList<>(); for (MinecraftLibrary l : version.libraries) if (l.allow() && !l.isRequiredToUnzip()) { + if (l.name.toLowerCase().contains("optifine")) { + opt.add(l); + continue; + } File f = l.getFilePath(gameDir); if (f == null) continue; library.append(f.getAbsolutePath()).append(File.pathSeparator); } + for (MinecraftLibrary l : opt) { + File f = l.getFilePath(gameDir); + if (f == null) + continue; + library.append(f.getAbsolutePath()).append(File.pathSeparator); + } File f = version.getJar(service.baseDirectory()); if (!f.exists()) throw new GameException("Minecraft jar does not exists"); diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java index 5141b6612..fb781f84f 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java @@ -145,7 +145,7 @@ public class MinecraftVersion implements Cloneable, Comparable this.assets != null ? this.assets : parent.assets, this.jar != null ? this.jar : parent.jar, null, this.runDir, parent.minimumLauncherVersion, - this.libraries != null ? ArrayUtils.merge(parent.libraries, this.libraries) : parent.libraries, this.hidden, + this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden, this.downloads != null ? this.downloads : parent.downloads, this.assetIndex != null ? this.assetIndex : parent.assetIndex); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form index 4b2ef2a4d..9eabf0b12 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form @@ -26,6 +26,8 @@ + + @@ -125,6 +127,7 @@ + @@ -345,5 +348,14 @@ + + + + + + + + + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java index 1ec85683f..29203424f 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java @@ -116,6 +116,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { cboLang = new javax.swing.JComboBox(); lblLang = new javax.swing.JLabel(); lblRestart = new javax.swing.JLabel(); + btnMCBBS = new javax.swing.JButton(); cboDownloadSource.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { @@ -240,6 +241,14 @@ public class LauncherSettingsPanel extends AnimatedPanel { lblRestart.setText(C.i18n("launcher.restart")); // NOI18N + btnMCBBS.setText("MCBBS"); + btnMCBBS.setToolTipText(""); + btnMCBBS.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMCBBSActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -253,6 +262,8 @@ public class LauncherSettingsPanel extends AnimatedPanel { .addComponent(chkEnableAnimation)) .addGroup(layout.createSequentialGroup() .addComponent(btnCheckUpdate) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnMCBBS) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(chkDecorated)) .addGroup(layout.createSequentialGroup() @@ -334,7 +345,8 @@ public class LauncherSettingsPanel extends AnimatedPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnCheckUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(chkDecorated)) + .addComponent(chkDecorated) + .addComponent(btnMCBBS)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblRestart) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 65, Short.MAX_VALUE) @@ -425,8 +437,13 @@ public class LauncherSettingsPanel extends AnimatedPanel { SwingUtils.openLink("http://huangyuhui.duapp.com/link.php?type=sponsor"); }//GEN-LAST:event_lblAboutMouseClicked + private void btnMCBBSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMCBBSActionPerformed + SwingUtils.openLink(C.URL_PUBLISH); + }//GEN-LAST:event_btnMCBBSActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCheckUpdate; + private javax.swing.JButton btnMCBBS; private javax.swing.JButton btnSelBackgroundPath; private javax.swing.JComboBox cboDownloadSource; private javax.swing.JComboBox cboLang;