diff --git a/HMCL/build.gradle b/HMCL/build.gradle
index 0bad57abe..53ac5f957 100644
--- a/HMCL/build.gradle
+++ b/HMCL/build.gradle
@@ -89,13 +89,13 @@ task proguard(type: proguard.gradle.ProGuardTask, dependsOn: jar) {
launch4j {
launch4jCmd = 'D:\\Develop\\Java\\Launch4j\\launch4j.exe'
supportUrl = 'http://www.mcbbs.net/thread-142335-1-1.html'
- jreMinVersion = '1.6.0'
+ jreMinVersion = '1.7.0'
mainClassName = mainClass
icon = new File(project.buildDir, '../icon.ico').absolutePath
version = mavenVersion + '.0'
downloadUrl = 'http://java.com/download'
- copyright = "Copyright(c) 2013-2014 huangyuhui."
+ copyright = "Copyright(c) 2013-2015 huangyuhui."
jar = new File(project.buildDir, 'libs/' + mavenGroupId + '-' + mavenVersion + '.jar').absolutePath
outfile = mavenGroupId + '-' + mavenVersion + '.exe'
diff --git a/HMCL/image/3J33V83MSXJ6FSO4%WBZR7A.png b/HMCL/image/3J33V83MSXJ6FSO4%WBZR7A.png
deleted file mode 100644
index 091fcdf14..000000000
Binary files a/HMCL/image/3J33V83MSXJ6FSO4%WBZR7A.png and /dev/null differ
diff --git a/HMCL/image/A.jpg b/HMCL/image/A.jpg
deleted file mode 100644
index b20c78c8d..000000000
Binary files a/HMCL/image/A.jpg and /dev/null differ
diff --git a/HMCL/image/K0B_H3C~2_PSK_[SB)([))E.png b/HMCL/image/K0B_H3C~2_PSK_[SB)([))E.png
deleted file mode 100644
index 83b1e57f1..000000000
Binary files a/HMCL/image/K0B_H3C~2_PSK_[SB)([))E.png and /dev/null differ
diff --git a/HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png b/HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png
deleted file mode 100644
index 8c55c559c..000000000
Binary files a/HMCL/image/N9_Q[X2BQ{9$@S14RX%3}0M.png and /dev/null differ
diff --git a/HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png b/HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png
deleted file mode 100644
index dae14da11..000000000
Binary files a/HMCL/image/WO(NA%0}M$9BCRR62ZN{%87.png and /dev/null differ
diff --git a/HMCL/image/background.jpg b/HMCL/image/background.jpg
deleted file mode 100644
index 972dc4e6e..000000000
Binary files a/HMCL/image/background.jpg and /dev/null differ
diff --git a/HMCL/launch4j.xml b/HMCL/launch4j.xml
deleted file mode 100644
index b78c4bf25..000000000
--- a/HMCL/launch4j.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
- false
- gui
- F:\Documents\NetBeansProjects\HMCL\HMCL\build\libs\HMCL-2.1.3.jar
- F:\Documents\NetBeansProjects\HMCL\HMCL\build\libs\HMCL-2.1.3-Launch4j.exe
-
-
-
- normal
- http://java.com/download
-
- false
-
- F:\Documents\NetBeansProjects\HMCL\HMCL\icon.ico
-
-
- false
- 1.6.0
-
- preferJre
-
-
- 2.1.3.0
- 2.1.3.0
- Hello Minecraft! Launcher
- Copyright(c) 2013~2014 huangyuhui
- 2.1.3.0
- 2.1.3.0
- Hello Minecraft! Launcher
-
- Hello Minecraft! Launcher
- HMCL-2.1.3.exe
-
-
- 启动程序时出现错误
- 未找到内置Java
- 此程序需要Java
- 未找到Java
- 已存在一个程序实例
-
-
\ No newline at end of file
diff --git a/HMCL/proguard.pro b/HMCL/proguard.pro
index cda8d2319..6cf3060db 100644
--- a/HMCL/proguard.pro
+++ b/HMCL/proguard.pro
@@ -1,6 +1,6 @@
--libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\rt.jar
--libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\jce.jar
--libraryjars D:\Develop\Java\jdk1.6.0_45\jre\lib\jsse.jar
+-libraryjars /lib/rt.jar
+-libraryjars /lib/jce.jar
+-libraryjars /lib/jsse.jar
-dontoptimize
-dontshrink
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java
index 7483cbad9..aee962881 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java
@@ -22,9 +22,14 @@ import java.awt.datatransfer.StringSelection;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.ParseException;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
import org.jackhuang.hellominecraft.C;
import org.jackhuang.hellominecraft.utils.functions.DoneListener0;
import org.jackhuang.hellominecraft.HMCLog;
@@ -38,6 +43,7 @@ import org.jackhuang.hellominecraft.launcher.utils.settings.Settings;
import org.jackhuang.hellominecraft.launcher.views.MainFrame;
import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel;
import org.jackhuang.hellominecraft.utils.MessageBox;
+import org.jackhuang.hellominecraft.utils.StrUtils;
/**
*
@@ -90,12 +96,24 @@ public final class Main implements DoneListener0 {
try {
UIManager.setLookAndFeel(new HelloMinecraftLookAndFeel());
- } catch (Throwable ex) {
+ } catch (ParseException | UnsupportedLookAndFeelException ex) {
HMCLog.warn("Failed to set look and feel...", ex);
}
Settings.UPDATE_CHECKER.start();
+ if (StrUtils.isNotBlank(Settings.s().getProxyHost()) && StrUtils.isNotBlank(Settings.s().getProxyPort())) {
+ System.setProperty("http.proxyHost", Settings.s().getProxyHost());
+ System.setProperty("http.proxyPort", Settings.s().getProxyPort());
+ if (StrUtils.isNotBlank(Settings.s().getProxyUserName()) && StrUtils.isNotBlank(Settings.s().getProxyPassword()))
+ Authenticator.setDefault(new Authenticator() {
+ @Override
+ protected PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication(Settings.s().getProxyUserName(), Settings.s().getProxyPassword().toCharArray());
+ }
+ });
+ }
+
MainFrame.showMainFrame(Settings.isFirstLoad());
}
}
@@ -111,7 +129,7 @@ public final class Main implements DoneListener0 {
MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
try {
java.awt.Desktop.getDesktop().browse(new URI(C.URL_PUBLISH));
- } catch (Throwable e) {
+ } catch (URISyntaxException | IOException e) {
HMCLog.warn("Failed to browse uri: " + C.URL_PUBLISH, e);
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
index 20efe514c..06d2df93e 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
@@ -46,8 +46,7 @@ public class DefaultGameLauncher extends GameLauncher {
downloadLibrariesEvent.register((sender, t) -> {
final TaskWindow dw = TaskWindow.getInstance();
ParallelTask parallelTask = new ParallelTask();
- for (DownloadLibraryJob o : t) {
- final DownloadLibraryJob s = (DownloadLibraryJob) o;
+ for (DownloadLibraryJob s : t) {
parallelTask.addDependsTask(new FileDownloadTask(s.url, s.path).setTag(s.name));
}
dw.addTask(parallelTask);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java
index 0cb2957cd..7abda8366 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java
@@ -26,7 +26,6 @@ import org.jackhuang.hellominecraft.utils.tinystream.CollectionUtils;
import org.jackhuang.hellominecraft.utils.Event;
import org.jackhuang.hellominecraft.utils.JavaProcess;
import org.jackhuang.hellominecraft.utils.MessageBox;
-import org.jackhuang.hellominecraft.utils.functions.Predicate;
import org.jackhuang.hellominecraft.utils.ProcessThread;
import org.jackhuang.hellominecraft.utils.StrUtils;
import org.jackhuang.hellominecraft.views.LogWindow;
@@ -37,57 +36,44 @@ import org.jackhuang.hellominecraft.views.LogWindow;
*/
public class LaunchFinisher implements Event> {
- private final HashSet al = new HashSet();
+ private final HashSet al = new HashSet<>();
@Override
public boolean call(Object sender, List str) {
final GameLauncher obj = (GameLauncher) sender;
- obj.launchEvent.register(new Event() {
- @Override
- public boolean call(Object sender, JavaProcess p) {
- if (obj.getProfile().getLauncherVisibility() == 0 && !LogWindow.instance.isVisible())
- System.exit(0);
- else if (obj.getProfile().getLauncherVisibility() == 2)
- MainFrame.instance.closeMessage();
- else {
- if (LogWindow.instance.isVisible())
- LogWindow.instance.setExit(TrueDoneListener.instance);
- MainFrame.instance.dispose();
- }
- Event event = new Event() {
- @Override
- public boolean call(Object sender, JavaProcess t) {
- processThreadStopped((ProcessThread) sender, obj, t, false);
- return true;
- }
- };
- ProcessThread a = new ProcessThread(p, true, true);
- a.stopEvent.register(new Event() {
- @Override
- public boolean call(Object sender, JavaProcess p) {
- if (p.getExitCode() != 0 && p.getStdErrLines().size() > 0 && StrUtils.containsOne(p.getStdErrLines(),
- Arrays.asList("Could not create the Java Virtual Machine.",
- "Error occurred during initialization of VM",
- "A fatal exception has occurred. Program will exit.")))
- MessageBox.Show(C.i18n("launch.cannot_create_jvm"));
- processThreadStopped((ProcessThread) sender, obj, p, false);
- return true;
- }
- });
- a.start();
- al.add(a);
-
- a = new ProcessThread(p, false, true);
- a.stopEvent.register(event);
- a.start();
- al.add(a);
-
- a = new ProcessThread(p, false, false);
- a.stopEvent.register(event);
- a.start();
- al.add(a);
- return true;
+ obj.launchEvent.register((sender1, p) -> {
+ if (obj.getProfile().getLauncherVisibility() == 0 && !LogWindow.instance.isVisible())
+ System.exit(0);
+ else if (obj.getProfile().getLauncherVisibility() == 2)
+ MainFrame.instance.closeMessage();
+ else {
+ if (LogWindow.instance.isVisible())
+ LogWindow.instance.setExit(TrueDoneListener.instance);
+ MainFrame.instance.dispose();
}
+ Event event = (sender2, t) -> {
+ processThreadStopped((ProcessThread) sender2, obj, t, false);
+ return true;
+ };
+ ProcessThread a = new ProcessThread(p, true, true);
+ a.stopEvent.register((sender3, p1) -> {
+ if (p1.getExitCode() != 0 && p1.getStdErrLines().size() > 0 && StrUtils.containsOne(p1.getStdErrLines(), Arrays.asList("Could not create the Java Virtual Machine.",
+ "Error occurred during initialization of VM",
+ "A fatal exception has occurred. Program will exit."))) MessageBox.Show(C.i18n("launch.cannot_create_jvm"));
+ processThreadStopped((ProcessThread) sender3, obj, p1, false);
+ return true;
+ });
+ a.start();
+ al.add(a);
+ a = new ProcessThread(p, false, true);
+ a.stopEvent.register(event);
+ a.start();
+ al.add(a);
+ a = new ProcessThread(p, false, false);
+ a.stopEvent.register(event);
+ a.start();
+ al.add(a);
+ return true;
});
obj.launch(str);
return true;
@@ -95,14 +81,7 @@ public class LaunchFinisher implements Event> {
void processThreadStopped(ProcessThread t, GameLauncher obj, JavaProcess p, boolean forceTermintate) {
al.remove(t);
- al.removeAll(CollectionUtils.sortOut(al, new Predicate() {
-
- @Override
- public boolean apply(Thread t) {
- return !t.isAlive();
- }
-
- }));
+ al.removeAll(CollectionUtils.sortOut(al, t1 -> !t1.isAlive()));
if (al.isEmpty() || forceTermintate) {
for (Thread a : al) a.interrupt();
al.clear();
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java
index c280e814a..3479f4d41 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Config.java
@@ -35,7 +35,8 @@ public final class Config {
@SerializedName("username")
private String username;
@SerializedName("clientToken")
- private String clientToken;
+ private final String clientToken;
+ private String proxyHost, proxyPort, proxyUserName, proxyPassword;
@SerializedName("enableShadow")
private boolean enableShadow;
@SerializedName("theme")
@@ -160,4 +161,40 @@ public final class Config {
if(downloadtype >= DownloadType.values().length || downloadtype < 0) return null;
return DownloadType.values()[downloadtype];
}
+
+ public String getProxyHost() {
+ return proxyHost == null ? "" : proxyHost;
+ }
+
+ public void setProxyHost(String proxyHost) {
+ this.proxyHost = proxyHost;
+ Settings.save();
+ }
+
+ public String getProxyPort() {
+ return proxyPort == null ? "" : proxyPort;
+ }
+
+ public void setProxyPort(String proxyPort) {
+ this.proxyPort = proxyPort;
+ Settings.save();
+ }
+
+ public String getProxyUserName() {
+ return proxyUserName == null ? "" : proxyUserName;
+ }
+
+ public void setProxyUserName(String proxyUserName) {
+ this.proxyUserName = proxyUserName;
+ Settings.save();
+ }
+
+ public String getProxyPassword() {
+ return proxyPassword == null ? "" : proxyPassword;
+ }
+
+ public void setProxyPassword(String proxyPassword) {
+ this.proxyPassword = proxyPassword;
+ Settings.save();
+ }
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java
index 4dede23ea..ae09679b5 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/settings/Settings.java
@@ -16,12 +16,13 @@
*/
package org.jackhuang.hellominecraft.launcher.utils.settings;
+import com.google.gson.JsonSyntaxException;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Map;
+import java.util.Objects;
import org.jackhuang.hellominecraft.C;
-import org.jackhuang.hellominecraft.utils.functions.DoneListener0;
import org.jackhuang.hellominecraft.HMCLog;
import org.jackhuang.hellominecraft.launcher.Main;
import org.jackhuang.hellominecraft.utils.tinystream.CollectionUtils;
@@ -40,7 +41,7 @@ public final class Settings {
public static final File settingsFile = new File(IOUtils.currentDir(), "hmcl.json");
private static boolean isFirstLoad;
- private static Config settings;
+ private static final Config settings;
public static final UpdateChecker UPDATE_CHECKER;
public static Config s() {
@@ -52,50 +53,39 @@ public final class Settings {
}
static {
+ settings = initSettings();
+ isFirstLoad = StrUtils.isBlank(settings.getUsername());
+ if(!getVersions().containsKey("Default"))
+ getVersions().put("Default", new Profile());
+
+ UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer),
+ "hmcl", settings.isCheckUpdate(), () -> Main.invokeUpdate());
+ }
+
+ private static Config initSettings() {
+ Config c = new Config();
if (settingsFile.exists()) {
try {
String str = FileUtils.readFileToString(settingsFile);
if (str == null || str.trim().equals("")) {
- init();
-
HMCLog.log("Settings file is empty, use the default settings.");
} else {
- settings = C.gsonPrettyPrinting.fromJson(str, Config.class);
+ Config d = C.gsonPrettyPrinting.fromJson(str, Config.class);
+ if(d != null) c = d;
}
HMCLog.log("Initialized settings.");
- } catch (Exception e) {
+ } catch (IOException | JsonSyntaxException e) {
HMCLog.warn("Something happened wrongly when load settings.", e);
- if (MessageBox.Show(C.i18n("settings.failed_load"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) {
- init();
- } else {
+ if (MessageBox.Show(C.i18n("settings.failed_load"), MessageBox.YES_NO_OPTION) == MessageBox.NO_OPTION) {
HMCLog.err("Cancelled loading settings.");
System.exit(1);
}
}
} else {
HMCLog.log("No settings file here, may be first loading.");
-
isFirstLoad = true;
- init();
}
- if(settings == null) init();
- isFirstLoad = StrUtils.isBlank(settings.getUsername());
- if(!settings.getConfigurations().containsKey("Default")) {
- settings.getConfigurations().put("Default", new Profile());
- }
-
- UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer), "hmcl", settings.isCheckUpdate(), new DoneListener0() {
-
- @Override
- public void onDone() {
- Main.invokeUpdate();
- }
- });
- }
-
- public static void init() {
- settings = new Config();
- save();
+ return c;
}
public static void save() {
@@ -107,13 +97,7 @@ public final class Settings {
}
public static Profile getVersion(String name) {
- if (settings == null) {
- return null;
- }
- if (settings.getConfigurations() == null) {
- return null;
- }
- return settings.getConfigurations().get(name);
+ return getVersions().get(name);
}
public static Map getVersions() {
@@ -121,31 +105,22 @@ public final class Settings {
}
public static void setVersion(Profile ver) {
- if (ver == null) {
- return;
- }
- settings.getConfigurations().put(ver.getName(), ver);
+ Objects.requireNonNull(ver);
+ getVersions().put(ver.getName(), ver);
}
public static Collection getProfiles() {
- return CollectionUtils.sortOut(settings.getConfigurations().values(), (t) -> t != null && t.getName() != null);
+ return CollectionUtils.sortOut(getVersions().values(), (t) -> t != null && t.getName() != null);
}
public static Profile getOneProfile() {
- if(settings.getConfigurations().size() == 0) {
- settings.getConfigurations().put("Default", new Profile());
- }
return settings.getConfigurations().firstEntry().getValue();
}
public static boolean trySetVersion(Profile ver) {
- if (ver == null || ver.getName() == null) {
+ if (ver == null || ver.getName() == null || getVersions().containsKey(ver.getName()))
return false;
- }
- if (settings.getConfigurations().containsKey(ver.getName())) {
- return false;
- }
- settings.getConfigurations().put(ver.getName(), ver);
+ getVersions().put(ver.getName(), ver);
return true;
}
@@ -154,7 +129,6 @@ public final class Settings {
}
public static void delVersion(String ver) {
- if (settings == null) return;
- settings.getConfigurations().remove(ver);
+ getVersions().remove(ver);
}
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form
index 8f5af0159..b18ee642b 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form
@@ -19,22 +19,14 @@
-
-
-
-
-
-
-
-
-
+
-
+
@@ -43,8 +35,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70,11 +88,22 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
@@ -174,5 +203,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
index ba0d391b5..ecf1c461e 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
@@ -39,6 +39,10 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
initComponents();
txtBackgroundPath.setText(Settings.s().getBgpath());
+ txtProxyHost.setText(Settings.s().getProxyHost());
+ txtProxyPort.setText(Settings.s().getProxyPort());
+ txtProxyUsername.setText(Settings.s().getProxyUserName());
+ txtProxyPassword.setText(Settings.s().getProxyPassword());
cboDownloadSource.setSelectedIndex(Settings.s().getDownloadType());
cboTheme.setSelectedIndex(Settings.s().getTheme());
chkEnableShadow.setSelected(Settings.s().isEnableShadow());
@@ -66,6 +70,15 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
chkEnableShadow = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
cboTheme = new javax.swing.JComboBox();
+ jLabel2 = new javax.swing.JLabel();
+ txtProxyHost = new javax.swing.JTextField();
+ jLabel3 = new javax.swing.JLabel();
+ txtProxyPort = new javax.swing.JTextField();
+ jLabel5 = new javax.swing.JLabel();
+ jLabel6 = new javax.swing.JLabel();
+ txtProxyUsername = new javax.swing.JTextField();
+ txtProxyPassword = new javax.swing.JTextField();
+ jLabel8 = new javax.swing.JLabel();
cboDownloadSource.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Mojang", "BMCLAPI(By bangbang93)" }));
cboDownloadSource.addItemListener(new java.awt.event.ItemListener() {
@@ -119,6 +132,40 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
}
});
+ jLabel2.setText(bundle.getString("launcher.proxy")); // NOI18N
+
+ txtProxyHost.addFocusListener(new java.awt.event.FocusAdapter() {
+ public void focusLost(java.awt.event.FocusEvent evt) {
+ txtProxyHostFocusLost(evt);
+ }
+ });
+
+ jLabel3.setText(bundle.getString("proxy.host")); // NOI18N
+
+ txtProxyPort.addFocusListener(new java.awt.event.FocusAdapter() {
+ public void focusLost(java.awt.event.FocusEvent evt) {
+ txtProxyPortFocusLost(evt);
+ }
+ });
+
+ jLabel5.setText(bundle.getString("proxy.port")); // NOI18N
+
+ jLabel6.setText(bundle.getString("proxy.username")); // NOI18N
+
+ txtProxyUsername.addFocusListener(new java.awt.event.FocusAdapter() {
+ public void focusLost(java.awt.event.FocusEvent evt) {
+ txtProxyUsernameFocusLost(evt);
+ }
+ });
+
+ txtProxyPassword.addFocusListener(new java.awt.event.FocusAdapter() {
+ public void focusLost(java.awt.event.FocusEvent evt) {
+ txtProxyPasswordFocusLost(evt);
+ }
+ });
+
+ jLabel8.setText(bundle.getString("proxy.password")); // NOI18N
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -127,17 +174,11 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(chkEnableShadow)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(btnCheckUpdate))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7)
.addComponent(jLabel1)
- .addComponent(jLabel14))
+ .addComponent(jLabel14)
+ .addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
@@ -145,7 +186,30 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnSelBackgroundPath))
.addComponent(cboDownloadSource, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(cboTheme, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+ .addComponent(cboTheme, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jLabel3)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtProxyHost, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel5)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel6)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtProxyUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel8)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtProxyPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, Short.MAX_VALUE))))
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(chkEnableShadow)
+ .addComponent(btnCheckUpdate))
+ .addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
@@ -165,10 +229,21 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
.addComponent(jLabel1)
.addComponent(cboTheme, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(chkEnableShadow)
- .addComponent(btnCheckUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtProxyHost, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel2)
+ .addComponent(jLabel3)
+ .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel5)
+ .addComponent(txtProxyUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel6)
+ .addComponent(txtProxyPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel8))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(chkEnableShadow)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnCheckUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 71, Short.MAX_VALUE)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
@@ -200,8 +275,7 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
}//GEN-LAST:event_btnSelBackgroundPathActionPerformed
private void txtBackgroundPathFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtBackgroundPathFocusLost
- String path = txtBackgroundPath.getText();
- Settings.s().setBgpath(path);
+ Settings.s().setBgpath(txtBackgroundPath.getText());
MainFrame.instance.loadBackground();
}//GEN-LAST:event_txtBackgroundPathFocusLost
@@ -219,6 +293,22 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
MainFrame.instance.reloadColor();
}//GEN-LAST:event_cboThemeItemStateChanged
+ private void txtProxyHostFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtProxyHostFocusLost
+ Settings.s().setProxyHost(txtProxyHost.getText());
+ }//GEN-LAST:event_txtProxyHostFocusLost
+
+ private void txtProxyPortFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtProxyPortFocusLost
+ Settings.s().setProxyPort(txtProxyPort.getText());
+ }//GEN-LAST:event_txtProxyPortFocusLost
+
+ private void txtProxyUsernameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtProxyUsernameFocusLost
+ Settings.s().setProxyUserName(txtProxyUsername.getText());
+ }//GEN-LAST:event_txtProxyUsernameFocusLost
+
+ private void txtProxyPasswordFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtProxyPasswordFocusLost
+ Settings.s().setProxyPassword(txtProxyPassword.getText());
+ }//GEN-LAST:event_txtProxyPasswordFocusLost
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCheckUpdate;
private javax.swing.JButton btnSelBackgroundPath;
@@ -227,8 +317,17 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
private javax.swing.JCheckBox chkEnableShadow;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel14;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
+ private javax.swing.JLabel jLabel5;
+ private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
+ private javax.swing.JLabel jLabel8;
private javax.swing.JTextField txtBackgroundPath;
+ private javax.swing.JTextField txtProxyHost;
+ private javax.swing.JTextField txtProxyPassword;
+ private javax.swing.JTextField txtProxyPort;
+ private javax.swing.JTextField txtProxyUsername;
// End of variables declaration//GEN-END:variables
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
index 6d63e7583..18d8c5a4c 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
@@ -34,6 +34,7 @@ public final class C {
public static final String URL_PUBLISH = "http://www.mcbbs.net/thread-142335-1-1.html";
public static final String URL_TIEBA = "http://tieba.baidu.com/f?kw=hellominecraftlauncher";
+ public static final String URL_GITHUB = "https://github.com/huanghongxun/HMCL/issues";
public static final String URL_MINECRAFTFORUM = "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1265720-hello-minecraft-launcher-1-9-3-mc-1-7-4-auto";
public static final String FILE_MINECRAFT_VERSIONS = "versions";
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java
index 61c9376d1..61ae96afe 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Compressor.java
@@ -41,8 +41,9 @@ public class Compressor {
/**
* 鍔熻兘锛氭妸 sourceDir 鐩綍涓嬬殑鎵鏈夋枃浠惰繘琛 zip 鏍煎紡鐨勫帇缂╋紝淇濆瓨涓烘寚瀹 zip 鏂囦欢
*
- * @param sourceDir
- * @param zipFile
+ * @param sourceDir 婧愭枃浠跺す
+ * @param zipFile 鍘嬬缉鐢熸垚鐨剒ip鏂囦欢璺緞銆
+ * @throws java.io.IOException 鍘嬬缉澶辫触鎴栨棤娉曡鍙
*/
public static void zip(File sourceDir, File zipFile) throws IOException {
FileOutputStream os;
@@ -65,7 +66,7 @@ public class Compressor {
*
* @param source zip鏂囦欢璺緞
* @param basePath 寰呭帇缂╂枃浠舵牴鐩綍
- * @param zos
+ * @param zos zip鏂囦欢鐨刼s
*/
private static void zipFile(File source, String basePath,
ZipOutputStream zos) throws IOException {
@@ -115,6 +116,7 @@ public class Compressor {
* @param zipFileName zip鏂囦欢璺緞
* @param extPlace 寰呭帇缂╂枃浠舵牴鐩綍
* @param without 甯﹀墠缂鐨勪笉瑙e帇
+ * @throws java.io.IOException 瑙e帇澶辫触鎴栨棤娉曞啓鍏
*/
public static void unzip(File zipFileName, File extPlace, String[] without) throws IOException {
extPlace.mkdirs();
@@ -164,6 +166,7 @@ public class Compressor {
*
* @param destFile zip1
* @param srcFile zip2
+ * @throws java.io.IOException 鏃犳硶鍐欏叆鎴栬鍙
*/
public static void merge(File destFile, File srcFile) throws IOException {
try (ZipOutputStream os = new ZipOutputStream(new FileOutputStream(destFile))) {
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java
index fa9580a07..44d28a626 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/tinystream/Stream.java
@@ -42,12 +42,16 @@ public class Stream {
protected Stream() {
}
- protected static Stream of(List a) {
+ protected static Stream noneCopyOf(List a) {
Stream b = new Stream<>();
b.internal = a;
return b;
}
+ protected static Stream of(Collection a) {
+ return new Stream<>(a);
+ }
+
public Stream forEach(Consumer super T> p) {
for (T t : internal) p.accept(t);
return this;
@@ -88,15 +92,25 @@ public class Stream {
}
public boolean anyMatch(Predicate super T> p) {
- return map(t -> p.apply(t)).reduce(false, (accumulator, _item) -> accumulator | _item);
+ return map(t -> p.apply(t)).reduce(false, (a, b) -> a | b);
}
public boolean allMatch(Predicate super T> p) {
- return map(t -> p.apply(t)).reduce(true, (accumulator, _item) -> accumulator & _item);
+ return map(t -> p.apply(t)).reduce(true, (a, b) -> a & b);
}
public T findFirst() {
return internal.isEmpty() ? null : internal.get(0);
}
+
+ public Stream skip(int c) {
+ internal = internal.subList(c+1, internal.size());
+ return this;
+ }
+
+ public Stream limit(int c) {
+ internal = internal.subList(0, c);
+ return this;
+ }
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form
index 2e5783db0..906cc170b 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form
@@ -37,6 +37,8 @@
+
+
@@ -46,7 +48,7 @@
-
+
@@ -68,6 +70,7 @@
+
@@ -164,5 +167,13 @@
+
+
+
+
+
+
+
+
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
index 14f0195a5..354b3e16b 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
@@ -73,6 +73,7 @@ public class LogWindow extends javax.swing.JFrame {
btnTieBa = new javax.swing.JButton();
btnMCF = new javax.swing.JButton();
btnTerminateGame = new javax.swing.JButton();
+ btnGitHub = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Log");
@@ -139,6 +140,13 @@ public class LogWindow extends javax.swing.JFrame {
}
});
+ btnGitHub.setText("GitHub");
+ btnGitHub.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnGitHubActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
@@ -153,6 +161,8 @@ public class LogWindow extends javax.swing.JFrame {
.addComponent(btnMCBBS)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnMCF)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnGitHub)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnTerminateGame)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@@ -161,7 +171,7 @@ public class LogWindow extends javax.swing.JFrame {
.addComponent(btnClear)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnClose))
- .addComponent(lblCrash, javax.swing.GroupLayout.DEFAULT_SIZE, 639, Short.MAX_VALUE))
+ .addComponent(lblCrash, javax.swing.GroupLayout.DEFAULT_SIZE, 674, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
@@ -179,7 +189,8 @@ public class LogWindow extends javax.swing.JFrame {
.addComponent(btnMCBBS)
.addComponent(btnTieBa)
.addComponent(btnMCF)
- .addComponent(btnTerminateGame))
+ .addComponent(btnTerminateGame)
+ .addComponent(btnGitHub))
.addContainerGap())
);
@@ -219,6 +230,10 @@ public class LogWindow extends javax.swing.JFrame {
terminateGameListener.onDone();
}//GEN-LAST:event_btnTerminateGameActionPerformed
+ private void btnGitHubActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGitHubActionPerformed
+ Utils.openLink(C.URL_GITHUB);
+ }//GEN-LAST:event_btnGitHubActionPerformed
+
public void log(String status) {
String text = txtLog.getText();
text += status + System.getProperty("line.separator");
@@ -286,6 +301,7 @@ public class LogWindow extends javax.swing.JFrame {
private javax.swing.JButton btnClear;
private javax.swing.JButton btnClose;
private javax.swing.JButton btnCopy;
+ private javax.swing.JButton btnGitHub;
private javax.swing.JButton btnMCBBS;
private javax.swing.JButton btnMCF;
private javax.swing.JButton btnTerminateGame;
diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties
index 9ce0f4cdc..c458f4c35 100644
--- a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties
+++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties
@@ -73,6 +73,11 @@ login.type=\u767b\u5f55
login.username=\u540d\u5b57
login.account=\u90ae\u7bb1
+proxy.username=\u8d26\u6237
+proxy.password=\u5bc6\u7801
+proxy.host=\u4e3b\u673a
+proxy.port=\u7aef\u53e3
+
login.failed.connect_authentication_server=\u65e0\u6cd5\u8fde\u63a5\u8ba4\u8bc1\u670d\u52a1\u5668,\u53ef\u80fd\u662f\u7f51\u7edc\u95ee\u9898
login.profile.not_logged_in=\u65e0\u6cd5\u4fee\u6539\u6e38\u620f\u8d44\u6599\u540c\u65f6\u672a\u767b\u5f55
@@ -144,7 +149,7 @@ ui.message.making=\u751f\u6210\u4e2d
ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f
ui.label.settings=\u9009\u9879
-ui.label.crashing=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u8bf7\u590d\u5236\u4e0b\u5217\u5185\u5bb9\u5e76\u901a\u8fc7mcbbs\u3001\u8d34\u5427\u6216Minecraft Forum\u53cd\u9988bug\u3002
+ui.label.crashing=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u8bf7\u590d\u5236\u4e0b\u5217\u5185\u5bb9\u5e76\u901a\u8fc7mcbbs\u3001\u8d34\u5427\u3001Github\u6216Minecraft Forum\u53cd\u9988bug\u3002
ui.label.crashing_out_dated=Hello Minecraft! Launcher\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u5df2\u68c0\u6d4b\u5230\u60a8\u7684\u542f\u52a8\u5668\u4e0d\u662f\u6700\u65b0\u7248\u672c\uff0c\u8bf7\u66f4\u65b0\u540e\u518d\u8bd5\uff01
ui.label.failed_set=\u8bbe\u7f6e\u5931\u8d25\uff1a
@@ -221,6 +226,7 @@ launcher.background_tooltip=\n\n\u542f\u52a8\u5668\u9ed8\u8ba4\u4f7f
launcher.update_launcher=\u68c0\u67e5\u66f4\u65b0
launcher.enable_shadow=\u542f\u7528\u7a97\u53e3\u9634\u5f71(\u91cd\u542f\u542f\u52a8\u5668\u751f\u6548,\u53ef\u52a0\u5feb\u6e32\u67d3\u901f\u5ea6)
launcher.theme=\u4e3b\u9898
+launcher.proxy=\u4ee3\u7406
launcher.title.game=\u6e38\u620f\u8bbe\u7f6e
launcher.title.main=\u4e3b\u9875
diff --git a/HMCSM/build.gradle b/HMCSM/build.gradle
index b3e5d41f2..9b6b97b16 100644
--- a/HMCSM/build.gradle
+++ b/HMCSM/build.gradle
@@ -50,7 +50,7 @@ configure(install.repositories.mavenInstaller) {
dependencies {
compile project(":HMCLAPI")
compile project(":MetroLookAndFeel")
- compile files("../../../../repo/org/ho/jyaml/1.3/jyaml-1.3.jar")
+ compile ('org.jyaml:jyaml:1.3')
compile ("org.tukaani:xz:1.5")
compile ('org.jsoup:jsoup:1.7.2')
}
diff --git a/HMCSM/proguard.pro b/HMCSM/proguard.pro
index f4d2fd4fe..dd55e251c 100644
--- a/HMCSM/proguard.pro
+++ b/HMCSM/proguard.pro
@@ -1,6 +1,6 @@
--libraryjars D:\Java\jdk1.6.0_45\jre\lib\rt.jar
--libraryjars D:\Java\jdk1.6.0_45\jre\lib\jce.jar
--libraryjars D:\Java\jdk1.6.0_45\jre\lib\jsse.jar
+-libraryjars /lib/rt.jar
+-libraryjars /lib/jce.jar
+-libraryjars /lib/jsse.jar
-dontoptimize
-dontwarn
diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java
index fbca5ca6f..3d422ab23 100644
--- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java
+++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java
@@ -9,8 +9,8 @@ package org.jackhuang.hellominecraft.svrmgr.installer.bukkit;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.HMCLog;
+import org.jackhuang.hellominecraft.utils.functions.Consumer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -22,18 +22,18 @@ import org.jsoup.select.Elements;
*/
public class BukkitFormatThread extends Thread {
- DoneListener1> lis;
+ Consumer> lis;
List formattedList;
String url;
- public BukkitFormatThread(String url, DoneListener1> lis) {
+ public BukkitFormatThread(String url, Consumer> lis) {
this.lis = lis;
this.url = url;
}
public void format(String url) {
- formattedList = new ArrayList();
+ formattedList = new ArrayList<>();
try {
Document doc = Jsoup.connect(url).get();
@@ -74,7 +74,7 @@ public class BukkitFormatThread extends Thread {
List al = null;
format(url);
if(lis != null)
- lis.onDone(formattedList);
+ lis.accept(formattedList);
}
}
diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java
index 687066bb2..9fd5784e9 100644
--- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java
+++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java
@@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.jackhuang.hellominecraft.DoneListener1;
+import org.jackhuang.hellominecraft.utils.functions.Consumer;
import org.jackhuang.hellominecraft.HMCLog;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@@ -22,10 +22,10 @@ import org.jsoup.select.Elements;
*/
public class ForgeFormatThread extends Thread {
- DoneListener1