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 p) { for (T t : internal) p.accept(t); return this; @@ -88,15 +92,25 @@ public class Stream { } public boolean anyMatch(Predicate 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 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>> lis; + Consumer>> lis; Map> formattedList; - public ForgeFormatThread(DoneListener1>> lis) { + public ForgeFormatThread(Consumer>> lis) { this.lis = lis; } @@ -75,14 +75,14 @@ public class ForgeFormatThread extends Thread { } if(!formattedList.containsKey(v.mcver)) - formattedList.put(v.mcver, new ArrayList()); + formattedList.put(v.mcver, new ArrayList<>()); formattedList.get(v.mcver).add(v); } } catch (IOException ex) { HMCLog.warn("Failed to get forge list", ex); ForgeVersion v = new ForgeVersion(); v.mcver = v.ver = "鑾峰彇澶辫触"; - formattedList.put(v.mcver, new ArrayList()); + formattedList.put(v.mcver, new ArrayList<>()); formattedList.get(v.mcver).add(v); } } @@ -91,7 +91,7 @@ public class ForgeFormatThread extends Thread { public void run() { formatNew(); if(lis != null) - lis.onDone(formattedList); + lis.accept(formattedList); } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java index df7fba011..02fe1e52b 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java @@ -22,8 +22,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.jackhuang.hellominecraft.utils.functions.DoneListener0; -import org.jackhuang.hellominecraft.DoneListener1; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.utils.IOUtils; import org.jackhuang.hellominecraft.utils.MessageBox; @@ -34,12 +32,15 @@ import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; import org.jackhuang.hellominecraft.svrmgr.threads.MonitorThread; import org.jackhuang.hellominecraft.svrmgr.threads.WaitForThread; import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.EventHandler; +import org.jackhuang.hellominecraft.utils.functions.Consumer; /** * * @author hyh */ -public class Server implements DoneListener1, MonitorThread.MonitorThreadListener, +public class Server implements Event, MonitorThread.MonitorThreadListener, ActionListener { private static Server instance; @@ -61,10 +62,11 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre Process server; MonitorThread threadA, threadB; WaitForThread threadC; - DoneListener1> gettingPlayerNumber; + Consumer> gettingPlayerNumber; ArrayList listeners; - ArrayList> listenersC; - ArrayList listenersBegin, listenersDone; + ArrayList> listenersC; + //ArrayList listenersBegin, listenersDone; + public final EventHandler startedEvent = new EventHandler<>(this), stoppedEvent = new EventHandler<>(this); ArrayList timerTasks; ArrayList schedules; BufferedWriter bw; @@ -78,30 +80,20 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre this.jar = jar; this.memory = memory; isRestart = isDone = false; - listeners = new ArrayList(); - listenersC = new ArrayList>(); - listenersBegin = new ArrayList(); - listenersDone = new ArrayList(); - schedules = new ArrayList(); - timerTasks = new ArrayList(); + listeners = new ArrayList<>(); + listenersC = new ArrayList<>(); + schedules = new ArrayList<>(); + timerTasks = new ArrayList<>(); } public void addListener(MonitorThread.MonitorThreadListener l) { listeners.add(l); } - public void addListener(DoneListener1 l) { + public void addListener(Event l) { listenersC.add(l); } - public void addServerStartedListener(DoneListener0 l) { - listenersBegin.add(l); - } - - public void addServerDoneListener(DoneListener0 l) { - listenersDone.add(l); - } - public void run() throws IOException { String jvmPath; if (StrUtils.isBlank(SettingsManager.settings.javaDir)) { @@ -133,9 +125,7 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre bw = new BufferedWriter(new OutputStreamWriter(server.getOutputStream())); } isRunning = true; - for (DoneListener0 d : listenersBegin) { - d.onDone(); - } + startedEvent.execute(null); sendStatus("*** 鍚姩鏈嶅姟绔腑 ***"); } catch (IOException ex) { Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); @@ -156,7 +146,7 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre } } - public void getPlayerNumber(DoneListener1> d) { + public void getPlayerNumber(Consumer> d) { isGettingPlayerNumber = 1; gettingPlayerNumber = d; sendCommand("list"); @@ -210,15 +200,13 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre private void registerThreadC(Process p) { threadC = new WaitForThread(p); - for (DoneListener1 l : listenersC) { - threadC.addListener(l); - } - threadC.addListener(this); + for (Event l : listenersC) threadC.event.register(l); + threadC.event.register(this); threadC.start(); } @Override - public void onDone(Integer t) { + public boolean call(Object sender, Integer t) { if (t == 0) { sendStatus("*** 鏈嶅姟绔凡鍋滄 ***"); System.out.println("Server stopped successfully"); @@ -227,17 +215,9 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre System.err.println("Server crashed(exit code: " + t + ")"); } isRunning = false; - for (int i = 0; i < schedules.size(); i++) { - if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_STOPPED) { - ScheduleTranslator.translate(this, schedules.get(i)).run(); - } - } - if (timer != null) { - timer.cancel(); - } - if (pastTimer != null) { - pastTimer.stop(); - } + for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_STOPPED) ScheduleTranslator.translate(this, schedule).run(); + if (timer != null) timer.cancel(); + if (pastTimer != null) pastTimer.stop(); restoreMods(); if (isRestart) { try { @@ -248,6 +228,7 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre } isRestart = false; } + return true; } private static void disactiveMods(ArrayList inactiveExtMods, @@ -270,58 +251,49 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre System.out.println("娌℃湁鏂囦欢: " + paramString); return; } - for (int i = 0; i < files.length; i++) { - File file = files[i]; - if (!file.isDirectory()) { - String name = file.getName(); - - if ((!paramArrayOfString.contains(name)) - || ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) { - continue; - } - - String newName = name + "X"; - File newFile = new File(file.getParentFile(), newName); - - if (newFile.exists()) { - newFile.delete(); - } - if (file.renameTo(newFile)) { - System.out.println("宸茬鐢: " + name + ", 鏂板悕绉: " + newFile.getName()); - } else { - System.out.println("鏃犳硶绂佺敤: " + name); - } - } - } + for (File file : files) if (!file.isDirectory()) { + String name = file.getName(); + + if ((!paramArrayOfString.contains(name)) + || ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) { + continue; + } + + String newName = name + "X"; + File newFile = new File(file.getParentFile(), newName); + + if (newFile.exists()) { + newFile.delete(); + } + if (file.renameTo(newFile)) { + System.out.println("宸茬鐢: " + name + ", 鏂板悕绉: " + newFile.getName()); + } else { + System.out.println("鏃犳硶绂佺敤: " + name); + } + } } private static void restoreModsByType(String paramString) { System.out.println("杩樺師琚鐢ㄧ殑鏂囦欢: " + paramString); File[] files = new File(Utilities.getGameDir(), paramString).listFiles(); - if (files == null) { - return; - } - for (int i = 0; i < files.length; i++) { - File file = files[i]; - if (file.isDirectory()) { - continue; - } - String name = file.getName(); - String lowName = name.toLowerCase(); - if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) { - continue; - } - String newName = name.substring(0, name.length() - 1); - - File newFile = new File(file.getParentFile(), newName); - if (newFile.exists()) { - file.delete(); - } else { - if (!file.renameTo(newFile)) { - System.out.println("鏃犳硶閲嶅懡鍚: " + file.getName() + " 鍒: " + newFile.getName() + " 鍦: " + file.getParent()); - } - } - } + if (files == null) return; + for (File file : files) if (!file.isDirectory()) { + String name = file.getName(); + String lowName = name.toLowerCase(); + if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) { + continue; + } + String newName = name.substring(0, name.length() - 1); + + File newFile = new File(file.getParentFile(), newName); + if (newFile.exists()) { + file.delete(); + } else { + if (!file.renameTo(newFile)) { + System.out.println("鏃犳硶閲嶅懡鍚: " + file.getName() + " 鍒: " + newFile.getName() + " 鍦: " + file.getParent()); + } + } + } } static void restoreMods() { @@ -360,18 +332,16 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre } else { s = new String[0]; } - Pair p = new Pair(playerNumber, s); + Pair p = new Pair<>(playerNumber, s); isGettingPlayerNumber = 0; - gettingPlayerNumber.onDone(p); + gettingPlayerNumber.accept(p); return; } if (isDone == false) { Pattern p = Pattern.compile("\\[INFO\\] Done \\([0-9]*\\.[0-9]*s\\)! For help, type \"help\" or \"\\?\""); Matcher m = p.matcher(status); if (m.find()) { - for (DoneListener0 d : listenersDone) { - d.onDone(); - } + stoppedEvent.execute(null); timer = new Timer(); timerTasks.clear(); for (int i = 0; i < schedules.size(); i++) { @@ -379,9 +349,7 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre ScheduleTranslator.translate(this, schedules.get(i)).run(); continue; } - if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) { - continue; - } + if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) continue; long mill = (long) Math.floor(schedules.get(i).per * 60 * 1000); timerTasks.add(ScheduleTranslator.translate(this, schedules.get(i))); timer.schedule(timerTasks.get(i), mill, mill); @@ -395,11 +363,7 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre } if (status.length() > 20) { if (status.substring(20).contains("[SEVERE] This crash report has been saved to: ")) { - for (int i = 0; i < schedules.size(); i++) { - if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_CRASHED) { - ScheduleTranslator.translate(this, schedules.get(i)).run(); - } - } + for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_CRASHED) ScheduleTranslator.translate(this, schedule).run(); } } } @@ -409,23 +373,15 @@ public class Server implements DoneListener1, MonitorThread.MonitorThre @Override public void actionPerformed(ActionEvent e) { c.setTime(new Date()); - if (c.get(Calendar.SECOND) != 0) { - return; - } + if (c.get(Calendar.SECOND) != 0) return; int minute = c.get(Calendar.MINUTE); - for (int i = 0; i < schedules.size(); i++) { - if (schedules.get(i).timeType != Schedule.TIME_TYPE_PAST_HOUR) { - continue; - } - if (schedules.get(i).per == minute) { - ScheduleTranslator.translate(this, schedules.get(i)).run(); - } - } + for (Schedule schedule : schedules) { + if (schedule.timeType != Schedule.TIME_TYPE_PAST_HOUR) continue; + if (schedule.per == minute) ScheduleTranslator.translate(this, schedule).run(); + } } private void sendStatus(String status) { - for (MonitorThread.MonitorThreadListener l : listeners) { - l.onStatus(status); - } + for (MonitorThread.MonitorThreadListener l : listeners) l.onStatus(status); } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java index 5342f5c28..443aca8f7 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/WaitForThread.java @@ -4,10 +4,9 @@ */ package org.jackhuang.hellominecraft.svrmgr.threads; -import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; -import org.jackhuang.hellominecraft.DoneListener1; +import org.jackhuang.hellominecraft.utils.EventHandler; /** * @@ -15,30 +14,21 @@ import org.jackhuang.hellominecraft.DoneListener1; */ public class WaitForThread extends Thread { - public ArrayList> al; + public final EventHandler event = new EventHandler<>(this); Process p; public WaitForThread(Process p) { this.p = p; - al = new ArrayList>(); - } - - public void addListener(DoneListener1 dl) { - al.add(dl); } @Override public void run() { try { int exitCode = p.waitFor(); - for(DoneListener1 dl : al) - if(dl != null) - dl.onDone(exitCode); + event.execute(exitCode); } catch (InterruptedException ex) { Logger.getLogger(WaitForThread.class.getName()).log(Level.SEVERE, null, ex); - for(DoneListener1 dl : al) - if(dl != null) - dl.onDone(-1); + event.execute(-1); } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java index 122f3c040..464206197 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IPGet.java @@ -8,9 +8,9 @@ package org.jackhuang.hellominecraft.svrmgr.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.jackhuang.hellominecraft.DoneListener1; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.utils.NetUtils; +import org.jackhuang.hellominecraft.utils.functions.Consumer; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; @@ -21,7 +21,7 @@ import org.jsoup.select.Elements; */ public class IPGet extends Thread { - public DoneListener1 dl; + public Consumer dl; @Override public void run() { @@ -37,11 +37,11 @@ public class IPGet extends Thread { while(m.find()) { s += m.group() + ","; } - dl.onDone(s.substring(0, s.length()-1)); + dl.accept(s.substring(0, s.length()-1)); } } catch (Exception ex) { HMCLog.warn("Failed to get ip from ip138.", ex); - dl.onDone("鑾峰彇澶辫触"); + dl.accept("鑾峰彇澶辫触"); } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java index 44ad12c90..8128c650d 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -34,8 +34,6 @@ import javax.swing.JPopupMenu; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel; import org.jackhuang.hellominecraft.C; -import org.jackhuang.hellominecraft.utils.functions.DoneListener0; -import org.jackhuang.hellominecraft.DoneListener1; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.tasks.Task; import org.jackhuang.hellominecraft.tasks.TaskWindow; @@ -48,7 +46,6 @@ import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.svrmgr.utils.ModType; import org.jackhuang.hellominecraft.svrmgr.utils.MonitorInfoBean; import org.jackhuang.hellominecraft.svrmgr.utils.MonitorServiceImpl; -import org.jackhuang.hellominecraft.utils.Pair; import org.jackhuang.hellominecraft.version.MinecraftRemoteVersions; import org.jackhuang.hellominecraft.svrmgr.Main; import org.jackhuang.hellominecraft.svrmgr.cbplugins.BukkitPlugin; @@ -78,13 +75,14 @@ import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; import org.jackhuang.hellominecraft.utils.SwingUtils; import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion; import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; +import org.jackhuang.hellominecraft.utils.Event; /** * * @author hyh */ public final class MainWindow extends javax.swing.JFrame - implements MonitorThread.MonitorThreadListener, DoneListener1 { + implements MonitorThread.MonitorThreadListener, Event { ImageIcon background = new ImageIcon(getClass().getResource("/background.jpg")); JLabel backgroundLabel; @@ -144,11 +142,10 @@ public final class MainWindow extends javax.swing.JFrame setTitle(Main.makeTitle()); String mainjar = SettingsManager.settings.mainjar; - if (!Utilities.isEmpty(mainjar)) { + if (!Utilities.isEmpty(mainjar)) ServerProperties.init(new File(mainjar).getParent()); - } txtMainJar.setText(mainjar); - commandSet = new ArrayList(); + commandSet = new ArrayList<>(); btnStop.setEnabled(false); btnShutdown.setEnabled(false); btnCommand.setEnabled(false); @@ -480,9 +477,8 @@ public final class MainWindow extends javax.swing.JFrame public void actionPerformed(ActionEvent e) { InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"鐜╁", "鐗╁搧ID", "鏁伴噺"}); id.setVisible(true); - if (id.result != null) { + if (id.result != null) Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]); - } } }); ppmBasically.add(itm); @@ -2896,23 +2892,21 @@ public final class MainWindow extends javax.swing.JFrame void loadFromServerProperties() { ServerProperties sp = ServerProperties.getInstance(); - if (sp == null) { + if (sp == null) return; - } txtServerPort.setValue(sp.getPropertyInt("server-port", 25565)); txtServerName.setText(sp.getProperty("server-name")); cboGameMode.setSelectedIndex(sp.getPropertyInt("gamemode", 0)); cboDifficulty.setSelectedIndex(sp.getPropertyInt("difficulty", 1)); String wt = sp.getProperty("level-type"); - if (wt.equals("LARGEBIOMES")) { + if (wt.equals("LARGEBIOMES")) cboWorldType.setSelectedIndex(2); - } else if (wt.equals("FLAT")) { + else if (wt.equals("FLAT")) cboWorldType.setSelectedIndex(1); - } else if (wt.equals("DEFAULT")) { + else if (wt.equals("DEFAULT")) cboWorldType.setSelectedIndex(0); - } else { + else cboWorldType.setSelectedIndex(0); - } txtMaxPlayer.setValue(sp.getPropertyInt("max-players", 20)); chkAllowFlight.setSelected(sp.getPropertyBoolean("allow-flight", false)); chkAllowNether.setSelected(sp.getPropertyBoolean("allow-nether", true)); @@ -2932,82 +2926,64 @@ public final class MainWindow extends javax.swing.JFrame void loadFromOPs() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) { - return; - } + if (!mainjar.exists()) return; File folder = mainjar.getParentFile(); op = new Op(); op.initByBoth(new File(folder, "ops.txt"), new File(folder, "ops.json")); - for (Op.Operator ss : op.op) { - lstOPModel.addElement(ss.name); - } + for (Op.Operator ss : op.op) lstOPModel.addElement(ss.name); lstOP.setModel(lstOPModel); } void loadFromWhiteList() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) { - return; - } + if (!mainjar.exists()) return; File folder = mainjar.getParentFile(); whitelist = new WhiteList(); whitelist.initByBoth(new File(folder, "white-list.txt"), new File(folder, "white-list.json")); - for (WhiteList.WhiteListPlayer ss : whitelist.op) { - lstWhiteListModel.addElement(ss.name); - } + for (WhiteList.WhiteListPlayer ss : whitelist.op) lstWhiteListModel.addElement(ss.name); lstWhiteList.setModel(lstWhiteListModel); } void loadFromBannedPlayers() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) { - return; - } + if (!mainjar.exists()) return; File folder = mainjar.getParentFile(); banned = new BannedPlayers(); banned.initByBoth(new File(folder, "banned-players.txt"), new File(folder, "banned-players.json")); - for (BannedPlayers.BannedPlayer ss : banned.op) { + for (BannedPlayers.BannedPlayer ss : banned.op) lstBannedModel.addElement(ss.name); - } lstBanned.setModel(lstBannedModel); } void loadLocalMods() { String path = Utilities.getPath("mods"); - if (path == null) { - return; - } + if (path == null) return; ArrayList sl = Utilities.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } - for (String s : sl) { + for (String s : sl) model.addRow(new Object[]{!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); - } lstExternalMods.updateUI(); } void loadLocalPlugins() { String path = Utilities.getPath("plugins"); - if (path == null) { + if (path == null) return; - } ArrayList sl = Utilities.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } for (String s : sl) { PluginInformation p = PluginManager.getPluginYML(new File(Utilities.getGameDir() + "plugins" + File.separator + s)); - if (p == null) { + if (p == null) model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, "", "", "", ""}); - } else { + else model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, p.name, p.version, p.author, p.description}); - } } lstPlugins.updateUI(); @@ -3015,17 +2991,14 @@ public final class MainWindow extends javax.swing.JFrame void loadLocalCoreMods() { String path = Utilities.getPath("coremods"); - if (path == null) { + if (path == null) return; - } ArrayList sl = Utilities.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } - for (String s : sl) { + for (String s : sl) model.addRow(new Object[]{!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); - } lstCoreMods.updateUI(); } @@ -3033,14 +3006,12 @@ public final class MainWindow extends javax.swing.JFrame void loadWorlds() { ArrayList s = BackupManager.findAllWorlds(); DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel(); - if (SettingsManager.settings.inactiveWorlds == null) { - SettingsManager.settings.inactiveWorlds = new ArrayList(); - } - for (String world : s) { + if (SettingsManager.settings.inactiveWorlds == null) + SettingsManager.settings.inactiveWorlds = new ArrayList<>(); + for (String world : s) model.addRow(new Object[]{ world, Utilities.getGameDir() + world, !SettingsManager.settings.inactiveWorlds.contains(world) }); - } lstWorlds.updateUI(); } @@ -3057,13 +3028,11 @@ public final class MainWindow extends javax.swing.JFrame } void loadSchedules() { - if (SettingsManager.settings.schedules == null) { - SettingsManager.settings.schedules = new ArrayList(); - } + if (SettingsManager.settings.schedules == null) + SettingsManager.settings.schedules = new ArrayList<>(); DefaultTableModel model = (DefaultTableModel) lstSchedules.getModel(); - for (Schedule s : SettingsManager.settings.schedules) { + for (Schedule s : SettingsManager.settings.schedules) model.addRow(ScheduleTranslator.getRow(s)); - } lstSchedules.updateUI(); } @@ -3073,67 +3042,46 @@ public final class MainWindow extends javax.swing.JFrame void loadBukkits() { int idx = cboBukkitType.getSelectedIndex(); - if (idx == -1) { - return; - } - String url = null; + if (idx == -1) return; if (idx == 1) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/beta/", - new DoneListener1>() { - @Override - public void onDone(List value) { - craftBukkitBeta = value; - reloadBukkitList(); - } + "http://dl.bukkit.org/downloads/craftbukkit/list/beta/", value -> { + craftBukkitBeta = value; + reloadBukkitList(); }); thread.start(); } else if (idx == 0) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/rb/", - new DoneListener1>() { - @Override - public void onDone(List value) { - craftBukkitRecommended = value; - reloadBukkitList(); - } + "http://dl.bukkit.org/downloads/craftbukkit/list/rb/", value -> { + craftBukkitRecommended = value; + reloadBukkitList(); }); thread.start(); } else if (idx == 2) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/dev/", - new DoneListener1>() { - @Override - public void onDone(List value) { - craftBukkitDev = value; - reloadBukkitList(); - } + "http://dl.bukkit.org/downloads/craftbukkit/list/dev/", value -> { + craftBukkitDev = value; + reloadBukkitList(); }); thread.start(); } } void loadMCPCs() { - ForgeFormatThread thread = new ForgeFormatThread( - new DoneListener1>>() { - @Override - public void onDone(Map> value) { - mcpcPackages = value; - reloadMCPCList(); - } - }); + ForgeFormatThread thread = new ForgeFormatThread(value -> { + mcpcPackages = value; + reloadMCPCList(); + }); thread.start(); } public void reloadMCPCList() { - if (mcpcPackages == null) { + if (mcpcPackages == null) return; - } int cnt = cboCauldronMinecraft.getItemCount(); cboCauldronMinecraft.removeAllItems(); - for (String s : mcpcPackages.keySet()) { + for (String s : mcpcPackages.keySet()) cboCauldronMinecraft.addItem(s); - } String mcver = (String) cboCauldronMinecraft.getSelectedItem(); useMCPCVersions(mcver); @@ -3141,9 +3089,8 @@ public final class MainWindow extends javax.swing.JFrame public void useMCPCVersions(String ver) { DefaultTableModel model = (DefaultTableModel) lstMCPC.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } for (ForgeVersion v : mcpcPackages.get(ver)) { Object[] row = new Object[]{ v.mcver, v.ver, v.releasetime @@ -3155,26 +3102,22 @@ public final class MainWindow extends javax.swing.JFrame public void reloadBukkitList() { int idx = cboBukkitType.getSelectedIndex(); - if (idx == -1) { + if (idx == -1) return; - } - if (idx == 1) { + if (idx == 1) useBukkitVersions(craftBukkitBeta); - } else if (idx == 0) { + else if (idx == 0) useBukkitVersions(craftBukkitRecommended); - } else if (idx == 2) { + else if (idx == 2) useBukkitVersions(craftBukkitDev); - } } public void useBukkitVersions(List list) { - if (list == null) { + if (list == null) return; - } DefaultTableModel model = (DefaultTableModel) lstCraftbukkit.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } for (BukkitVersion v : list) { Object[] row = new Object[]{ v.buildNumber, v.version @@ -3229,54 +3172,42 @@ public final class MainWindow extends javax.swing.JFrame void refreshInfos() { ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM")); DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); - for (String s : al) { + for (String s : al) model.addRow(new Object[]{s, Utilities.trimExtension(s)}); - } lstInfos.updateUI(); } void refreshReports() { ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "crash-reports")); - for (String s : al) { - lstCrashReportsModel.addElement(s); - } + for (String s : al) lstCrashReportsModel.addElement(s); lstReports.setModel(lstCrashReportsModel); } void getIP() { IPGet get = new IPGet(); - get.dl = new DoneListener1() { - - @Override - public void onDone(String value) { - lblIPAddress.setText("IP: " + value); - } - }; + get.dl = a -> lblIPAddress.setText("IP: " + a);; get.start(); } void loadBukkitPlugins() { final DefaultTableModel model = (DefaultTableModel) lstBukkitPlugins.getModel(); - while (model.getRowCount() > 0) { + while (model.getRowCount() > 0) model.removeRow(0); - } lstBukkitPlugins.updateUI(); Thread t = new Thread() { @Override public void run() { try { List l; - if (cboCategory.getSelectedIndex() == 0) { + if (cboCategory.getSelectedIndex() == 0) l = PluginManager.getPlugins(); - } else { + else l = PluginManager.getPluginsByCategory(cboCategory.getSelectedItem().toString()); - } plugins = l; - for (BukkitPlugin p : l) { + for (BukkitPlugin p : l) model.addRow(new Object[]{ p.plugin_name, p.description, p.getLatestVersion(), p.getLatestBukkit() }); - } lstBukkitPlugins.updateUI(); } catch (Exception ex) { HMCLog.warn("Failed to get plugins", ex); @@ -3294,9 +3225,8 @@ public final class MainWindow extends javax.swing.JFrame List l = PluginManager.getCategories(); cboCategory.removeAllItems(); cboCategory.addItem("鎵鏈"); - for (Category c : l) { + for (Category c : l) cboCategory.addItem(c.name); - } } catch (Exception ex) { HMCLog.warn("Failed to load bukkit categories."); } @@ -3320,41 +3250,36 @@ public final class MainWindow extends javax.swing.JFrame void loadPlayers() { Server s = Server.getInstance(); - if (s != null && s.isRunning) { - s.getPlayerNumber(new DoneListener1>() { - @Override - public void onDone(Pair t) { - lblPlayers.setText("鍦ㄧ嚎浜烘暟" + t.key); - lstPlayersModel.clear(); - for (String s : t.value) { - lstPlayersModel.addElement(s); - } - lstPlayers.setModel(lstPlayersModel); - } + if (s != null && s.isRunning) + s.getPlayerNumber(t -> { + lblPlayers.setText("鍦ㄧ嚎浜烘暟" + t.key); + lstPlayersModel.clear(); + for (String s1 : t.value) lstPlayersModel.addElement(s1); + lstPlayers.setModel(lstPlayersModel); }); - } else { + else MessageBox.Show("鏈嶅姟鍣ㄦ湭寮鍚紒"); - } } - class ServerBeginListener implements DoneListener0 { + class ServerBeginListener implements Event { @Override - public void onDone() { - commandSet = new ArrayList(); + public boolean call(Object sender, Void v) { + commandSet = new ArrayList<>(); txtMain.setText(""); btnLaunch.setEnabled(false); btnStop.setEnabled(true); btnShutdown.setEnabled(true); btnCommand.setEnabled(true); + return true; } } - class ServerDoneListener implements DoneListener0 { + class ServerDoneListener implements Event { @Override - public void onDone() { + public boolean call(Object sender, Void v) { getPlayerNumberTimer = new Timer(); getPlayerNumberTimer.schedule(new TimerTask() { @@ -3363,6 +3288,7 @@ public final class MainWindow extends javax.swing.JFrame loadPlayers(); } }, 1000 * 60 * 10, 1000 * 60 * 10); + return true; } } @@ -3372,40 +3298,35 @@ public final class MainWindow extends javax.swing.JFrame if (!eula.exists()) { int option = JOptionPane.showConfirmDialog(null, "鎮ㄦ槸鍚︾‘璁ゆ柊鐨凟ULA(https://account.mojang.com/documents/minecraft_eula)锛熷鏋滄嫆缁濅細瀵艰嚧鏃犳硶鍚姩Minecraft 1.7.10鎴栨洿楂樼増鏈殑鏈嶅姟绔"); try { - if (option == JOptionPane.YES_OPTION) { + if (option == JOptionPane.YES_OPTION) FileUtils.write(eula, "eula=true"); - } else if (option == JOptionPane.NO_OPTION) { + else if (option == JOptionPane.NO_OPTION) FileUtils.write(eula, "eula=false"); - } } catch (IOException e) { MessageBox.Show("纭rula澶辫触"); } } File serverproperties = new File(new File(SettingsManager.settings.mainjar).getParentFile(), "server.properties"); - if (!serverproperties.exists()) { + if (!serverproperties.exists()) try { FileUtils.write(serverproperties, ServerProperties.getDefault()); } catch (IOException ex) { HMCLog.warn("Failed to save server.properties", ex); } - } Server.init(SettingsManager.settings.mainjar, String.valueOf(SettingsManager.settings.maxMemory)); Server.getInstance() .addListener((MonitorThread.MonitorThreadListener) this); Server.getInstance() - .addListener((DoneListener1) this); + .addListener((Event) this); Server.getInstance() .clearSchedule(); - for (Schedule s : SettingsManager.settings.schedules) { + for (Schedule s : SettingsManager.settings.schedules) Server.getInstance().addSchedule(s); - } - Server.getInstance() - .addServerStartedListener(new ServerBeginListener()); - Server.getInstance() - .addServerDoneListener(new ServerDoneListener()); + Server.getInstance().startedEvent.register(new ServerBeginListener()); + Server.getInstance().startedEvent.register(new ServerDoneListener()); try { Server.getInstance().run(); } catch (IOException ex) { @@ -3434,18 +3355,15 @@ public final class MainWindow extends javax.swing.JFrame } else if (evt.getKeyCode() == KeyEvent.VK_DOWN) { newCommandIndex++; type = 1; - } else if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + } else if (evt.getKeyCode() == KeyEvent.VK_ENTER) type = 2; - } if (type == 1) { - if (outOfCommandSet(newCommandIndex)) { + if (outOfCommandSet(newCommandIndex)) return; - } commandIndex = newCommandIndex; txtCommand.setText(commandSet.get(commandIndex)); - } else if (type == 2) { + } else if (type == 2) sendCommand(); - } }//GEN-LAST:event_txtCommandKeyPressed private void btnSendCommandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSendCommandActionPerformed @@ -3530,13 +3448,12 @@ public final class MainWindow extends javax.swing.JFrame private void cboWorldTypeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboWorldTypeItemStateChanged int OAO = cboWorldType.getSelectedIndex(); String type = "DEFAULT"; - if (OAO == 0) { + if (OAO == 0) type = "DEFAULT"; - } else if (OAO == 1) { + else if (OAO == 1) type = "FLAT"; - } else if (OAO == 2) { + else if (OAO == 2) type = "LARGEBIMOES"; - } ServerProperties.getInstance().setLevelType(type); }//GEN-LAST:event_cboWorldTypeItemStateChanged @@ -3560,9 +3477,9 @@ public final class MainWindow extends javax.swing.JFrame lstOPModel.addElement(txtOPName.getText()); lstOP.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("op " + txtOPName.getText()); - } else { + else { Op.Operator operator = new Op.Operator(txtOPName.getText()); op.op.add(operator); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3580,9 +3497,9 @@ public final class MainWindow extends javax.swing.JFrame lstOPModel.removeElement(lstOP.getSelectedIndex()); lstOP.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("deop " + txtOPName.getText()); - } else { + else { Op.Operator operator = new Op.Operator(s); op.op.remove(operator); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3599,9 +3516,9 @@ public final class MainWindow extends javax.swing.JFrame lstWhiteListModel.addElement(txtWhiteName.getText()); lstWhiteList.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("whitelist add " + txtWhiteName.getText()); - } else { + else { WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(txtWhiteName.getText()); whitelist.op.add(player); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3619,9 +3536,9 @@ public final class MainWindow extends javax.swing.JFrame lstWhiteListModel.removeElement(lstWhiteList.getSelectedIndex()); lstWhiteList.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("whitelist remove " + txtWhiteName.getText()); - } else { + else { WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(name); whitelist.op.remove(player); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3773,22 +3690,20 @@ public final class MainWindow extends javax.swing.JFrame Vector strings = ((DefaultTableModel) lstExternalMods.getModel()).getDataVector(); for (Object s : strings) { Vector v = (Vector) s; - if (!(Boolean) v.elementAt(0)) { + if (!(Boolean) v.elementAt(0)) arrayList.add((String) v.elementAt(1)); - } } SettingsManager.settings.inactiveExtMods = arrayList; SettingsManager.save(); }//GEN-LAST:event_btnSaveExtModActionPerformed private void btnSavePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSavePluginsActionPerformed - ArrayList arrayList = new ArrayList(); + ArrayList arrayList = new ArrayList<>(); Vector strings = ((DefaultTableModel) lstCoreMods.getModel()).getDataVector(); for (Object s : strings) { Vector v = (Vector) s; - if (!(Boolean) v.elementAt(0)) { + if (!(Boolean) v.elementAt(0)) arrayList.add((String) v.elementAt(1)); - } } SettingsManager.settings.inactiveCoreMods = arrayList; SettingsManager.save(); @@ -3798,9 +3713,9 @@ public final class MainWindow extends javax.swing.JFrame lstBannedModel.addElement(txtBanName.getText()); lstBanned.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("ban " + txtBanName.getText()); - } else { + else { BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(txtBanName.getText()); banned.op.add(player); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3818,9 +3733,9 @@ public final class MainWindow extends javax.swing.JFrame lstBannedModel.removeElement(lstBanned.getSelectedIndex()); lstBanned.updateUI(); - if (Server.isInstanceRunning()) { + if (Server.isInstanceRunning()) Server.getInstance().sendCommand("pardon " + txtBanName.getText()); - } else { + else { BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(s); banned.op.remove(player); File dir = new File(SettingsManager.settings.mainjar).getParentFile(); @@ -3905,12 +3820,10 @@ public final class MainWindow extends javax.swing.JFrame private void btnSaveWorldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveWorldActionPerformed DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel(); - SettingsManager.settings.inactiveWorlds = new ArrayList(); - for (int i = 0; i < model.getRowCount(); i++) { - if ((Boolean) model.getValueAt(i, 2) == false) { + SettingsManager.settings.inactiveWorlds = new ArrayList<>(); + for (int i = 0; i < model.getRowCount(); i++) + if ((Boolean) model.getValueAt(i, 2) == false) SettingsManager.settings.inactiveWorlds.add((String) model.getValueAt(i, 0)); - } - } SettingsManager.save(); }//GEN-LAST:event_btnSaveWorldActionPerformed @@ -3931,9 +3844,8 @@ public final class MainWindow extends javax.swing.JFrame private void btnDeleteBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteBackupActionPerformed int index = lstBackups.getSelectedRow(); - if (index == -1) { + if (index == -1) return; - } DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); Utilities.deleteAll(new File(BackupManager.backupDir() + model.getValueAt(index, 0) + "+" @@ -3944,9 +3856,8 @@ public final class MainWindow extends javax.swing.JFrame private void btnRestoreBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestoreBackupActionPerformed int index = lstBackups.getSelectedRow(); - if (index == -1) { + if (index == -1) return; - } DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); BackupManager.restoreBackup(BackupManager.backupDir() + model.getValueAt(index, 0) + "+" @@ -3977,9 +3888,8 @@ public final class MainWindow extends javax.swing.JFrame try { DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); int index = lstInfos.getSelectedRow(); - if (index == -1) { + if (index == -1) return; - } String path = Utilities.getGameDir() + "infos-HMCSM" + File.separator + model.getValueAt(index, 0); String content = FileUtils.readFileToString(new File(path)); txtInfo.setText(content); @@ -3990,14 +3900,13 @@ public final class MainWindow extends javax.swing.JFrame private void btnAutoSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAutoSearchActionPerformed ArrayList al = Utilities.findAllFile(IOUtils.currentDir()); - for (String s : al) { + for (String s : al) if (ServerChecker.isServerJar(new File(s))) { String path = IOUtils.tryGetCanonicalFilePath(new File(IOUtils.currentDir(), s)); txtMainJar.setText(path); SettingsManager.settings.mainjar = path; SettingsManager.save(); } - } }//GEN-LAST:event_btnAutoSearchActionPerformed private void cboCategoryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCategoryItemStateChanged @@ -4007,9 +3916,8 @@ public final class MainWindow extends javax.swing.JFrame private void btnShowPluginInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowPluginInfoActionPerformed try { int index = lstBukkitPlugins.getSelectedRow(); - if (index == -1) { + if (index == -1) return; - } PluginInfo pi = PluginManager.getPluginInfo(plugins.get(index).slug); PluginInfoDialog w = new PluginInfoDialog(this, true, pi); w.setVisible(true); @@ -4025,9 +3933,8 @@ public final class MainWindow extends javax.swing.JFrame private void btnShowReportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowReportActionPerformed try { int index = lstReports.getSelectedIndex(); - if (index == -1) { + if (index == -1) return; - } String path = Utilities.getGameDir() + "crash-reports" + File.separator + lstCrashReportsModel.get(index); String content = FileUtils.readFileToString(new File(path)); txtCrashReport.setText(content); @@ -4083,15 +3990,13 @@ public final class MainWindow extends javax.swing.JFrame private void btnDownloadCraftbukkitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadCraftbukkitActionPerformed int idx = lstCraftbukkit.getSelectedRow(); - if (idx == -1) { + if (idx == -1) return; - } String ext = ""; List cb = null; int idx2 = cboBukkitType.getSelectedIndex(); - if (idx2 == -1) { + if (idx2 == -1) return; - } switch (idx2) { case 0: ext = "rb"; @@ -4101,6 +4006,8 @@ public final class MainWindow extends javax.swing.JFrame ext = "beta"; cb = craftBukkitBeta; break; + default: + return; } BukkitVersion v = cb.get(idx); File file = new File(IOUtils.currentDir(), "craftbukkit-" + ext + "-" + v.version + ".jar"); @@ -4110,18 +4017,16 @@ public final class MainWindow extends javax.swing.JFrame private void btnDownloadMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadMCPCActionPerformed int idx = lstMCPC.getSelectedRow(); - if (idx == -1) { + if (idx == -1) return; - } ForgeVersion v = mcpcPackages.get(cboCauldronMinecraft.getSelectedItem().toString()).get(idx); String url; File filepath = new File(IOUtils.currentDir(), "forge-installer.jar"); url = v.installer[1]; - if (!TaskWindow.getInstance().addTask(new FileDownloadTask(url, filepath).setTag("cauldron-" + v.ver)).start()) { + if (!TaskWindow.getInstance().addTask(new FileDownloadTask(url, filepath).setTag("cauldron-" + v.ver)).start()) MessageBox.Show(C.I18N.getString("install.failed_download_forge")); - } else { + else installMCPC(filepath); - } }//GEN-LAST:event_btnDownloadMCPCActionPerformed private void installMCPC(final File filepath) { @@ -4144,18 +4049,16 @@ public final class MainWindow extends javax.swing.JFrame Vector strings = ((DefaultTableModel) lstPlugins.getModel()).getDataVector(); for (Object s : strings) { Vector v = (Vector) s; - if (!(Boolean) v.elementAt(0)) { + if (!(Boolean) v.elementAt(0)) arrayList.add((String) v.elementAt(1)); - } } SettingsManager.settings.inactivePlugins = arrayList; SettingsManager.save(); }//GEN-LAST:event_btnSaveCoreModActionPerformed private void cboCauldronMinecraftItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCauldronMinecraftItemStateChanged - if (cboCauldronMinecraft.getItemCount() > 0 && mcpcPackages != null && mcpcPackages.containsKey(cboCauldronMinecraft.getSelectedItem().toString())) { + if (cboCauldronMinecraft.getItemCount() > 0 && mcpcPackages != null && mcpcPackages.containsKey(cboCauldronMinecraft.getSelectedItem().toString())) useMCPCVersions(cboCauldronMinecraft.getSelectedItem().toString()); - } }//GEN-LAST:event_cboCauldronMinecraftItemStateChanged private void btnInstallMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInstallMCPCActionPerformed @@ -4177,9 +4080,8 @@ public final class MainWindow extends javax.swing.JFrame }//GEN-LAST:event_jButton11ActionPerformed private void btnCommandMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCommandMouseClicked - if (Server.getInstance() == null || !Server.getInstance().isRunning || !btnCommand.isEnabled()) { + if (Server.getInstance() == null || !Server.getInstance().isRunning || !btnCommand.isEnabled()) return; - } ppmBasically.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y); }//GEN-LAST:event_btnCommandMouseClicked @@ -4192,9 +4094,8 @@ public final class MainWindow extends javax.swing.JFrame }//GEN-LAST:event_formWindowClosed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing - if (Server.getInstance() != null && Server.getInstance().isRunning) { + if (Server.getInstance() != null && Server.getInstance().isRunning) Server.getInstance().stop(); - } }//GEN-LAST:event_formWindowClosing private void txtMaxMemoryFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxMemoryFocusLost @@ -4212,7 +4113,7 @@ public final class MainWindow extends javax.swing.JFrame } @Override - public void onDone(Integer t) { + public boolean call(Object sender, Integer t) { btnLaunch.setEnabled(true); btnStop.setEnabled(false); btnShutdown.setEnabled(false); @@ -4229,30 +4130,28 @@ public final class MainWindow extends javax.swing.JFrame getPlayerNumberTimer.cancel(); getPlayerNumberTimer = null; } + return true; } private void sendCommand() { String command = txtCommand.getText(); boolean append = false; - if (outOfCommandSet()) { + if (outOfCommandSet()) append = true; - } else if (!command.equals(commandSet.get(commandIndex))) { + else if (!command.equals(commandSet.get(commandIndex))) append = true; - } - if (Server.getInstance() != null) { + if (Server.getInstance() != null) Server.getInstance().sendCommand(command); - } else { + else System.err.println("Server is null."); - } System.out.println("Send command: " + command); onStatus(">" + command); txtCommand.setText(""); if (append) { commandSet.add(command); commandIndex = commandSet.size(); - } else { + } else commandIndex++; - } } MonitorThread mainThread;