diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 214fff1dc..373f0803f --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,6 @@ hs_err_pid* HMCLAPI/build/ HMCL/build/ +HMCL/src/main/org/jackhuang/hellominecraft/launcher/servers/ HMCSM/build/ MetroLookAndFeel/build/ diff --git a/.gitignore~ b/.gitignore~ new file mode 100755 index 000000000..214fff1dc --- /dev/null +++ b/.gitignore~ @@ -0,0 +1,26 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +.gradle +.nb-gradle + +*.bat +*.log +.mine* +*.json +*.hmd + +HMCLAPI/build/ +HMCL/build/ +HMCSM/build/ +MetroLookAndFeel/build/ diff --git a/.nb-gradle-properties b/.nb-gradle-properties old mode 100644 new mode 100755 diff --git a/HMCL/HMCLauncher.exe b/HMCL/HMCLauncher.exe old mode 100644 new mode 100755 diff --git a/HMCL/build.gradle b/HMCL/build.gradle old mode 100644 new mode 100755 diff --git a/HMCL/icon.ico b/HMCL/icon.ico old mode 100644 new mode 100755 diff --git a/HMCL/obfuscate_2.3.3.map b/HMCL/obfuscate_2.3.3.map old mode 100644 new mode 100755 diff --git a/HMCL/obfuscate_2.3.4.map b/HMCL/obfuscate_2.3.4.map old mode 100644 new mode 100755 diff --git a/HMCL/proguard.pro b/HMCL/proguard.pro old mode 100644 new mode 100755 diff --git a/HMCL/src/main/icon.icns b/HMCL/src/main/icon.icns old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java old mode 100644 new mode 100755 index 59dc7e0f2..1e29a8b0f --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java @@ -33,6 +33,7 @@ import javax.swing.ImageIcon; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.api.PluginManager; import org.jackhuang.hellominecraft.launcher.launch.GameLauncher; import org.jackhuang.hellominecraft.launcher.utils.CrashReporter; import org.jackhuang.hellominecraft.logging.Configuration; @@ -75,7 +76,7 @@ public final class Main implements Runnable { try { sslContext = SSLContext.getInstance("TLS"); - X509TrustManager[] xtmArray = new X509TrustManager[] {XTM}; + X509TrustManager[] xtmArray = new X509TrustManager[]{XTM}; sslContext.init(null, xtmArray, new java.security.SecureRandom()); } catch (GeneralSecurityException gse) { } @@ -86,7 +87,7 @@ public final class Main implements Runnable { } public static final String LAUNCHER_NAME = "Hello Minecraft! Launcher"; - public static final byte VERSION_FIRST = 2, VERSION_SECOND = 3, VERSION_THIRD = 1, VERSION_FORTH = 6; + public static final byte VERSION_FIRST = 2, VERSION_SECOND = 3, VERSION_THIRD = 5, VERSION_FORTH = 7; public static final int MINIMUM_LAUNCHER_VERSION = 16; //public static Proxy PROXY; @@ -109,10 +110,13 @@ public final class Main implements Runnable { } public static final Main INSTANCE = new Main(); + public static HelloMinecraftLookAndFeel LOOK_AND_FEEL; @SuppressWarnings({"CallToPrintStackTrace", "UseSpecificCatch"}) public static void main(String[] args) { { + //PluginManager.getServerPlugin(); + if (IUpgrader.NOW_UPGRADER.parseArguments(new VersionNumber(VERSION_FIRST, VERSION_SECOND, VERSION_THIRD), args)) return; @@ -136,14 +140,15 @@ public final class Main implements Runnable { LogWindow.INSTANCE.setTerminateGame(GameLauncher.PROCESS_MANAGER::stopAllProcesses); try { - UIManager.setLookAndFeel(new HelloMinecraftLookAndFeel()); + LOOK_AND_FEEL = new HelloMinecraftLookAndFeel(Settings.getInstance().getTheme().settings); + UIManager.setLookAndFeel(LOOK_AND_FEEL); } catch (ParseException | UnsupportedLookAndFeelException ex) { HMCLog.warn("Failed to set look and feel...", ex); } Settings.UPDATE_CHECKER.outdated.register(IUpgrader.NOW_UPGRADER); Settings.UPDATE_CHECKER.process(false).subscribeOn(Schedulers.newThread()).subscribe(t - -> Main.invokeUpdate()); + -> Main.invokeUpdate()); if (StrUtils.isNotBlank(Settings.getInstance().getProxyHost()) && StrUtils.isNotBlank(Settings.getInstance().getProxyPort()) && MathUtils.canParseInt(Settings.getInstance().getProxyPort())) { HMCLog.log("Initializing customized proxy"); @@ -159,7 +164,7 @@ public final class Main implements Runnable { } try { - MainFrame.showMainFrame(Settings.isFirstLoading()); + PluginManager.NOW_PLUGIN.showUI(); } catch (Throwable t) { new CrashReporter(false).uncaughtException(Thread.currentThread(), t); System.exit(1); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/IPlugin.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/IPlugin.java new file mode 100755 index 000000000..339ab1661 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/IPlugin.java @@ -0,0 +1,62 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.api; + +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.settings.Profile; +import org.jackhuang.hellominecraft.launcher.utils.auth.AuthenticationException; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author huangyuhui + */ +public interface IPlugin { + + /** + * You can modify the application actions by this method. + * + * @param profile info to the Minecraft Loader + * @return For example, you can implement IMinecraftProvider to support + * MultiMC + */ + IMinecraftProvider provideMinecraftProvider(Profile profile); + + /** + * Register authenticators by calling IAuthenticator.LOGINS.add. + * + * @param apply call apply.accept(your authenticator) + */ + void onRegisterAuthenticators(Consumer apply); + + /** + * Open your customized UI. + */ + void showUI(); + + /** + * Add your server ip or modify the access token. + * + * @param result What you want. + */ + void onProcessingLoginResult(UserProfileProvider result) throws AuthenticationException; + + void onInitializingProfile(Profile p); +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/PluginManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/PluginManager.java new file mode 100755 index 000000000..70a33d36d --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/api/PluginManager.java @@ -0,0 +1,43 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.api; + +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.launch.DefaultPlugin; + +/** + * + * @author huangyuhui + */ +public class PluginManager { + + public static IPlugin NOW_PLUGIN = new DefaultPlugin(); + + public static void getServerPlugin() { + try { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + Class c = cl.loadClass("org.jackhuang.hellominecraft.launcher.servers.ServerPlugin"); + IPlugin p = (IPlugin) c.newInstance(); + NOW_PLUGIN = p; + } catch (ClassNotFoundException ignore) { + } catch (Exception e) { + HMCLog.err("Failed to new instance"); + } + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultPlugin.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultPlugin.java new file mode 100755 index 000000000..b22b4bfc4 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultPlugin.java @@ -0,0 +1,77 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.launch; + +import org.jackhuang.hellominecraft.launcher.api.IPlugin; +import org.jackhuang.hellominecraft.launcher.settings.Profile; +import org.jackhuang.hellominecraft.launcher.settings.Settings; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.OfflineAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.SkinmeAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.auth.YggdrasilAuthenticator; +import org.jackhuang.hellominecraft.launcher.version.MinecraftVersionManager; +import org.jackhuang.hellominecraft.launcher.views.MainFrame; +import org.jackhuang.hellominecraft.utils.functions.Consumer; + +/** + * + * @author huangyuhui + */ +public class DefaultPlugin implements IPlugin { + + protected static YggdrasilAuthenticator YGGDRASIL_LOGIN; + protected static OfflineAuthenticator OFFLINE_LOGIN; + protected static SkinmeAuthenticator SKINME_LOGIN; + + @Override + public IMinecraftProvider provideMinecraftProvider(Profile profile) { + return new MinecraftVersionManager(profile); + } + + @Override + public void onRegisterAuthenticators(Consumer apply) { + String clientToken = Settings.getInstance().getClientToken(); + OFFLINE_LOGIN = new OfflineAuthenticator(clientToken); + YGGDRASIL_LOGIN = new YggdrasilAuthenticator(clientToken); + YGGDRASIL_LOGIN.onLoadSettings(Settings.getInstance().getYggdrasilConfig()); + SKINME_LOGIN = new SkinmeAuthenticator(clientToken); + + Runtime.getRuntime().addShutdownHook(new Thread(() + -> Settings.getInstance().setYggdrasilConfig(YGGDRASIL_LOGIN.onSaveSettings()) + )); + apply.accept(OFFLINE_LOGIN); + apply.accept(YGGDRASIL_LOGIN); + apply.accept(SKINME_LOGIN); + } + + @Override + public void showUI() { + MainFrame.showMainFrame(Settings.isFirstLoading()); + } + + @Override + public void onProcessingLoginResult(UserProfileProvider result) { + } + + @Override + public void onInitializingProfile(Profile p) { + + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java old mode 100644 new mode 100755 index d82193678..e241f5044 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -26,6 +26,7 @@ import java.io.UnsupportedEncodingException; import java.util.List; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.api.PluginManager; import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; import org.jackhuang.hellominecraft.launcher.utils.auth.LoginInfo; import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; @@ -73,7 +74,9 @@ public class GameLauncher { result = login.login(info); else result = login.loginBySettings(); - if (result == null) throw new AuthenticationException("Result can not be null."); + if (result == null) + throw new IllegalStateException("Result can not be null."); + PluginManager.NOW_PLUGIN.onProcessingLoginResult(result); } catch (Throwable e) { String error = C.i18n("login.failed") + e.getMessage(); HMCLog.warn("Login failed by method: " + login.getName(), e); @@ -98,7 +101,7 @@ public class GameLauncher { failEvent.execute(C.i18n("launch.failed")); return null; } - + HMCLog.log("Unpacking natives..."); if (!decompressNativesEvent.execute(provider.getDecompressLibraries())) { failEvent.execute(C.i18n("launch.failed")); @@ -115,7 +118,8 @@ public class GameLauncher { */ public void launch(List str) { try { - provider.onLaunch(); + if (!provider.onLaunch()) + return; if (StrUtils.isNotBlank(getProfile().getPrecalledCommand())) { Process p = Runtime.getRuntime().exec(getProfile().getPrecalledCommand()); try { @@ -128,9 +132,9 @@ public class GameLauncher { HMCLog.log("Starting process"); ProcessBuilder builder = new ProcessBuilder(str); if (get == null || get.getSelectedMinecraftVersion() == null || StrUtils.isBlank(get.getCanonicalGameDir())) - throw new NullPointerException("Fucking bug!"); + throw new Error("Fucking bug!"); builder.directory(provider.getRunDirectory(get.getSelectedMinecraftVersion().id)) - .environment().put("APPDATA", get.getCanonicalGameDir()); + .environment().put("APPDATA", get.getCanonicalGameDir()); JavaProcess jp = new JavaProcess(str, builder.start(), PROCESS_MANAGER); launchEvent.execute(jp); } catch (Exception e) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftAssetService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftAssetService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftDownloadService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftDownloadService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftModService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftModService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java old mode 100644 new mode 100755 index dbfebefea..d9ae4e9ff --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -37,7 +37,7 @@ public abstract class IMinecraftProvider { public IMinecraftProvider(Profile profile) { this.profile = profile; } - + /** * To download mod packs. */ @@ -51,15 +51,15 @@ public abstract class IMinecraftProvider { * @return the run directory */ public abstract File getRunDirectory(String id); - + public File getRunDirectory(String id, String subFolder) { return new File(getRunDirectory(getSelectedMinecraftVersion().id), subFolder); } public abstract void open(String version, String folder); - + public abstract IMinecraftModService getModService(); - + public abstract IMinecraftDownloadService getDownloadService(); public abstract IMinecraftAssetService getAssetService(); @@ -89,7 +89,7 @@ public abstract class IMinecraftProvider { * Provide the Minecraft Loader to generate the launching command. * * @see org.jackhuang.hellominecraft.launcher.launch.IMinecraftLoader - * @param p player informations, including username & auth_token + * @param p player informations, including username & auth_token * * @return what you want * @@ -149,7 +149,7 @@ public abstract class IMinecraftProvider { * @return the Minecraft json instance */ public abstract MinecraftVersion getVersionById(String id); - + public MinecraftVersion getSelectedVersion() { return profile.getSelectedMinecraftVersion(); } @@ -181,7 +181,7 @@ public abstract class IMinecraftProvider { * Refind the versions in this profile. */ public abstract void refreshVersions(); - + /** * Clean redundant files. */ @@ -189,7 +189,9 @@ public abstract class IMinecraftProvider { /** * When GameLauncher launches the game, this function will be called. + * + * @return if false, will break the launch process. */ - public abstract void onLaunch(); + public abstract boolean onLaunch(); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftService.java old mode 100644 new mode 100755 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 deleted file mode 100644 index 908851167..000000000 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchFinisher.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Hello Minecraft! Launcher. - * Copyright (C) 2013 huangyuhui - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see {http://www.gnu.org/licenses/}. - */ -package org.jackhuang.hellominecraft.launcher.launch; - -import java.util.List; -import org.jackhuang.hellominecraft.launcher.settings.LauncherVisibility; -import org.jackhuang.hellominecraft.launcher.views.MainFrame; -import org.jackhuang.hellominecraft.utils.Event; -import org.jackhuang.hellominecraft.utils.system.JavaProcessMonitor; -import org.jackhuang.hellominecraft.views.LogWindow; - -/** - * - * @author huangyuhui - */ -public class LaunchFinisher implements Event> { - - @Override - public boolean call(Object sender, List str) { - final GameLauncher obj = (GameLauncher) sender; - obj.launchEvent.register((sender1, p) -> { - if (obj.getProfile().getLauncherVisibility() == LauncherVisibility.CLOSE && !LogWindow.INSTANCE.isVisible()) - System.exit(0); - else if (obj.getProfile().getLauncherVisibility() == LauncherVisibility.KEEP) - MainFrame.INSTANCE.closeMessage(); - else { - if (LogWindow.INSTANCE.isVisible()) - LogWindow.INSTANCE.setExit(() -> true); - MainFrame.INSTANCE.dispose(); - } - JavaProcessMonitor jpm = new JavaProcessMonitor(p); - jpm.stoppedEvent.register((sender3, t) -> { - if (obj.getProfile().getLauncherVisibility() != LauncherVisibility.KEEP && !LogWindow.INSTANCE.isVisible()) - System.exit(0); - return true; - }); - jpm.start(); - return true; - }); - obj.launch(str); - return true; - } -} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java deleted file mode 100644 index 37b0fd2e9..000000000 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Hello Minecraft! Launcher. - * Copyright (C) 2013 huangyuhui - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see {http://www.gnu.org/licenses/}. - */ -package org.jackhuang.hellominecraft.launcher.launch; - -import java.io.IOException; -import java.util.List; -import javax.swing.JOptionPane; -import org.jackhuang.hellominecraft.C; -import org.jackhuang.hellominecraft.HMCLog; -import org.jackhuang.hellominecraft.launcher.views.MainFrame; -import org.jackhuang.hellominecraft.utils.Event; -import org.jackhuang.hellominecraft.utils.MessageBox; - -/** - * - * @author huangyuhui - */ -public class LaunchScriptFinisher implements Event> { - - @Override - public boolean call(Object sender, List str) { - boolean flag = false; - try { - String s = JOptionPane.showInputDialog(C.i18n("mainwindow.enter_script_name")); - if (s != null) - MessageBox.Show(C.i18n("mainwindow.make_launch_succeed") + " " + ((GameLauncher) sender).makeLauncher(s, str).getAbsolutePath()); - flag = true; - } catch (IOException ex) { - MessageBox.Show(C.i18n("mainwindow.make_launch_script_failed")); - HMCLog.err("Failed to create script file.", ex); - } - MainFrame.INSTANCE.closeMessage(); - return flag; - } - -} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/ServerPlugin.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/ServerPlugin.java new file mode 100755 index 000000000..fa372f07a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/ServerPlugin.java @@ -0,0 +1,91 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.servers; + +import org.jackhuang.hellominecraft.launcher.api.IPlugin; +import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.servers.mfcraft.CheckModsMinecraftProvider; +import org.jackhuang.hellominecraft.launcher.servers.mfcraft.MFCraftAuthenticator; +import org.jackhuang.hellominecraft.launcher.servers.mfcraft.Servers; +import org.jackhuang.hellominecraft.launcher.settings.Profile; +import org.jackhuang.hellominecraft.launcher.settings.Settings; +import org.jackhuang.hellominecraft.launcher.utils.auth.AuthenticationException; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.utils.auth.YggdrasilAuthenticator; +import org.jackhuang.hellominecraft.launcher.version.ServerInfo; +import org.jackhuang.hellominecraft.launcher.views.MainFrame; +import org.jackhuang.hellominecraft.launcher.views.ServerListView; +import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.views.Selector; + +/** + * + * @author huangyuhui + */ +public class ServerPlugin implements IPlugin { + + protected static YggdrasilAuthenticator YGGDRASIL_LOGIN; + protected static MFCraftAuthenticator MFCRAFT_LOGIN; + + @Override + public IMinecraftProvider provideMinecraftProvider(Profile profile) { + return new CheckModsMinecraftProvider(profile); + } + + @Override + public void onRegisterAuthenticators(Consumer apply) { + String clientToken = Settings.getInstance().getClientToken(); + MFCRAFT_LOGIN = new MFCraftAuthenticator(clientToken); + YGGDRASIL_LOGIN = new YggdrasilAuthenticator(clientToken); + YGGDRASIL_LOGIN.onLoadSettings(Settings.getInstance().getYggdrasilConfig()); + apply.accept(MFCRAFT_LOGIN); + apply.accept(YGGDRASIL_LOGIN); + } + + @Override + public void showUI() { + MainFrame.showMainFrame(Settings.isFirstLoading()); + } + + public static ServerInfo lastServerInfo; + + @Override + public void onProcessingLoginResult(UserProfileProvider result) throws AuthenticationException { + Servers s = Servers.getInstance(); + String[] sel = new String[s.areas.size()]; + for (int i = 0; i < sel.length; i++) + sel[i] = s.areas.get(i).name; + Selector selector = new Selector(null, sel, "选择你要登录的服务器大区"); + int ind = selector.getChoice(); + for (ServerInfo si : s.areas.get(ind).servers) + si.downloadIcon(); + ServerListView slv = new ServerListView(s.areas.get(ind).servers.toArray(new ServerInfo[0])); + int c = slv.getChoice(); + if (c == -1) + throw new AuthenticationException("未选择服务器"); + lastServerInfo = s.areas.get(ind).servers.get(ind); + result.setServer(lastServerInfo); + } + + @Override + public void onInitializingProfile(Profile p) { + p.initialize(1); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/CheckModsMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/CheckModsMinecraftProvider.java new file mode 100755 index 000000000..d40c417ac --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/CheckModsMinecraftProvider.java @@ -0,0 +1,51 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.servers.mfcraft; + +import java.io.IOException; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.launcher.servers.ServerPlugin; +import org.jackhuang.hellominecraft.launcher.settings.Profile; +import org.jackhuang.hellominecraft.launcher.version.MinecraftModService; +import org.jackhuang.hellominecraft.launcher.version.MinecraftVersionManager; +import org.jackhuang.hellominecraft.utils.ArrayUtils; + +/** + * + * @author huangyuhui + */ +public class CheckModsMinecraftProvider extends MinecraftVersionManager { + + public CheckModsMinecraftProvider(Profile p) { + super(p); + } + + @Override + public boolean onLaunch() { + try { + super.onLaunch(); + String[] md5s = ((MinecraftModService) getModService()).checkMd5s(); + String[] md5 = ServerPlugin.lastServerInfo.md5; + return ArrayUtils.equals(md5s, md5); + } catch (IOException ex) { + HMCLog.err("Failed to check md5"); + return false; + } + + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/MFCraftAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/MFCraftAuthenticator.java new file mode 100755 index 000000000..070514c44 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/MFCraftAuthenticator.java @@ -0,0 +1,76 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.servers.mfcraft; + +import com.google.gson.JsonSyntaxException; +import java.io.IOException; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.launcher.utils.auth.AuthenticationException; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.launcher.utils.auth.LoginInfo; +import static org.jackhuang.hellominecraft.launcher.utils.auth.OfflineAuthenticator.getUUIDFromUserName; +import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; +import org.jackhuang.hellominecraft.launcher.version.ServerInfo; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * + * @author huangyuhui + */ +public class MFCraftAuthenticator extends IAuthenticator { + + public MFCraftAuthenticator(String clientToken) { + super(clientToken); + } + + @Override + public UserProfileProvider login(LoginInfo info) throws AuthenticationException { + try { + UserProfileProvider result = new UserProfileProvider(); + String url = String.format("http://zh.mfcraft.cn/index.php?c=user_public&a=clientlogin&user=%s&pass=%s", info.username, info.password); + String response = NetUtils.get(url); + if (response.contains("error")) + throw new AuthenticationException(C.i18n("login.wrong_password")); + result.setUserName(info.username); + String uuid = getUUIDFromUserName(info.username); + result.setSession(uuid); + result.setUserId(uuid); + result.setAccessToken(uuid); + result.setUserType("Legacy"); + return result; + } catch (IOException | JsonSyntaxException ex) { + throw new AuthenticationException(C.i18n("login.failed.connect_authentication_server"), ex); + } + + } + + @Override + public String getName() { + return "MFCraft"; + } + + @Override + public UserProfileProvider loginBySettings() throws AuthenticationException { + return null; + } + + @Override + public void logout() { + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/ServerArea.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/ServerArea.java new file mode 100755 index 000000000..638bc0a2a --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/ServerArea.java @@ -0,0 +1,31 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.servers.mfcraft; + +import java.util.ArrayList; +import org.jackhuang.hellominecraft.launcher.version.ServerInfo; + +/** + * + * @author huangyuhui + */ +public class ServerArea { + + public String name; + public ArrayList servers; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/Servers.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/Servers.java new file mode 100755 index 000000000..09baa1881 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/servers/mfcraft/Servers.java @@ -0,0 +1,50 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.servers.mfcraft; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.NetUtils; + +/** + * + * @author huangyuhui + */ +public class Servers { + + public static Servers instance; + + public static Servers getInstance() { + if (instance == null) { + String servers = null; + try { + servers = NetUtils.get("http://zh.mfcraft.cn/View/servers.php"); + instance = C.gson.fromJson(servers, Servers.class); + } catch (IOException ex) { + HMCLog.err("Failed to get servers"); + } + } + return instance; + } + + public ArrayList areas; +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java old mode 100644 new mode 100755 index f25e59052..e61fdf398 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -24,6 +24,9 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.UUID; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.lookandfeel.Theme; +import org.jackhuang.hellominecraft.utils.EventHandler; import org.jackhuang.hellominecraft.utils.system.JdkVersion; /** @@ -55,12 +58,15 @@ public final class Config { return java == null ? java = new ArrayList<>() : java; } - public int getTheme() { - return theme; + public transient final EventHandler themeChangedEvent = new EventHandler<>(this); + + public Theme getTheme() { + return Theme.values()[theme]; } public void setTheme(int theme) { this.theme = theme; + themeChangedEvent.execute(getTheme()); Settings.save(); } @@ -90,6 +96,7 @@ public final class Config { this.bgpath = bgpath; Settings.save(); } + public boolean isEnableAnimation() { return enableAnimation; } @@ -112,7 +119,13 @@ public final class Config { return clientToken; } + public IAuthenticator getAuthenticator() { + return IAuthenticator.LOGINS.get(getLoginType()); + } + public int getLoginType() { + if (logintype < 0 || logintype >= IAuthenticator.LOGINS.size()) + logintype = 0; return logintype; } @@ -162,8 +175,9 @@ public final class Config { clientToken = UUID.randomUUID().toString(); username = ""; logintype = downloadtype = 0; - enableShadow = false; enableAnimation = true; - theme = 0; + enableShadow = false; + enableAnimation = true; + theme = 4; } public DownloadType getDownloadSource() { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/LauncherVisibility.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/LauncherVisibility.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java old mode 100644 new mode 100755 index 5107964c0..e73b2f907 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.launcher.settings; import java.io.File; +import org.jackhuang.hellominecraft.launcher.api.PluginManager; import org.jackhuang.hellominecraft.launcher.launch.IMinecraftProvider; import org.jackhuang.hellominecraft.utils.system.IOUtils; import org.jackhuang.hellominecraft.launcher.utils.MCUtils; @@ -27,7 +28,7 @@ import org.jackhuang.hellominecraft.launcher.version.GameDirType; import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.utils.Utils; import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion; -import org.jackhuang.hellominecraft.launcher.version.MinecraftVersionManager; +import org.jackhuang.hellominecraft.utils.EventHandler; import org.jackhuang.hellominecraft.utils.system.Java; import org.jackhuang.hellominecraft.utils.system.OS; @@ -65,9 +66,14 @@ public final class Profile { gameDir = MCUtils.getInitGameDir().getPath(); debug = fullscreen = canceledWrapper = false; launcherVisibility = gameDirType = 0; + PluginManager.NOW_PLUGIN.onInitializingProfile(this); javaDir = java = minecraftArgs = serverIp = precalledCommand = ""; } + public void initialize(int gameDirType) { + this.gameDirType = gameDirType; + } + public Profile(Profile v) { this(); if (v == null) @@ -94,12 +100,12 @@ public final class Profile { public IMinecraftProvider getMinecraftProvider() { if (minecraftProvider == null) { - minecraftProvider = new MinecraftVersionManager(this); + minecraftProvider = PluginManager.NOW_PLUGIN.provideMinecraftProvider(this); minecraftProvider.initializeMiencraft(); } return minecraftProvider; } - + public String getSelectedMinecraftVersionName() { return selectedMinecraftVersion; } @@ -120,9 +126,12 @@ public final class Profile { return v; } + public transient final EventHandler selectedVersionChangedEvent = new EventHandler<>(this); + public void setSelectedMinecraftVersion(String selectedMinecraftVersion) { this.selectedMinecraftVersion = selectedMinecraftVersion; Settings.save(); + selectedVersionChangedEvent.execute(selectedMinecraftVersion); } public String getGameDir() { @@ -361,12 +370,13 @@ public final class Profile { public void checkFormat() { gameDir = gameDir.replace('/', OS.os().fileSeparator).replace('\\', OS.os().fileSeparator); } - + transient final InstallerService is = new InstallerService(this); + public InstallerService getInstallerService() { return is; } - + public DownloadType getDownloadType() { return Settings.getInstance().getDownloadSource(); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/FileNameFilter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/FileNameFilter.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsIndex.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/Contents.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/AuthenticationException.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/AuthenticationException.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/BestLogin.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java old mode 100644 new mode 100755 index fe44543f6..9125cc145 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -19,7 +19,7 @@ package org.jackhuang.hellominecraft.launcher.utils.auth; import java.util.ArrayList; import java.util.List; -import org.jackhuang.hellominecraft.launcher.settings.Settings; +import org.jackhuang.hellominecraft.launcher.api.PluginManager; /** * Login interface @@ -28,23 +28,10 @@ import org.jackhuang.hellominecraft.launcher.settings.Settings; */ public abstract class IAuthenticator { - public static final YggdrasilAuthenticator YGGDRASIL_LOGIN; - public static final OfflineAuthenticator OFFLINE_LOGIN; - public static final SkinmeAuthenticator SKINME_LOGIN; - - public static final List LOGINS; + public static final List LOGINS = new ArrayList<>(); static { - String clientToken = Settings.getInstance().getClientToken(); - LOGINS = new ArrayList<>(); - LOGINS.add(OFFLINE_LOGIN = new OfflineAuthenticator(clientToken)); - LOGINS.add(YGGDRASIL_LOGIN = new YggdrasilAuthenticator(clientToken)); - LOGINS.add(SKINME_LOGIN = new SkinmeAuthenticator(clientToken)); - YGGDRASIL_LOGIN.onLoadSettings(Settings.getInstance().getYggdrasilConfig()); - - Runtime.getRuntime().addShutdownHook(new Thread(() - -> Settings.getInstance().setYggdrasilConfig(YGGDRASIL_LOGIN.onSaveSettings()) - )); + PluginManager.NOW_PLUGIN.onRegisterAuthenticators(LOGINS::add); } protected String clientToken; @@ -59,7 +46,8 @@ public abstract class IAuthenticator { * @param info username & password * * @return login result - * @throws org.jackhuang.hellominecraft.launcher.utils.auth.AuthenticationException + * @throws + * org.jackhuang.hellominecraft.launcher.utils.auth.AuthenticationException */ public abstract UserProfileProvider login(LoginInfo info) throws AuthenticationException; @@ -72,10 +60,10 @@ public abstract class IAuthenticator { /** * Has password? * - * @return Need to hide password box? + * @return has password? */ public boolean hasPassword() { - return false; + return true; } public boolean isLoggedIn() { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/LoginInfo.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java old mode 100644 new mode 100755 index b31ae0025..3f27c2d66 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -33,7 +33,7 @@ public final class OfflineAuthenticator extends IAuthenticator { @Override public UserProfileProvider login(LoginInfo info) throws AuthenticationException { - if(StrUtils.isBlank(info.username)) + if (StrUtils.isBlank(info.username)) throw new AuthenticationException(C.i18n("login.no_Player007")); UserProfileProvider result = new UserProfileProvider(); result.setUserName(info.username); @@ -56,7 +56,7 @@ public final class OfflineAuthenticator extends IAuthenticator { @Override public boolean hasPassword() { - return true; + return false; } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java old mode 100644 new mode 100755 index 3b88b5006..dacbe5ce3 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/UserProfileProvider.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -59,14 +59,6 @@ public final class UserProfileProvider { this.accessToken = accessToken; } - public String getErrorReason() { - return error; - } - - public void setErrorReason(String error) { - this.error = error; - } - public String getUserProperties() { return userProperties; } @@ -111,7 +103,6 @@ public final class UserProfileProvider { private String userId = ""; private String session = ""; private String accessToken = ""; - private String error = ""; private String userProperties = "{}"; private String userPropertyMap = "{}"; private String otherInfo = ""; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/GameProfile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/GameProfile.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/RefreshRequest.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/RefreshRequest.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/UUIDTypeAdapter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/UUIDTypeAdapter.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/User.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/User.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/DownloadType.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallProfile.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerType.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerType.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionNewerComparator.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeOldInstaller.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/Install.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersion.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersionList.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersionRoot.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/MinecraftForgeVersionRoot.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderMCVersions.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersion.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsMeta.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionsRoot.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineVersionList.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/NewFileUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/NewFileUpgrader.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Extract.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Extract.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/GameDirType.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/GameDirType.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/IMinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/IMinecraftLibrary.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftAssetService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftAssetService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftClassicVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftClassicVersion.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftDownloadService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftDownloadService.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java old mode 100644 new mode 100755 index 1e0dd0f97..0efd2bb00 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -36,19 +36,22 @@ import org.jackhuang.hellominecraft.utils.system.FileUtils; * @author huangyuhui */ public class MinecraftModService extends IMinecraftModService { + MinecraftVersionManager mgr; public MinecraftModService(Profile p, MinecraftVersionManager mgr) { super(p); this.mgr = mgr; } - + List modCache; - + @Override public List getMods() { - if (modCache == null) return recacheMods(); - else return modCache; + if (modCache == null) + return recacheMods(); + else + return modCache; } @Override @@ -110,13 +113,12 @@ public class MinecraftModService extends IMinecraftModService { } recacheMods(); } - - public String checkMd5s() throws IOException { - String res = ""; - for (ModInfo i : getMods()) { - res += DigestUtils.md5Hex(new FileInputStream(i.location)); - } + + public String[] checkMd5s() throws IOException { + String[] res = new String[getMods().size()]; + for (int i = 0; i < res.length; i++) + res[i] = DigestUtils.md5Hex(new FileInputStream(getMods().get(i).location)); return res; } - + } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftOldLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftOldLibrary.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java old mode 100644 new mode 100755 index 365296f6c..dd2cc6e1f --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -48,7 +48,7 @@ import org.jackhuang.hellominecraft.utils.Utils; * * @author huangyuhui */ -public final class MinecraftVersionManager extends IMinecraftProvider { +public class MinecraftVersionManager extends IMinecraftProvider { File baseFolder; final Map versions = new TreeMap(); @@ -211,7 +211,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public GameLauncher.DecompressLibraryJob getDecompressLibraries() { MinecraftVersion v = getSelectedMinecraftVersion(); - if (v == null) return null; + if (v == null) + return null; v = v.resolve(this); if (v.libraries == null) return null; @@ -265,10 +266,11 @@ public final class MinecraftVersionManager extends IMinecraftProvider { } @Override - public void onLaunch() { + public boolean onLaunch() { File resourcePacks = getResourcePacks(); if (!resourcePacks.exists()) resourcePacks.mkdirs(); + return true; } @Override @@ -308,9 +310,9 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public void initializeMiencraft() { - + } - + private void downloadModpack(String url) throws IOException { File tmp = File.createTempFile("hmcl", ".zip"); TaskWindow.getInstance().addTask(new FileDownloadTask(url, tmp)).addTask(new DecompressTask(tmp, baseFolder)).start(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ModpackUpdater.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ModpackUpdater.java new file mode 100755 index 000000000..d2cf765f8 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ModpackUpdater.java @@ -0,0 +1,54 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.version; + +import java.io.File; +import java.util.ArrayList; + +/** + * + * @author huangyuhui + */ +public class ModpackUpdater { + + ModpackInfo info; + + public ModpackUpdater(File baseFolder, ModpackInfo info) { + this.info = info; + } + + void update() { + + } + + public static class ModpackInfo { + + ArrayList folders; + ArrayList files; + + public static class ModpackFolder { + + String ext, name; + } + + public static class ModpackFile { + + String hash, loc; + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Natives.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Natives.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/OS.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/OS.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Rules.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Rules.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ServerInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ServerInfo.java old mode 100644 new mode 100755 index 07c5cff56..0bddbd939 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ServerInfo.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/ServerInfo.java @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.launcher.version; import java.io.File; +import java.util.HashMap; import javax.swing.Icon; import javax.swing.ImageIcon; import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; @@ -35,14 +36,19 @@ public class ServerInfo { public Icon icon; + public static final HashMap CACHE = new HashMap<>(); + public void downloadIcon() { if (icon == null && Utils.isURL(picurl)) - try { - File tmp = File.createTempFile("HMCLSERVER", ".png"); - FileDownloadTask.download(picurl, tmp, null); - icon = new ImageIcon(tmp.getAbsolutePath()); - } catch (Throwable e) { - throw new RuntimeException("Failed to download icon", e); - } + if (CACHE.containsKey(picurl)) + icon = CACHE.get(picurl); + else + try { + File tmp = File.createTempFile("HMCLSERVER", ".png"); + FileDownloadTask.download(picurl, tmp, null); + CACHE.put(picurl, icon = new ImageIcon(tmp.getAbsolutePath())); + } catch (Throwable e) { + throw new RuntimeException("Failed to download icon", e); + } } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java old mode 100644 new mode 100755 index fecfcc6fb..b391aeb88 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -30,7 +30,7 @@ import org.jackhuang.hellominecraft.launcher.settings.Settings; * * @author huangyuhui */ -public class AnimatedPanel extends JPanel { +public class AnimatedPanel extends JPanel implements Selectable { private static final int ANIMATION_LENGTH = 10; @@ -84,4 +84,9 @@ public class AnimatedPanel extends JPanel { gg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, (float) (1 - pgs))); g.drawImage(image, 0, 0, this); } + + @Override + public void onSelected() { + animate(); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.form new file mode 100755 index 000000000..fff84e948 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.form @@ -0,0 +1,86 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.java new file mode 100755 index 000000000..9d965db30 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameDownloadPanel.java @@ -0,0 +1,147 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import javax.swing.table.DefaultTableModel; +import org.jackhuang.hellominecraft.C; +import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.MessageBox; +import org.jackhuang.hellominecraft.utils.StrUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; +import rx.concurrency.Schedulers; + +/** + * + * @author huangyuhui + */ +public class GameDownloadPanel extends AnimatedPanel implements Selectable { + + GameSettingsPanel gsp; + + /** + * Creates new form GameDownloadPanel + */ + public GameDownloadPanel(GameSettingsPanel gsp) { + initComponents(); + this.gsp = gsp; + } + + /** + * This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + btnDownload = new javax.swing.JButton(); + jScrollPane2 = new javax.swing.JScrollPane(); + lstDownloads = new javax.swing.JTable(); + btnRefreshGameDownloads = new javax.swing.JButton(); + + btnDownload.setText(C.i18n("ui.button.download")); // NOI18N + btnDownload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadActionPerformed(evt); + } + }); + + lstDownloads.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.time"), C.I18N.getString("install.type")},new Class[]{String.class, String.class, String.class}, new boolean[]{false, false, false})); + lstDownloads.setToolTipText(""); + lstDownloads.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane2.setViewportView(lstDownloads); + + btnRefreshGameDownloads.setText(C.i18n("ui.button.refresh")); // NOI18N + btnRefreshGameDownloads.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshGameDownloadsActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(btnRefreshGameDownloads, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDownload)) + .addGap(0, 0, 0)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(btnRefreshGameDownloads) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnDownload)) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + + private void btnDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadActionPerformed + downloadMinecraft(); + gsp.refreshVersions(); + }//GEN-LAST:event_btnDownloadActionPerformed + + private void btnRefreshGameDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshGameDownloadsActionPerformed + refreshDownloads(); + }//GEN-LAST:event_btnRefreshGameDownloadsActionPerformed + + public void refreshDownloads() { + DefaultTableModel model = SwingUtils.clearDefaultTable(lstDownloads); + gsp.getProfile().getMinecraftProvider().getDownloadService().getRemoteVersions() + .observeOn(Schedulers.eventQueue()).subscribeOn(Schedulers.newThread()) + .subscribe((ver) -> model.addRow(new Object[] {ver.id, ver.time, + StrUtils.equalsOne(ver.type, "old_beta", "old_alpha", "release", "snapshot") ? C.i18n("versions." + ver.type) : ver.type}), + (e) -> { + MessageBox.Show("Failed to refresh download: " + e.getLocalizedMessage()); + HMCLog.err("Failed to refresh download.", e); + }, lstDownloads::updateUI); + } + + void downloadMinecraft() { + if (lstDownloads.getSelectedRow() < 0) { + MessageBox.Show(C.i18n("gamedownload.not_refreshed")); + return; + } + String id = (String) lstDownloads.getModel().getValueAt(lstDownloads.getSelectedRow(), 0); + gsp.getProfile().getMinecraftProvider().getDownloadService().downloadMinecraft(id); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnDownload; + private javax.swing.JButton btnRefreshGameDownloads; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JTable lstDownloads; + // End of variables declaration//GEN-END:variables + + boolean selected = false; + + @Override + public void onSelected() { + super.onSelected(); + if (!selected) { + selected = true; + refreshDownloads(); + } + } +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form old mode 100644 new mode 100755 index 7be25ba64..e4f2908a5 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form @@ -30,10 +30,6 @@ - - - - @@ -50,8 +46,6 @@ - - @@ -64,6 +58,11 @@ + + + + + @@ -616,6 +615,9 @@ + + + @@ -691,96 +693,14 @@ + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1007,26 +927,6 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java old mode 100644 new mode 100755 index eb5912417..05d0bd4c2 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java @@ -51,6 +51,7 @@ import org.jackhuang.hellominecraft.launcher.utils.ModInfo; import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerType; import org.jackhuang.hellominecraft.launcher.version.GameDirType; import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion; +import org.jackhuang.hellominecraft.utils.Event; import org.jackhuang.hellominecraft.utils.system.IOUtils; import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.version.MinecraftVersionRequest; @@ -58,7 +59,6 @@ import org.jackhuang.hellominecraft.utils.system.OS; import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.views.SwingUtils; import org.jackhuang.hellominecraft.utils.system.Java; -import org.jackhuang.hellominecraft.views.LogWindow; import rx.Observable; import rx.concurrency.Schedulers; @@ -66,7 +66,7 @@ import rx.concurrency.Schedulers; * * @author huangyuhui */ -public final class GameSettingsPanel extends AnimatedPanel implements DropTargetListener { +public final class GameSettingsPanel extends AnimatedPanel implements DropTargetListener, Event { boolean isLoading = false; public MinecraftVersionRequest minecraftVersion; @@ -84,6 +84,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget for (int i = 0; i < InstallerType.values().length; i++) installerPanels[i] = new InstallerPanel(this, InstallerType.values()[i]); + pnlGameDownloads = new GameDownloadPanel(this); initExplorationMenu(); initManagementMenu(); @@ -202,36 +203,23 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget void initTabs() { tabVersionEdit.addChangeListener(new ChangeListener() { - boolean a = false, b = false; + boolean b = false; @Override public void stateChanged(ChangeEvent e) { - if (tabVersionEdit.getSelectedComponent() instanceof AnimatedPanel) - ((AnimatedPanel) tabVersionEdit.getSelectedComponent()).animate(); - if (tabVersionEdit.getSelectedComponent() == pnlGameDownloads && !a) { - a = true; - refreshDownloads(); - } else if (tabVersionEdit.getSelectedComponent() == pnlAutoInstall && !b) { + if (tabVersionEdit.getSelectedComponent() == pnlAutoInstall && !b) { b = true; installerPanels[0].refreshVersions(); } } }); + ((NewTabPane) tabVersionEdit).initializing = true; + tabVersionEdit.addTab(C.i18n("settings.tabs.game_download"), pnlGameDownloads); // NOI18N + ((NewTabPane) tabVersionEdit).initializing = false; + ((NewTabPane) tabInstallers).initializing = true; for (int i = 0; i < InstallerType.values().length; i++) tabInstallers.addTab(InstallerType.values()[i].getLocalizedName(), installerPanels[i]); - - tabInstallers.addChangeListener(new ChangeListener() { - boolean refreshed[] = new boolean[InstallerType.values().length]; - - @Override - public void stateChanged(ChangeEvent e) { - int idx = tabInstallers.getSelectedIndex(); - if (0 <= idx && idx < 3 && !refreshed[idx]) { - installerPanels[idx].refreshVersions(); - refreshed[idx] = true; - } - } - }); + ((NewTabPane) tabInstallers).initializing = false; } /** @@ -243,7 +231,8 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget // //GEN-BEGIN:initComponents private void initComponents() { - tabVersionEdit = new javax.swing.JTabbedPane(); + tabVersionEdit = new NewTabPane(); + ((NewTabPane)tabVersionEdit).initializing = true; pnlSettings = new AnimatedPanel(); lblGameDir = new javax.swing.JLabel(); txtGameDir = new javax.swing.JTextField(); @@ -287,12 +276,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget btnRemoveMod = new javax.swing.JButton(); lblModInfo = new javax.swing.JLabel(); pnlAutoInstall = new AnimatedPanel(); - tabInstallers = new javax.swing.JTabbedPane(); - pnlGameDownloads = new AnimatedPanel(); - btnDownload = new javax.swing.JButton(); - jScrollPane2 = new javax.swing.JScrollPane(); - lstDownloads = new javax.swing.JTable(); - btnRefreshGameDownloads = new javax.swing.JButton(); + tabInstallers = new NewTabPane(); pnlTop = new javax.swing.JPanel(); pnlSelection = new javax.swing.JPanel(); lblProfile = new javax.swing.JLabel(); @@ -307,8 +291,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget btnRemoveProfile = new javax.swing.JButton(); btnExplore = new javax.swing.JButton(); btnIncludeMinecraft = new javax.swing.JButton(); - btnMakeLaunchScript = new javax.swing.JButton(); - btnShowLog = new javax.swing.JButton(); btnCleanGame = new javax.swing.JButton(); setBackground(new java.awt.Color(255, 255, 255)); @@ -628,6 +610,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget lstExternalMods.setModel(SwingUtils.makeDefaultTableModel(new String[]{"", "Mod", C.i18n("ui.label.version")}, new Class[]{Boolean.class,String.class,String.class}, new boolean[]{true,false,false})); lstExternalMods.setColumnSelectionAllowed(true); + lstExternalMods.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); lstExternalMods.getTableHeader().setReorderingAllowed(false); lstExternalMods.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { @@ -717,48 +700,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget tabVersionEdit.addTab(C.i18n("settings.tabs.installers"), pnlAutoInstall); // NOI18N - btnDownload.setText(C.i18n("ui.button.download")); // NOI18N - btnDownload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnDownloadActionPerformed(evt); - } - }); - - lstDownloads.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.I18N.getString("install.version"), C.I18N.getString("install.time"), C.I18N.getString("install.type")},new Class[]{String.class, String.class, String.class}, new boolean[]{false, false, false})); - lstDownloads.setToolTipText(""); - lstDownloads.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - jScrollPane2.setViewportView(lstDownloads); - - btnRefreshGameDownloads.setText(C.i18n("ui.button.refresh")); // NOI18N - btnRefreshGameDownloads.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnRefreshGameDownloadsActionPerformed(evt); - } - }); - - javax.swing.GroupLayout pnlGameDownloadsLayout = new javax.swing.GroupLayout(pnlGameDownloads); - pnlGameDownloads.setLayout(pnlGameDownloadsLayout); - pnlGameDownloadsLayout.setHorizontalGroup( - pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlGameDownloadsLayout.createSequentialGroup() - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 779, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(btnRefreshGameDownloads, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnDownload)) - .addGap(0, 0, 0)) - ); - pnlGameDownloadsLayout.setVerticalGroup( - pnlGameDownloadsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlGameDownloadsLayout.createSequentialGroup() - .addComponent(btnRefreshGameDownloads) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnDownload)) - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 325, Short.MAX_VALUE) - ); - - tabVersionEdit.addTab(C.i18n("settings.tabs.game_download"), pnlGameDownloads); // NOI18N - lblProfile.setText(C.i18n("ui.label.profile")); // NOI18N cboProfiles.setMinimumSize(new java.awt.Dimension(32, 23)); @@ -905,20 +846,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget } }); - btnMakeLaunchScript.setText(C.i18n("mainwindow.make_launch_script")); // NOI18N - btnMakeLaunchScript.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnMakeLaunchScriptActionPerformed(evt); - } - }); - - btnShowLog.setText(C.i18n("mainwindow.show_log")); // NOI18N - btnShowLog.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnShowLogActionPerformed(evt); - } - }); - btnCleanGame.setText(C.i18n("setupwindow.clean")); // NOI18N btnCleanGame.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -937,11 +864,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget .addContainerGap() .addComponent(btnIncludeMinecraft) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnCleanGame) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnShowLog) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnMakeLaunchScript)) + .addComponent(btnCleanGame)) .addComponent(tabVersionEdit)) .addContainerGap()) ); @@ -954,19 +877,16 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnIncludeMinecraft) - .addComponent(btnMakeLaunchScript) - .addComponent(btnShowLog) .addComponent(btnCleanGame)) .addContainerGap()) ); + + ((NewTabPane)tabVersionEdit).initializing = false; }// //GEN-END:initComponents // private void cboProfilesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboProfilesItemStateChanged - if (isLoading) - return; - if (getProfile().getMinecraftProvider().getVersionCount() <= 0) - versionChanged(null); - prepare(getProfile()); + if (!isLoading) + onSelected(); }//GEN-LAST:event_cboProfilesItemStateChanged private void btnNewProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewProfileActionPerformed @@ -988,25 +908,20 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget if (isLoading || evt.getStateChange() != ItemEvent.SELECTED || cboVersions.getSelectedIndex() < 0 || StrUtils.isBlank((String) cboVersions.getSelectedItem())) return; String mcv = (String) cboVersions.getSelectedItem(); - loadMinecraftVersion(mcv); - versionChanged(mcv); getProfile().setSelectedMinecraftVersion(mcv); - cboVersions.setToolTipText(mcv); }//GEN-LAST:event_cboVersionsItemStateChanged + @Override + public boolean call(Object sender, String mcv) { + versionChanged(mcv); + cboVersions.setToolTipText(mcv); + return true; + } + private void btnRefreshVersionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshVersionsActionPerformed refreshVersions(); }//GEN-LAST:event_btnRefreshVersionsActionPerformed - private void btnDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadActionPerformed - downloadMinecraft(); - refreshVersions(); - }//GEN-LAST:event_btnDownloadActionPerformed - - private void btnRefreshGameDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshGameDownloadsActionPerformed - refreshDownloads(); - }//GEN-LAST:event_btnRefreshGameDownloadsActionPerformed - private void btnExploreMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnExploreMouseClicked ppmExplore.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y); }//GEN-LAST:event_btnExploreMouseClicked @@ -1187,14 +1102,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget } }//GEN-LAST:event_btnChoosingGameDirActionPerformed - private void btnMakeLaunchScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMakeLaunchScriptActionPerformed - MainFrame.INSTANCE.mainPanel.btnMakeLaunchCodeActionPerformed(); - }//GEN-LAST:event_btnMakeLaunchScriptActionPerformed - - private void btnShowLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowLogActionPerformed - LogWindow.INSTANCE.setVisible(true); - }//GEN-LAST:event_btnShowLogActionPerformed - private void btnCleanGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCleanGameActionPerformed getProfile().getMinecraftProvider().cleanFolder(); }//GEN-LAST:event_btnCleanGameActionPerformed @@ -1226,6 +1133,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget void prepare(Profile profile) { if (profile == null) return; + profile.selectedVersionChangedEvent.register(this); txtWidth.setText(profile.getWidth()); txtHeight.setText(profile.getHeight()); txtMaxMemory.setText(profile.getMaxMemory()); @@ -1275,16 +1183,9 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget loadMinecraftVersion(getProfile().getSelectedMinecraftVersion()); } - void loadMinecraftVersion(String v) { - loadMinecraftVersion(getProfile().getMinecraftProvider().getVersionById(v)); - } - /** * Anaylze the jar of selected minecraft version of current getProfile() to - * get - * the version. - * - * @param v + * get the version. */ void loadMinecraftVersion(MinecraftVersion v) { txtMinecraftVersion.setText(""); @@ -1296,27 +1197,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget // // - public void refreshDownloads() { - DefaultTableModel model = SwingUtils.clearDefaultTable(lstDownloads); - getProfile().getMinecraftProvider().getDownloadService().getRemoteVersions() - .observeOn(Schedulers.eventQueue()).subscribeOn(Schedulers.newThread()) - .subscribe((ver) -> model.addRow(new Object[] {ver.id, ver.time, - StrUtils.equalsOne(ver.type, "old_beta", "old_alpha", "release", "snapshot") ? C.i18n("versions." + ver.type) : ver.type}), - (e) -> { - MessageBox.Show("Failed to refresh download: " + e.getLocalizedMessage()); - HMCLog.err("Failed to refresh download.", e); - }, lstDownloads::updateUI); - } - - void downloadMinecraft() { - if (lstDownloads.getSelectedRow() < 0) { - MessageBox.Show(C.i18n("gamedownload.not_refreshed")); - return; - } - String id = (String) lstDownloads.getModel().getValueAt(lstDownloads.getSelectedRow(), 0); - getProfile().getMinecraftProvider().getDownloadService().downloadMinecraft(id); - } - // // String getMinecraftVersionFormatted() { @@ -1353,22 +1233,27 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget public void drop(DropTargetDropEvent dtde) { } - private void refreshVersions() { + void refreshVersions() { getProfile().getMinecraftProvider().refreshVersions(); loadVersions(); } // // - private final Object lockMod = new Object(); + private boolean reloadingMods = false; private void reloadMods() { + if (reloadingMods) + return; + reloadingMods = true; DefaultTableModel model = SwingUtils.clearDefaultTable(lstExternalMods); Observable.>createWithEmptySubscription( t -> t.onNext(getProfile().getMinecraftProvider().getModService().recacheMods())) .subscribeOn(Schedulers.newThread()).observeOn(Schedulers.eventQueue()) .flatMap(t -> Observable.from(t)) - .subscribe(t -> model.addRow(new Object[] {t.isActive(), t.getFileName(), t.version})); + .subscribe(t -> model.addRow(new Object[] {t.isActive(), t.getFileName(), t.version}), + null, + () -> reloadingMods = false); } // @@ -1376,10 +1261,9 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget this.mcVersion = version; for (InstallerPanel p : installerPanels) p.loadVersions(); - - reloadMods(); } + @Override public void onSelected() { loadProfiles(); if (getProfile().getMinecraftProvider().getVersionCount() <= 0) @@ -1401,18 +1285,14 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget private javax.swing.JButton btnChoosingGameDir; private javax.swing.JButton btnChoosingJavaDir; private javax.swing.JButton btnCleanGame; - private javax.swing.JButton btnDownload; private javax.swing.JButton btnDownloadAllAssets; private javax.swing.JButton btnExplore; private javax.swing.JButton btnIncludeMinecraft; - private javax.swing.JButton btnMakeLaunchScript; private javax.swing.JButton btnModify; private javax.swing.JButton btnNewProfile; - private javax.swing.JButton btnRefreshGameDownloads; private javax.swing.JButton btnRefreshVersions; private javax.swing.JButton btnRemoveMod; private javax.swing.JButton btnRemoveProfile; - private javax.swing.JButton btnShowLog; private javax.swing.JComboBox cboJava; private javax.swing.JComboBox cboLauncherVisibility; private javax.swing.JComboBox cboProfiles; @@ -1423,7 +1303,6 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget private javax.swing.JCheckBox chkFullscreen; private javax.swing.JCheckBox chkNoJVMArgs; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane2; private javax.swing.JLabel lblDimension; private javax.swing.JLabel lblDimensionX; private javax.swing.JLabel lblGameDir; @@ -1440,11 +1319,9 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget private javax.swing.JLabel lblRunDirectory; private javax.swing.JLabel lblServerIP; private javax.swing.JLabel lblVersions; - private javax.swing.JTable lstDownloads; private javax.swing.JTable lstExternalMods; private javax.swing.JPanel pnlAdvancedSettings; private javax.swing.JPanel pnlAutoInstall; - private javax.swing.JPanel pnlGameDownloads; private javax.swing.JPanel pnlManagement; private javax.swing.JPanel pnlModManagement; private javax.swing.JPanel pnlModManagementContent; @@ -1465,5 +1342,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget private javax.swing.JTextField txtServerIP; private javax.swing.JTextField txtWidth; // End of variables declaration//GEN-END:variables - // + + private javax.swing.JPanel pnlGameDownloads; +// } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.form old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java old mode 100644 new mode 100755 index 01135a2d8..267474728 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java @@ -36,7 +36,7 @@ import org.jackhuang.hellominecraft.views.SwingUtils; * * @author huangyuhui */ -public class InstallerPanel extends AnimatedPanel { +public class InstallerPanel extends AnimatedPanel implements Selectable { GameSettingsPanel gsp; @@ -157,6 +157,16 @@ public class InstallerPanel extends AnimatedPanel { }); } + boolean refreshed = false; + + @Override + public void onSelected() { + if (!refreshed) { + refreshVersions(); + refreshed = true; + } + } + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnInstall; private javax.swing.JButton btnRefresh; 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 index d4a9f7914..b06a4250e --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java @@ -43,7 +43,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { initComponents(); Observable.from(DownloadType.values()).map(t -> t.getName()).toList() - .subscribe(t -> cboDownloadSource.setModel(new DefaultComboBoxModel(t.toArray(new String[0])))); + .subscribe(t -> cboDownloadSource.setModel(new DefaultComboBoxModel(t.toArray(new String[0])))); txtBackgroundPath.setText(Settings.getInstance().getBgpath()); txtProxyHost.setText(Settings.getInstance().getProxyHost()); @@ -51,7 +51,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { txtProxyUsername.setText(Settings.getInstance().getProxyUserName()); txtProxyPassword.setText(Settings.getInstance().getProxyPassword()); cboDownloadSource.setSelectedIndex(Settings.getInstance().getDownloadType()); - cboTheme.setSelectedIndex(Settings.getInstance().getTheme()); + cboTheme.setSelectedIndex(Settings.getInstance().getTheme().ordinal()); chkEnableShadow.setSelected(Settings.getInstance().isEnableShadow()); chkEnableAnimation.setSelected(Settings.getInstance().isEnableAnimation()); @@ -309,7 +309,6 @@ public class LauncherSettingsPanel extends AnimatedPanel { private void cboThemeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboThemeItemStateChanged Settings.getInstance().setTheme(cboTheme.getSelectedIndex()); - MainFrame.INSTANCE.reloadColor(); }//GEN-LAST:event_cboThemeItemStateChanged private void txtProxyHostFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtProxyHostFocusLost diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java old mode 100644 new mode 100755 index c4d2298ca..a55474b57 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -37,10 +37,14 @@ import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.launcher.Main; import org.jackhuang.hellominecraft.launcher.settings.Settings; +import org.jackhuang.hellominecraft.launcher.utils.auth.IAuthenticator; +import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; +import org.jackhuang.hellominecraft.lookandfeel.Theme; import org.jackhuang.hellominecraft.utils.Utils; import org.jackhuang.hellominecraft.views.DropShadowBorder; import org.jackhuang.hellominecraft.views.TintablePanel; @@ -93,13 +97,16 @@ public final class MainFrame extends DraggableFrame { Settings.getInstance().setEnableShadow(false); setSize(802, 511); } - ((JPanel) getContentPane()).setOpaque(true); + + Settings.getInstance().themeChangedEvent.register((sender, t) -> { + MainFrame.INSTANCE.reloadColor(t); + return true; + }); } private void initComponents() { - borderColor = BasicColors.bgcolors[Settings.getInstance().getTheme()]; - borderColorDarker = BasicColors.bgcolors_darker[Settings.getInstance().getTheme()]; + initBorderColor(Settings.getInstance().getTheme()); realPanel = new JPanel(); realPanel.setLayout(null); @@ -122,7 +129,7 @@ public final class MainFrame extends DraggableFrame { header.add(Box.createRigidArea(new Dimension(8, 0))); - ActionListener tabListener = (e) -> MainFrame.this.selectTab(e.getActionCommand()); + ActionListener tabListener = e -> MainFrame.this.selectTab(e.getActionCommand()); this.mainTab = new HeaderTab(C.i18n("launcher.title.main")); this.mainTab.setForeground(BasicColors.COLOR_WHITE_TEXT); @@ -310,7 +317,7 @@ public final class MainFrame extends DraggableFrame { public void closeMessage() { if (isShowedMessage) { isShowedMessage = false; - reloadColor(); + reloadColor(Settings.getInstance().getTheme()); windowTitle.setText(defaultTitle); windowTitle.setForeground(Settings.UPDATE_CHECKER.OUT_DATED ? Color.red : Color.white); } @@ -332,16 +339,24 @@ public final class MainFrame extends DraggableFrame { } public static void showMainFrame(boolean firstLoad) { - INSTANCE.mainPanel.onShow(firstLoad); + if (firstLoad) + SwingUtilities.invokeLater(() -> MainFrame.INSTANCE.showMessage(C.i18n("ui.message.first_load"))); + IAuthenticator l = Settings.getInstance().getAuthenticator(); + if (l.hasPassword() && !l.isLoggedIn()) + SwingUtilities.invokeLater(() -> MainFrame.INSTANCE.showMessage(C.i18n("ui.message.enter_password"))); INSTANCE.show(); } - Color borderColor = BasicColors.COLOR_BLUE; - Color borderColorDarker = BasicColors.COLOR_BLUE_DARKER; + Color borderColor; + Color borderColorDarker; - public void reloadColor() { - borderColor = BasicColors.bgcolors[Settings.getInstance().getTheme()]; - borderColorDarker = BasicColors.bgcolors_darker[Settings.getInstance().getTheme()]; + private void initBorderColor(Theme t) { + borderColor = GraphicsUtils.getWebColor(t.settings.get("Customized.MainFrame.background")); + borderColorDarker = GraphicsUtils.getWebColor(t.settings.get("Customized.MainFrame.selected_background")); + } + + public void reloadColor(Theme t) { + initBorderColor(t); if (border != null) border.setColor(borderColor); header.setBackground(borderColor); @@ -360,7 +375,6 @@ public final class MainFrame extends DraggableFrame { g.drawLine(off, off, off, height + off + 1); g.drawLine(off + width + 1, off, off + width + 1, height + off + 1); g.drawLine(off, height + off + 1, off + width + 1, height + off + 1); - g.dispose(); } @Override @@ -374,7 +388,7 @@ public final class MainFrame extends DraggableFrame { int contentWidth = width - off - off; int contentHeight = height - off - off; BufferedImage contentImage = new BufferedImage(contentWidth, - contentHeight, Transparency.OPAQUE); + contentHeight, Transparency.OPAQUE); Graphics2D contentG2d = contentImage.createGraphics(); contentG2d.translate(-off, -off); paintImpl(g); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form old mode 100644 new mode 100755 index 173fb782c..bb770b16a --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form @@ -34,7 +34,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -60,6 +60,8 @@ + + @@ -90,7 +92,11 @@ - + + + + + @@ -248,6 +254,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java old mode 100644 new mode 100755 index ef8c5f497..291ace7a7 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java @@ -23,7 +23,9 @@ import java.awt.Font; import java.awt.event.ItemEvent; import java.awt.event.KeyEvent; import java.io.File; +import java.io.IOException; import java.util.List; +import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; @@ -35,19 +37,20 @@ import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion; import org.jackhuang.hellominecraft.launcher.launch.GameLauncher; -import org.jackhuang.hellominecraft.launcher.launch.LaunchFinisher; -import org.jackhuang.hellominecraft.launcher.launch.LaunchScriptFinisher; +import org.jackhuang.hellominecraft.launcher.settings.LauncherVisibility; import org.jackhuang.hellominecraft.launcher.settings.Settings; import org.jackhuang.hellominecraft.lookandfeel.GraphicsUtils; import org.jackhuang.hellominecraft.utils.Event; import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; import org.jackhuang.hellominecraft.utils.functions.Consumer; +import org.jackhuang.hellominecraft.utils.system.JavaProcessMonitor; +import org.jackhuang.hellominecraft.views.LogWindow; /** * * @author huangyuhui */ -public class MainPagePanel extends AnimatedPanel { +public class MainPagePanel extends AnimatedPanel implements Event { /** * Creates new form MainPagePanel @@ -67,7 +70,7 @@ public class MainPagePanel extends AnimatedPanel { btnRun.setText(C.i18n("ui.button.run")); btnRun.setFont(newFont); - btnRun.addActionListener(e -> btnRunActionPerformed()); + btnRun.addActionListener(e -> runGame()); this.add(pnlButtons); pnlButtons.setBounds(0, 0, w, h); @@ -105,12 +108,15 @@ public class MainPagePanel extends AnimatedPanel { txtPassword = new javax.swing.JPasswordField(); jPanel3 = new javax.swing.JPanel(); btnLogout = new javax.swing.JButton(); + btnMakeLaunchScript = new javax.swing.JButton(); + btnShowLog = new javax.swing.JButton(); setLayout(null); pnlMore.setBackground(new java.awt.Color(204, 204, 204)); pnlMore.setOpaque(false); + txtPlayerName.setText(""); txtPlayerName.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { txtPlayerNameFocusGained(evt); @@ -212,6 +218,20 @@ public class MainPagePanel extends AnimatedPanel { pnlPassword.add(jPanel3, "card3"); + btnMakeLaunchScript.setText(C.i18n("mainwindow.make_launch_script")); // NOI18N + btnMakeLaunchScript.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMakeLaunchScriptActionPerformed(evt); + } + }); + + btnShowLog.setText(C.i18n("mainwindow.show_log")); // NOI18N + btnShowLog.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnShowLogActionPerformed(evt); + } + }); + javax.swing.GroupLayout pnlMoreLayout = new javax.swing.GroupLayout(pnlMore); pnlMore.setLayout(pnlMoreLayout); pnlMoreLayout.setHorizontalGroup( @@ -226,7 +246,7 @@ public class MainPagePanel extends AnimatedPanel { .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cboProfiles, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cboProfiles, 0, 124, Short.MAX_VALUE) .addComponent(cboVersions, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(pnlMoreLayout.createSequentialGroup() .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -235,7 +255,9 @@ public class MainPagePanel extends AnimatedPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(cboLoginMode, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(txtPlayerName)))) + .addComponent(txtPlayerName))) + .addComponent(btnMakeLaunchScript, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnShowLog, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); pnlMoreLayout.setVerticalGroup( @@ -259,7 +281,11 @@ public class MainPagePanel extends AnimatedPanel { .addComponent(txtPlayerName, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pnlPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(314, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 238, Short.MAX_VALUE) + .addComponent(btnMakeLaunchScript) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnShowLog) + .addContainerGap()) ); add(pnlMore); @@ -275,31 +301,11 @@ public class MainPagePanel extends AnimatedPanel { }//GEN-LAST:event_txtPlayerNameFocusLost private void cboLoginModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboLoginModeItemStateChanged + if (evt.getStateChange() != ItemEvent.SELECTED) + return; if (preparingAuth) return; - int index = cboLoginMode.getSelectedIndex(); - if (index < 0) - return; - - IAuthenticator l = IAuthenticator.LOGINS.get(index); - if (l.hasPassword()) { - pnlPassword.setVisible(false); - lblUserName.setText(C.i18n("login.username")); - } else { - pnlPassword.setVisible(true); - lblUserName.setText(C.i18n("login.account")); - } - - CardLayout cl = (CardLayout) pnlPassword.getLayout(); - if (l.isLoggedIn()) - cl.last(pnlPassword); - else - cl.first(pnlPassword); - String username = Settings.getInstance().getUsername(); - if (StrUtils.isNotBlank(username)) - txtPlayerName.setText(username); - - Settings.getInstance().setLoginType(index); + loginModeChanged(); }//GEN-LAST:event_cboLoginModeItemStateChanged private void cboProfilesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboProfilesItemStateChanged @@ -312,25 +318,29 @@ public class MainPagePanel extends AnimatedPanel { private void cboVersionsItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboVersionsItemStateChanged if (isLoading || evt.getStateChange() != ItemEvent.SELECTED || cboVersions.getSelectedIndex() < 0 || StrUtils.isBlank((String) cboVersions.getSelectedItem()) || getCurrentProfile() == null) return; - getCurrentProfile().setSelectedMinecraftVersion(cboVersions.getSelectedItem().toString()); - cboVersions.setToolTipText(cboVersions.getSelectedItem().toString()); - Settings.save(); + String mcv = (String) cboVersions.getSelectedItem(); + getCurrentProfile().setSelectedMinecraftVersion(mcv); }//GEN-LAST:event_cboVersionsItemStateChanged + @Override + public boolean call(Object sender, String mcv) { + cboVersions.setToolTipText(mcv); + return true; + } + private void txtPasswordFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPasswordFocusGained MainFrame.INSTANCE.closeMessage(); }//GEN-LAST:event_txtPasswordFocusGained private void txtPasswordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtPasswordActionPerformed - btnRunActionPerformed(); + runGame(); }//GEN-LAST:event_txtPasswordActionPerformed private void btnLogoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLogoutActionPerformed if (preparingAuth) return; - int index = cboLoginMode.getSelectedIndex(); - IAuthenticator l = IAuthenticator.LOGINS.get(index); + IAuthenticator l = Settings.getInstance().getAuthenticator(); CardLayout cl = (CardLayout) pnlPassword.getLayout(); if (l.isLoggedIn()) l.logout(); @@ -341,12 +351,9 @@ public class MainPagePanel extends AnimatedPanel { private void txtPlayerNameKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPlayerNameKeyPressed if (evt.getKeyCode() == KeyEvent.VK_ENTER) { Settings.getInstance().setUsername(txtPlayerName.getText()); - int index = cboLoginMode.getSelectedIndex(); - if (index < 0) - return; - IAuthenticator l = IAuthenticator.LOGINS.get(index); - if (l.hasPassword()) - btnRunActionPerformed(); + IAuthenticator l = Settings.getInstance().getAuthenticator(); + if (!l.hasPassword()) + runGame(); else if (!l.isLoggedIn()) txtPassword.requestFocus(); } @@ -354,9 +361,17 @@ public class MainPagePanel extends AnimatedPanel { private void txtPasswordKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPasswordKeyPressed if (evt.getKeyCode() == KeyEvent.VK_ENTER) - btnRunActionPerformed(); + runGame(); }//GEN-LAST:event_txtPasswordKeyPressed + private void btnMakeLaunchScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMakeLaunchScriptActionPerformed + MainFrame.INSTANCE.mainPanel.makeLaunchScript(); + }//GEN-LAST:event_btnMakeLaunchScriptActionPerformed + + private void btnShowLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowLogActionPerformed + LogWindow.INSTANCE.setVisible(true); + }//GEN-LAST:event_btnShowLogActionPerformed + boolean isLaunching = false; // @@ -368,24 +383,24 @@ public class MainPagePanel extends AnimatedPanel { File file = getCurrentProfile().getCanonicalGameDirFile(); if (!file.exists()) { HMCLog.warn("The minecraft path is wrong, please check it yourself."); - MessageBox.Show(C.i18n("minecraft.wrong_path")); + MessageBox.ShowLocalized("minecraft.wrong_path"); return; } final String name = (String) cboProfiles.getSelectedItem(); if (StrUtils.isBlank(name) || getCurrentProfile().getSelectedMinecraftVersion() == null) { HMCLog.warn("There's no selected version, rechoose a version."); - MessageBox.Show(C.i18n("minecraft.no_selected_version")); + MessageBox.ShowLocalized("minecraft.no_selected_version"); return; } final int index = cboLoginMode.getSelectedIndex(); if (index < 0 || index >= IAuthenticator.LOGINS.size()) { HMCLog.warn("There's no login method."); - MessageBox.Show(C.i18n("login.methods.no_method")); + MessageBox.ShowLocalized("login.methods.no_method"); return; } final IAuthenticator l = IAuthenticator.LOGINS.get(index); - final LoginInfo li = new LoginInfo(Settings.getInstance().getUsername(), l.isLoggedIn() || l.hasPassword() ? null : new String(txtPassword.getPassword())); + final LoginInfo li = new LoginInfo(Settings.getInstance().getUsername(), l.isLoggedIn() || !l.hasPassword() ? null : new String(txtPassword.getPassword())); new Thread() { @Override public void run() { @@ -414,21 +429,40 @@ public class MainPagePanel extends AnimatedPanel { preparingAuth = true; cboLoginMode.removeAllItems(); for (IAuthenticator str : IAuthenticator.LOGINS) - try { - cboLoginMode.addItem(str.getName()); - } catch (Exception ex) { - HMCLog.warn("Failed to get login name", ex); - } + cboLoginMode.addItem(str.getName()); + preparingAuth = false; int loginType = Settings.getInstance().getLoginType(); if (0 <= loginType && loginType < cboLoginMode.getItemCount()) { - preparingAuth = false; - cboLoginMode.setSelectedIndex(loginType); - - cboLoginModeItemStateChanged(null); + loginModeChanged(); } } + private void loginModeChanged() { + int index = cboLoginMode.getSelectedIndex(); + if (index < 0) + return; + Settings.getInstance().setLoginType(index); + + IAuthenticator l = IAuthenticator.LOGINS.get(index); + if (l.hasPassword()) { + pnlPassword.setVisible(true); + lblUserName.setText(C.i18n("login.account")); + } else { + pnlPassword.setVisible(false); + lblUserName.setText(C.i18n("login.username")); + } + + CardLayout cl = (CardLayout) pnlPassword.getLayout(); + if (l.isLoggedIn()) + cl.last(pnlPassword); + else + cl.first(pnlPassword); + String username = Settings.getInstance().getUsername(); + if (StrUtils.isNotBlank(username)) + txtPlayerName.setText(username); + } + void loadFromSettings() { for (Profile s : Settings.getProfilesFiltered()) cboProfiles.addItem(s.getName()); @@ -440,31 +474,30 @@ public class MainPagePanel extends AnimatedPanel { isLoading = true; cboVersions.removeAllItems(); int index = 0, i = 0; - if (getCurrentProfile() != null) { - getCurrentProfile().getMinecraftProvider().refreshVersions(); - MinecraftVersion selVersion = getCurrentProfile().getSelectedMinecraftVersion(); - String selectedMC = selVersion == null ? null : selVersion.id; - if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) { - if (!showedNoVersion) - SwingUtilities.invokeLater(() -> { - if (MessageBox.Show(C.i18n("mainwindow.no_version"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { - MainFrame.INSTANCE.selectTab("game"); - MainFrame.INSTANCE.gamePanel.showGameDownloads(); - } - showedNoVersion = true; - }); - } else { - for (MinecraftVersion mcVersion : getCurrentProfile().getMinecraftProvider().getVersions()) { - if (mcVersion.hidden) - continue; - cboVersions.addItem(mcVersion.id); - if (mcVersion.id.equals(selectedMC)) - index = i; - i++; - } - if (index < cboVersions.getItemCount()) - cboVersions.setSelectedIndex(index); + getCurrentProfile().selectedVersionChangedEvent.register(this); + getCurrentProfile().getMinecraftProvider().refreshVersions(); + MinecraftVersion selVersion = getCurrentProfile().getSelectedMinecraftVersion(); + String selectedMC = selVersion == null ? null : selVersion.id; + if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) { + if (!showedNoVersion) + SwingUtilities.invokeLater(() -> { + if (MessageBox.Show(C.i18n("mainwindow.no_version"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + MainFrame.INSTANCE.selectTab("game"); + MainFrame.INSTANCE.gamePanel.showGameDownloads(); + } + showedNoVersion = true; + }); + } else { + for (MinecraftVersion mcVersion : getCurrentProfile().getMinecraftProvider().getVersions()) { + if (mcVersion.hidden) + continue; + cboVersions.addItem(mcVersion.id); + if (mcVersion.id.equals(selectedMC)) + index = i; + i++; } + if (index < cboVersions.getItemCount()) + cboVersions.setSelectedIndex(index); } isLoading = false; } @@ -502,7 +535,7 @@ public class MainPagePanel extends AnimatedPanel { } } - private void btnRunActionPerformed() { + private void runGame() { MainFrame.INSTANCE.showMessage(C.i18n("ui.message.launching")); genLaunchCode(value -> { value.successEvent.register(new LaunchFinisher()); @@ -510,7 +543,7 @@ public class MainPagePanel extends AnimatedPanel { }); } - public void btnMakeLaunchCodeActionPerformed() { + public void makeLaunchScript() { MainFrame.INSTANCE.showMessage(C.i18n("ui.message.launching")); genLaunchCode(value -> { value.successEvent.register(new LaunchScriptFinisher()); @@ -518,26 +551,68 @@ public class MainPagePanel extends AnimatedPanel { }); } - public void onShow(boolean showFirstLoadingMessage) { - if (showFirstLoadingMessage) - SwingUtilities.invokeLater(() -> MainFrame.INSTANCE.showMessage(C.i18n("ui.message.first_load"))); - if (cboLoginMode.getSelectedIndex() >= 0 && cboLoginMode.getSelectedIndex() < cboLoginMode.getItemCount()) { - IAuthenticator l = IAuthenticator.LOGINS.get(cboLoginMode.getSelectedIndex()); - if (!l.hasPassword() && !l.isLoggedIn()) - SwingUtilities.invokeLater(() -> MainFrame.INSTANCE.showMessage(C.i18n("ui.message.enter_password"))); + public class LaunchFinisher implements Event> { + + @Override + public boolean call(Object sender, List str) { + final GameLauncher obj = (GameLauncher) sender; + obj.launchEvent.register((sender1, p) -> { + if (obj.getProfile().getLauncherVisibility() == LauncherVisibility.CLOSE && !LogWindow.INSTANCE.isVisible()) + System.exit(0); + else if (obj.getProfile().getLauncherVisibility() == LauncherVisibility.KEEP) + MainFrame.INSTANCE.closeMessage(); + else { + if (LogWindow.INSTANCE.isVisible()) + LogWindow.INSTANCE.setExit(() -> true); + MainFrame.INSTANCE.dispose(); + } + JavaProcessMonitor jpm = new JavaProcessMonitor(p); + jpm.stoppedEvent.register((sender3, t) -> { + if (obj.getProfile().getLauncherVisibility() != LauncherVisibility.KEEP && !LogWindow.INSTANCE.isVisible()) + System.exit(0); + return true; + }); + jpm.start(); + return true; + }); + obj.launch(str); + return true; } } + public class LaunchScriptFinisher implements Event> { + + @Override + public boolean call(Object sender, List str) { + boolean flag = false; + try { + String s = JOptionPane.showInputDialog(C.i18n("mainwindow.enter_script_name")); + if (s != null) + MessageBox.Show(C.i18n("mainwindow.make_launch_succeed") + " " + ((GameLauncher) sender).makeLauncher(s, str).getAbsolutePath()); + flag = true; + } catch (IOException ex) { + MessageBox.Show(C.i18n("mainwindow.make_launch_script_failed")); + HMCLog.err("Failed to create script file.", ex); + } + MainFrame.INSTANCE.closeMessage(); + return flag; + } + + } + public Profile getCurrentProfile() { return Settings.getProfile((String) cboProfiles.getSelectedItem()); } + @Override public void onSelected() { refreshMinecrafts(Settings.getInstance().getLast()); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnLogout; + private javax.swing.JButton btnMakeLaunchScript; + private javax.swing.JButton btnShowLog; private javax.swing.JComboBox cboLoginMode; private javax.swing.JComboBox cboProfiles; private javax.swing.JComboBox cboVersions; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.form old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java old mode 100644 new mode 100755 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewTabPane.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewTabPane.java new file mode 100755 index 000000000..4a9fe7ae6 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewTabPane.java @@ -0,0 +1,45 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.views; + +import javax.swing.JTabbedPane; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +/** + * + * @author huangyuhui + */ +public class NewTabPane extends JTabbedPane implements ChangeListener { + + public NewTabPane() { + super(); + addChangeListener(this); + } + + public boolean initializing; + + @Override + public void stateChanged(ChangeEvent e) { + if (initializing) + return; + if (getSelectedComponent() instanceof Selectable) + ((Selectable) getSelectedComponent()).onSelected(); + } + +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/Selectable.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/Selectable.java new file mode 100755 index 000000000..ba45940eb --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/Selectable.java @@ -0,0 +1,27 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.launcher.views; + +/** + * + * @author huangyuhui + */ +public interface Selectable { + + void onSelected(); +} diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.form old mode 100644 new mode 100755 index 3a45ee780..b3ff854b1 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.form @@ -17,14 +17,12 @@ - - - + - - - + + + @@ -34,26 +32,19 @@ - - - - - - - - - - - - + + + + + + + - - diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.java old mode 100644 new mode 100755 index d1bef71ff..870676ecf --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListCellRenderer.java @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.launcher.views; import java.awt.Component; +import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import org.jackhuang.hellominecraft.C; @@ -34,6 +35,7 @@ public class ServerListCellRenderer extends javax.swing.JPanel implements ListCe */ public ServerListCellRenderer() { initComponents(); + this.add(lblIcon, -1); } /** @@ -46,7 +48,6 @@ public class ServerListCellRenderer extends javax.swing.JPanel implements ListCe // //GEN-BEGIN:initComponents private void initComponents() { - lblIcon = new javax.swing.JLabel(); lblName = new javax.swing.JLabel(); lblInfo = new javax.swing.JLabel(); lblVersion = new javax.swing.JLabel(); @@ -67,33 +68,30 @@ public class ServerListCellRenderer extends javax.swing.JPanel implements ListCe layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(lblIcon, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(lblInfo, javax.swing.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE) - .addComponent(lblVersion, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE) - .addComponent(lblType, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE)) + .addComponent(lblInfo, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE) + .addComponent(lblVersion, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE) + .addComponent(lblType, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(lblName) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblVersion) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblType) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblInfo, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)) - .addComponent(lblIcon, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(lblName) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblVersion) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblType) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lblInfo, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE) .addContainerGap()) ); }// //GEN-END:initComponents + JLabel lblIcon = new JLabel(); + @Override public Component getListCellRendererComponent(JList list, ServerInfo value, int index, boolean isSelected, boolean cellHasFocus) { lblName.setText(C.i18n("serverlistview.name") + ": " + value.name); @@ -102,18 +100,26 @@ public class ServerListCellRenderer extends javax.swing.JPanel implements ListCe lblInfo.setText("" + C.i18n("serverlistview.info") + ": " + value.info + ""); if (value.icon != null) lblIcon.setIcon(value.icon); + lblIcon.setBounds(0, 0, list.getWidth(), (int) (((double) list.getWidth()) / value.icon.getIconWidth() * value.icon.getIconHeight())); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); + lblName.setForeground(list.getSelectionForeground()); + lblType.setForeground(list.getSelectionForeground()); + lblVersion.setForeground(list.getSelectionForeground()); + lblInfo.setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); + lblName.setForeground(list.getForeground()); + lblType.setForeground(list.getForeground()); + lblVersion.setForeground(list.getForeground()); + lblInfo.setForeground(list.getForeground()); } setFont(list.getFont()); return this; } // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLabel lblIcon; private javax.swing.JLabel lblInfo; private javax.swing.JLabel lblName; private javax.swing.JLabel lblType; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.form old mode 100644 new mode 100755 index 8740a7ff0..06bd3c6d0 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.form @@ -1,8 +1,8 @@ -
+ - + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.java old mode 100644 new mode 100755 index cea394044..cca2edd10 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/ServerListView.java @@ -17,37 +17,35 @@ */ package org.jackhuang.hellominecraft.launcher.views; +import java.awt.Color; import javax.swing.DefaultListModel; import javax.swing.JList; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.launcher.version.ServerInfo; -import rx.Observable; -import rx.concurrency.Schedulers; /** * * @author huangyuhui */ -public class ServerListView extends javax.swing.JFrame { +public class ServerListView extends javax.swing.JDialog { JList lstServer; public ServerListView(ServerInfo[] servers) { + setModal(true); initComponents(); + setSize(800, 480); + setLocationRelativeTo(null); lstServer = new JList<>(); + lstServer.setSelectionForeground(Color.ORANGE); lstServer.setModel(new DefaultListModel<>()); lstServer.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); srlList.setViewportView(lstServer); lstServer.setCellRenderer(new ServerListCellRenderer()); DefaultListModel model = (DefaultListModel) lstServer.getModel(); - Observable.createWithEmptySubscription(t -> { - for (ServerInfo i : servers) - i.downloadIcon(); - t.onNext(servers); - }).observeOn(Schedulers.eventQueue()).subscribeOn(Schedulers.newThread()) - .flatMap(t -> Observable.from(t)) - .subscribe(model::addElement); + for (ServerInfo i : servers) + model.addElement(i); } public int getChoice() { @@ -55,7 +53,7 @@ public class ServerListView extends javax.swing.JFrame { return sel; } - public int sel; + public int sel = -1; public static final int FAILED_TO_SELECT = -1; /** @@ -72,7 +70,7 @@ public class ServerListView extends javax.swing.JFrame { btnOK = new javax.swing.JButton(); btnCancel = new javax.swing.JButton(); - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle(C.i18n("serverlistview.title")); // NOI18N btnOK.setText(C.i18n("ui.button.ok")); // NOI18N diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/background.jpg b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/background.jpg old mode 100644 new mode 100755 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/close.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/close.png old mode 100644 new mode 100755 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/icon.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/icon.png old mode 100644 new mode 100755 diff --git a/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/minimize.png b/HMCL/src/main/resources/org/jackhuang/hellominecraft/launcher/minimize.png old mode 100644 new mode 100755 diff --git a/HMCLAPI/build.gradle b/HMCLAPI/build.gradle old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java old mode 100644 new mode 100755 index 8cff673df..b54ad53c2 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -28,9 +28,9 @@ import org.jackhuang.hellominecraft.logging.layout.DefaultLayout; */ public class Configuration { - public ArrayList appenders = new ArrayList(); + public ArrayList appenders = new ArrayList<>(); - public static Configuration DEFAULT; + public static final Configuration DEFAULT; static { DEFAULT = new Configuration(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java old mode 100644 new mode 100755 index d7dc04b38..e9dfa9f98 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -27,11 +27,11 @@ import org.jackhuang.hellominecraft.logging.LogEvent; */ public class DefaultLayout extends AbstractStringLayout { - private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + private static final SimpleDateFormat SDF = new SimpleDateFormat("HH:mm:ss"); @Override public String toSerializable(LogEvent event) { - return "[" + sdf.format(new Date()) + "] [" + event.threadName + "/" + event.level.name() + "] " + event.message.getFormattedMessage() + "\n"; + return "[" + SDF.format(new Date()) + "] [" + event.threadName + "/" + event.level.name() + "] " + event.message.getFormattedMessage() + "\n"; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java old mode 100644 new mode 100755 index 76a8aa926..e1f172646 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -24,7 +24,7 @@ import org.jackhuang.hellominecraft.logging.message.ParameterizedMessageFactory; import org.jackhuang.hellominecraft.logging.message.StringFormattedMessage; public abstract class AbstractLogger -implements ILogger { + implements ILogger { public static final Class DEFAULT_MESSAGE_FACTORY_CLASS = ParameterizedMessageFactory.class; @@ -52,9 +52,7 @@ implements ILogger { private IMessageFactory createDefaultMessageFactory() { try { return (IMessageFactory) DEFAULT_MESSAGE_FACTORY_CLASS.newInstance(); - } catch (InstantiationException e) { - throw new IllegalStateException(e); - } catch (IllegalAccessException e) { + } catch (InstantiationException | IllegalAccessException e) { throw new IllegalStateException(e); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java old mode 100644 new mode 100755 index 77151d8d7..5f91fff7e --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -38,8 +38,12 @@ public class Logger extends AbstractLogger { } public Logger(String name, IMessageFactory messageFactory, Level defaultLevel) { + this(name, Configuration.DEFAULT, messageFactory, defaultLevel); + } + + public Logger(String name, Configuration config, IMessageFactory messageFactory, Level defaultLevel) { super(name, messageFactory); - this.config = new PrivateConfig(Configuration.DEFAULT, this, defaultLevel); + this.config = new PrivateConfig(config, this, defaultLevel); } public synchronized void setLevel(Level level) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java old mode 100644 new mode 100755 index c507f9e0b..9f501cd78 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -85,14 +85,14 @@ public class SimpleLogger extends AbstractLogger { dateText = this.dateFormatter.format(now); } sb.append(dateText); - sb.append(' '); + sb.append(SPACE); } sb.append(level.toString()); - sb.append(' '); + sb.append(SPACE); if ((this.logName != null) && (this.logName.length() > 0)) { sb.append(this.logName); - sb.append(' '); + sb.append(SPACE); } sb.append(msg.getFormattedMessage()); Object[] params = msg.getParameters(); @@ -102,7 +102,7 @@ public class SimpleLogger extends AbstractLogger { else t = throwable; if (t != null) { - sb.append(' '); + sb.append(SPACE); ByteArrayOutputStream baos = new ByteArrayOutputStream(); t.printStackTrace(new PrintStream(baos)); sb.append(baos.toString()); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessageFactory.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java old mode 100644 new mode 100755 index 7348acf96..336e1cb4d --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -31,7 +31,7 @@ import java.util.Set; * @author huangyuhui */ public class ParameterizedMessage -implements IMessage { + implements IMessage { public static final String RECURSION_PREFIX = "[..."; public static final String RECURSION_SUFFIX = "...]"; @@ -203,19 +203,23 @@ implements IMessage { boolean isEscaped = false; for (int i = 0; i < messagePattern.length(); i++) { char curChar = messagePattern.charAt(i); - if (curChar == ESCAPE_CHAR) + switch (curChar) { + case ESCAPE_CHAR: isEscaped = !isEscaped; - else if (curChar == DELIM_START) { + break; + case DELIM_START: if ((!isEscaped) && (i < messagePattern.length() - 1) && (messagePattern.charAt(i + 1) == DELIM_STOP)) { result++; i++; } - isEscaped = false; - } else + break; + default: isEscaped = false; + break; + } } return result; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DecompressTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DecompressTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoubleTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoubleTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskObservable.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskObservable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java old mode 100644 new mode 100755 index df88cb4d4..9024f4d6a --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -48,6 +48,7 @@ public class TaskWindow extends javax.swing.JDialog private TaskList taskList; private final ArrayList failReasons = new ArrayList(); + private String stackTrace = null, lastStackTrace = null; /** * Creates new form DownloadWindow @@ -91,7 +92,11 @@ public class TaskWindow extends javax.swing.JDialog try { taskList.start(); } catch (Exception e) { - HMCLog.warn("Failed to start thread, maybe there're already a taskwindow here.", e); + HMCLog.err("Failed to start thread, maybe there're already a taskwindow here.", e); + HMCLog.err("There's the stacktrace of the this invoking."); + HMCLog.err(stackTrace); + HMCLog.err("There's the stacktrace of the last invoking."); + HMCLog.err(lastStackTrace); MessageBox.Show(C.i18n("taskwindow.no_more_instance")); return false; } @@ -300,6 +305,7 @@ public class TaskWindow extends javax.swing.JDialog } public boolean start() { + String stacktrace = StrUtils.getStackTrace(new Throwable()); return SwingUtils.invokeAndWait(() -> { synchronized (INSTANCE) { if (INSTANCE.isVisible()) @@ -307,6 +313,8 @@ public class TaskWindow extends javax.swing.JDialog TaskWindow tw = inst(); for (Task t : ll) tw.addTask(t); + tw.lastStackTrace = tw.stackTrace; + tw.stackTrace = stacktrace; return tw.start(); } }); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java old mode 100644 new mode 100755 index ccee9222e..00bcf0800 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.utils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -121,4 +122,19 @@ public class ArrayUtils { } return -1; } + + public static boolean equals(T[] a, T[] b) { + if (a == null && b == null) + return true; + if (a == null || b == null) + return false; + if (a.length != b.length) + return false; + Arrays.sort(a); + Arrays.sort(b); + for (int i = 0; i < a.length; i++) + if (a[i] == null && b[i] != null || a[i] != null && b[i] == null || !a[i].equals(b[i])) + return false; + return true; + } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java old mode 100644 new mode 100755 index 3048ba5a6..8294d77ee --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IUpdateChecker.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/IUpdateChecker.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java old mode 100644 new mode 100755 index fa90e928a..f3d86d00c --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -95,12 +95,12 @@ public class MessageBox { */ public static int Show(String Msg, String Title, int Option) { switch (Option) { - case YES_NO_OPTION: - case YES_NO_CANCEL_OPTION: - case OK_CANCEL_OPTION: - return SwingUtils.invokeAndWait(() -> JOptionPane.showConfirmDialog(null, Msg, Title, Option - 10)); - default: - SwingUtils.invokeAndWait(() -> JOptionPane.showMessageDialog(null, Msg, Title, Option)); + case YES_NO_OPTION: + case YES_NO_CANCEL_OPTION: + case OK_CANCEL_OPTION: + return SwingUtils.invokeAndWait(() -> JOptionPane.showConfirmDialog(null, Msg, Title, Option - 10)); + default: + SwingUtils.invokeAndWait(() -> JOptionPane.showMessageDialog(null, Msg, Title, Option)); } return 0; } @@ -127,4 +127,8 @@ public class MessageBox { public static int Show(String Msg) { return Show(Msg, TITLE, INFORMATION_MESSAGE); } + + public static int ShowLocalized(String msg) { + return Show(C.i18n(msg)); + } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiConsumer.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiConsumer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonFunction.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonFunction.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TriConsumer.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TriConsumer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessManager.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessManager.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ThreadExecutor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ThreadExecutor.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersion.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/DropShadowBorder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.form old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindowOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindowOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.form old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/SwingUtils.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java b/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java b/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java b/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java b/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java b/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/Notification.java b/HMCLAPI/src/main/java/rx/Notification.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/Observable.java b/HMCLAPI/src/main/java/rx/Observable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/Observer.java b/HMCLAPI/src/main/java/rx/Observer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/Scheduler.java b/HMCLAPI/src/main/java/rx/Scheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/Subscription.java b/HMCLAPI/src/main/java/rx/Subscription.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/AbstractScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/AbstractScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/CurrentThreadScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/CurrentThreadScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/DiscardableAction.java b/HMCLAPI/src/main/java/rx/concurrency/DiscardableAction.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/EventQueueScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/EventQueueScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/ExecutorScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/ExecutorScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/ImmediateScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/ImmediateScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/NewThreadScheduler.java b/HMCLAPI/src/main/java/rx/concurrency/NewThreadScheduler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/Schedulers.java b/HMCLAPI/src/main/java/rx/concurrency/Schedulers.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/SleepingAction.java b/HMCLAPI/src/main/java/rx/concurrency/SleepingAction.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/concurrency/package-info.java b/HMCLAPI/src/main/java/rx/concurrency/package-info.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/observables/GroupedObservable.java b/HMCLAPI/src/main/java/rx/observables/GroupedObservable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationAll.java b/HMCLAPI/src/main/java/rx/operators/OperationAll.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationCombineLatest.java b/HMCLAPI/src/main/java/rx/operators/OperationCombineLatest.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationConcat.java b/HMCLAPI/src/main/java/rx/operators/OperationConcat.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationDefer.java b/HMCLAPI/src/main/java/rx/operators/OperationDefer.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationDematerialize.java b/HMCLAPI/src/main/java/rx/operators/OperationDematerialize.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationFilter.java b/HMCLAPI/src/main/java/rx/operators/OperationFilter.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationFinally.java b/HMCLAPI/src/main/java/rx/operators/OperationFinally.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationMap.java b/HMCLAPI/src/main/java/rx/operators/OperationMap.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationMaterialize.java b/HMCLAPI/src/main/java/rx/operators/OperationMaterialize.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationMerge.java b/HMCLAPI/src/main/java/rx/operators/OperationMerge.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationMergeDelayError.java b/HMCLAPI/src/main/java/rx/operators/OperationMergeDelayError.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationMostRecent.java b/HMCLAPI/src/main/java/rx/operators/OperationMostRecent.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationNext.java b/HMCLAPI/src/main/java/rx/operators/OperationNext.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationObserveOn.java b/HMCLAPI/src/main/java/rx/operators/OperationObserveOn.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationOnErrorResumeNextViaFunction.java b/HMCLAPI/src/main/java/rx/operators/OperationOnErrorResumeNextViaFunction.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationOnErrorResumeNextViaObservable.java b/HMCLAPI/src/main/java/rx/operators/OperationOnErrorResumeNextViaObservable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationOnErrorReturn.java b/HMCLAPI/src/main/java/rx/operators/OperationOnErrorReturn.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationScan.java b/HMCLAPI/src/main/java/rx/operators/OperationScan.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationSkip.java b/HMCLAPI/src/main/java/rx/operators/OperationSkip.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationSubscribeOn.java b/HMCLAPI/src/main/java/rx/operators/OperationSubscribeOn.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationSynchronize.java b/HMCLAPI/src/main/java/rx/operators/OperationSynchronize.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationTake.java b/HMCLAPI/src/main/java/rx/operators/OperationTake.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationTakeLast.java b/HMCLAPI/src/main/java/rx/operators/OperationTakeLast.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationTakeWhile.java b/HMCLAPI/src/main/java/rx/operators/OperationTakeWhile.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationToObservableFuture.java b/HMCLAPI/src/main/java/rx/operators/OperationToObservableFuture.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationToObservableIterable.java b/HMCLAPI/src/main/java/rx/operators/OperationToObservableIterable.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationToObservableList.java b/HMCLAPI/src/main/java/rx/operators/OperationToObservableList.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationToObservableSortedList.java b/HMCLAPI/src/main/java/rx/operators/OperationToObservableSortedList.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationWhere.java b/HMCLAPI/src/main/java/rx/operators/OperationWhere.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperationZip.java b/HMCLAPI/src/main/java/rx/operators/OperationZip.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperatorGroupBy.java b/HMCLAPI/src/main/java/rx/operators/OperatorGroupBy.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperatorTakeUntil.java b/HMCLAPI/src/main/java/rx/operators/OperatorTakeUntil.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/OperatorToIterator.java b/HMCLAPI/src/main/java/rx/operators/OperatorToIterator.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/operators/ScheduledObserver.java b/HMCLAPI/src/main/java/rx/operators/ScheduledObserver.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/package-info.java b/HMCLAPI/src/main/java/rx/package-info.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/plugins/RxJavaErrorHandler.java b/HMCLAPI/src/main/java/rx/plugins/RxJavaErrorHandler.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/plugins/RxJavaErrorHandlerDefault.java b/HMCLAPI/src/main/java/rx/plugins/RxJavaErrorHandlerDefault.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/plugins/RxJavaObservableExecutionHook.java b/HMCLAPI/src/main/java/rx/plugins/RxJavaObservableExecutionHook.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/plugins/RxJavaObservableExecutionHookDefault.java b/HMCLAPI/src/main/java/rx/plugins/RxJavaObservableExecutionHookDefault.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/plugins/RxJavaPlugins.java b/HMCLAPI/src/main/java/rx/plugins/RxJavaPlugins.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/subjects/Subject.java b/HMCLAPI/src/main/java/rx/subjects/Subject.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/subscriptions/BooleanSubscription.java b/HMCLAPI/src/main/java/rx/subscriptions/BooleanSubscription.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/subscriptions/Subscriptions.java b/HMCLAPI/src/main/java/rx/subscriptions/Subscriptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/AtomicObservableSubscription.java b/HMCLAPI/src/main/java/rx/util/AtomicObservableSubscription.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/AtomicObserver.java b/HMCLAPI/src/main/java/rx/util/AtomicObserver.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/CompositeException.java b/HMCLAPI/src/main/java/rx/util/CompositeException.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/Exceptions.java b/HMCLAPI/src/main/java/rx/util/Exceptions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/Range.java b/HMCLAPI/src/main/java/rx/util/Range.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/SynchronizedObserver.java b/HMCLAPI/src/main/java/rx/util/SynchronizedObserver.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Action0.java b/HMCLAPI/src/main/java/rx/util/functions/Action0.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Action1.java b/HMCLAPI/src/main/java/rx/util/functions/Action1.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Action2.java b/HMCLAPI/src/main/java/rx/util/functions/Action2.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Action3.java b/HMCLAPI/src/main/java/rx/util/functions/Action3.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func0.java b/HMCLAPI/src/main/java/rx/util/functions/Func0.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func1.java b/HMCLAPI/src/main/java/rx/util/functions/Func1.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func2.java b/HMCLAPI/src/main/java/rx/util/functions/Func2.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func3.java b/HMCLAPI/src/main/java/rx/util/functions/Func3.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func4.java b/HMCLAPI/src/main/java/rx/util/functions/Func4.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func5.java b/HMCLAPI/src/main/java/rx/util/functions/Func5.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func6.java b/HMCLAPI/src/main/java/rx/util/functions/Func6.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func7.java b/HMCLAPI/src/main/java/rx/util/functions/Func7.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func8.java b/HMCLAPI/src/main/java/rx/util/functions/Func8.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Func9.java b/HMCLAPI/src/main/java/rx/util/functions/Func9.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/FuncN.java b/HMCLAPI/src/main/java/rx/util/functions/FuncN.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Function.java b/HMCLAPI/src/main/java/rx/util/functions/Function.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/FunctionLanguageAdaptor.java b/HMCLAPI/src/main/java/rx/util/functions/FunctionLanguageAdaptor.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/java/rx/util/functions/Functions.java b/HMCLAPI/src/main/java/rx/util/functions/Functions.java old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en.properties old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh.properties old mode 100644 new mode 100755 diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties old mode 100644 new mode 100755 diff --git a/HMCSM/HMCLauncher.exe b/HMCSM/HMCLauncher.exe old mode 100644 new mode 100755 diff --git a/HMCSM/build.gradle b/HMCSM/build.gradle old mode 100644 new mode 100755 diff --git a/HMCSM/obfuscate_0.8.6.map b/HMCSM/obfuscate_0.8.6.map old mode 100644 new mode 100755 diff --git a/HMCSM/proguard.pro b/HMCSM/proguard.pro old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/BukkitPlugin.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/Category.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInformation.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginVersion.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeVersion.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/Install.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/InstallProfile.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ServerChecker.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/download/ServerDownloadPackage.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBackupSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoBroadcastSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoExecuteSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSaveSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoSendCommandSchedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/BannedPlayers.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Op.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/SettingsManager.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/WhiteList.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/FolderOpener.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorInfoBean.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.form old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/CommandsWindow.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.form old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form old mode 100644 new mode 100755 index cb12e2077..d371f16d4 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form @@ -2712,7 +2712,6 @@ - @@ -2727,7 +2726,6 @@ - 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 old mode 100644 new mode 100755 index faad733ab..776bfafc6 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -3524,6 +3524,7 @@ public final class MainWindow extends javax.swing.JFrame Server.getInstance().sendCommand("save-all"); }//GEN-LAST:event_btnSaveActionPerformed + @SuppressWarnings("UseOfObsoleteCollectionType") private void btnSaveExtModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveExtModActionPerformed ArrayList arrayList = new ArrayList<>(); Vector strings = ((DefaultTableModel) lstExternalMods.getModel()).getDataVector(); @@ -3536,6 +3537,7 @@ public final class MainWindow extends javax.swing.JFrame SettingsManager.save(); }//GEN-LAST:event_btnSaveExtModActionPerformed + @SuppressWarnings("UseOfObsoleteCollectionType") private void btnSavePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSavePluginsActionPerformed ArrayList arrayList = new ArrayList<>(); Vector strings = ((DefaultTableModel) lstCoreMods.getModel()).getDataVector(); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.form old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/resources/background.jpg b/HMCSM/src/main/resources/background.jpg old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/resources/icon.icns b/HMCSM/src/main/resources/icon.icns old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/resources/icon.png b/HMCSM/src/main/resources/icon.png old mode 100644 new mode 100755 diff --git a/HMCSM/src/main/resources/log4j2.xml b/HMCSM/src/main/resources/log4j2.xml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/build.gradle b/MetroLookAndFeel/build.gradle old mode 100644 new mode 100755 index 455d5fdc3..b91cd205a --- a/MetroLookAndFeel/build.gradle +++ b/MetroLookAndFeel/build.gradle @@ -34,6 +34,10 @@ buildscript { } } +dependencies { + compile project(":HMCLAPI") +} + retrolambda { javaVersion = JavaVersion.VERSION_1_6 } diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/GraphicsUtils.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java old mode 100644 new mode 100755 index b9335196e..775d6da9a --- a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/HelloMinecraftLookAndFeel.java @@ -1,23 +1,32 @@ /* * Copyright 2013 huangyuhui - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program. */ package org.jackhuang.hellominecraft.lookandfeel; +import java.awt.Color; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.lang.reflect.Field; import java.text.ParseException; +import java.util.Map; +import javax.swing.UIDefaults; +import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.synth.SynthLookAndFeel; +import org.jackhuang.hellominecraft.utils.NetUtils; +import sun.swing.DefaultLookup; /** * @@ -25,12 +34,45 @@ import javax.swing.plaf.synth.SynthLookAndFeel; */ public class HelloMinecraftLookAndFeel extends SynthLookAndFeel { + public static final Map DEFAULT_SETTINGS = Theme.BLUE.settings; + /** * Creates a new instance of NimbusLookAndFeel - * @throws java.text.ParseException error parsing the xml, it must not happen. + * + * @throws java.text.ParseException error parsing the xml, it must not + * happen. */ public HelloMinecraftLookAndFeel() throws ParseException { - load(HelloMinecraftLookAndFeel.class.getResourceAsStream("/org/jackhuang/hellominecraft/lookandfeel/synth.xml"), HelloMinecraftLookAndFeel.class); + this(DEFAULT_SETTINGS); + } + + public HelloMinecraftLookAndFeel(Map settings) throws ParseException { + try { + String s = NetUtils.getStreamContent(HelloMinecraftLookAndFeel.class.getResourceAsStream("/org/jackhuang/hellominecraft/lookandfeel/synth.xml")); + for (String ss : settings.keySet()) + s = s.replace("${" + ss + "}", settings.get(ss)); + load(new ByteArrayInputStream(s.getBytes()), HelloMinecraftLookAndFeel.class); + } catch (IOException ex) { + ex.printStackTrace(); + throw new ParseException("FUCKING BUG", 0); + } + } + + UIDefaults uiDefaults; + + @Override + public UIDefaults getDefaults() { + if (uiDefaults != null) + return uiDefaults; + uiDefaults = super.getDefaults(); + //ui.put("Table.selectionForeground", new ColorUIResource(Color.red)); + //ui.put("Table.focusCellForeground", new ColorUIResource(Color.red)); + //ui.put("TabbedPane.isTabRollover", false); + //ui.put("ComboBox.selectionBackground", new ColorUIResource(Color.red)); + //ui.put("List.background", new ColorUIResource(Color.red)); + //uiDefaults.put("TabbedPane.selectedLabelShift", 0); + uiDefaults.put("Table.selectionBackground", Color.red); + return uiDefaults; } /** diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/Theme.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/Theme.java new file mode 100755 index 000000000..9ff01a8c3 --- /dev/null +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/Theme.java @@ -0,0 +1,85 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.lookandfeel; + +import java.util.HashMap; +import java.util.Map; +import org.jackhuang.hellominecraft.C; + +/** + * + * @author huangyuhui + */ +public enum Theme { + BLUE(C.i18n("color.blue"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#106CA3"); + put("Customized.ComboBox.selected_background", "#A0D8F0"); + put("Customized.MainFrame.background", "#106CA3"); + put("Customized.MainFrame.selected_background", "#0C5E91"); + } + }), + GREEN(C.i18n("color.green"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#1ABC9C"); + put("Customized.ComboBox.selected_background", "#1ABC9C"); + put("Customized.MainFrame.background", "#1ABC9C"); + put("Customized.MainFrame.selected_background", "#16A085"); + } + }), + PURPLE(C.i18n("color.purple"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#9B59B6"); + put("Customized.ComboBox.selected_background", "#9B59B6"); + put("Customized.MainFrame.background", "#9B59B6"); + put("Customized.MainFrame.selected_background", "#8E44AD"); + } + }), + DARKER_BLUE(C.i18n("color.dark_blue"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#34495E"); + put("Customized.ComboBox.selected_background", "#34495E"); + put("Customized.MainFrame.background", "#34495E"); + put("Customized.MainFrame.selected_background", "#2C3E50"); + } + }), + ORANGE(C.i18n("color.orange"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#E67E22"); + put("Customized.ComboBox.selected_background", "#F39C12"); + put("Customized.MainFrame.background", "#E67E22"); + put("Customized.MainFrame.selected_background", "#D35400"); + } + }), + RED(C.i18n("color.red"), new HashMap() { + { + put("Customized.TabbedPaneTab.selected_foreground", "#E74C3C"); + put("Customized.ComboBox.selected_background", "#E74C3C"); + put("Customized.MainFrame.background", "#E74C3C"); + put("Customized.MainFrame.selected_background", "#C0392B"); + } + }); + + public final String localizedName; + public final Map settings; + + private Theme(String localizedName, Map settings) { + this.localizedName = localizedName; + this.settings = settings; + } +} diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/ConstomButton.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/components/IConstomable.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ButtonPainter.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java old mode 100644 new mode 100755 index c430e5db4..c7eda851f --- a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/ProgressPainter.java @@ -37,23 +37,13 @@ import java.awt.LinearGradientPaint; */ public class ProgressPainter extends SynthPainter { - private static final float[] NORMAL_BG_PTS = new float[]{0, 1}; - private static final Color[] NORMAL_BG = new Color[]{ + private static final float[] NORMAL_BG_PTS = new float[] {0, 1}; + private static final Color[] NORMAL_BG = new Color[] { GraphicsUtils.getWebColor("c6c6c6"), GraphicsUtils.getWebColor("c6c6c6") }; - private static final float[] NORMAL_FG_PTS = new float[]{0, 1}; - private static final Color[] NORMAL_FG = new Color[]{ - GraphicsUtils.getWebColor("c6c6c6"), - GraphicsUtils.getWebColor("c6c6c6") - }; - private static final float[] BAR_BG_PTS = new float[]{0, 1}; - private static final Color[] BAR_BG = new Color[]{ - GraphicsUtils.getWebColor("41B1E1"), - GraphicsUtils.getWebColor("41B1E1") - }; - private static final float[] BAR_FG_PTS = new float[]{0, 1}; - private static final Color[] BAR_FG = new Color[]{ + private static final float[] BAR_FG_PTS = new float[] {0, 1}; + private static final Color[] BAR_FG = new Color[] { GraphicsUtils.getWebColor("41B1E1"), GraphicsUtils.getWebColor("41B1E1") }; @@ -61,39 +51,31 @@ public class ProgressPainter extends SynthPainter { /** * {@inheritDoc} */ + @Override public void paintProgressBarBackground(SynthContext context, Graphics g, int x, int y, int w, int h, - int orientation) { + int orientation) { Graphics2D g2 = (Graphics2D) g.create(); - g2.setPaint(new LinearGradientPaint(x, y + 3, x, y + h - 4, NORMAL_BG_PTS, NORMAL_BG)); - if (x + 2 < w - 5 && y + 2 < h - 5) { + g2.setPaint(new LinearGradientPaint(x, y + 2, x, y + h - 4, NORMAL_BG_PTS, NORMAL_BG)); + if (x + 2 < w - 5 && y + 2 < h - 5) g2.fillRect(x + 2, y + 2, w - 5, h - 5); - } - g2.setPaint(new LinearGradientPaint(x, y + 2, x, y + h - 5, NORMAL_FG_PTS, NORMAL_FG)); - if (x + 2 < w - 5 && y + 2 < h - 5) { - g2.drawRect(x + 2, y + 2, w - 5, h - 5); - } } /** * {@inheritDoc} */ + @Override public void paintProgressBarForeground(SynthContext context, Graphics g, int x, int y, int w, int h, - int orientation) { + int orientation) { Graphics2D g2 = (Graphics2D) g.create(); - g2.setPaint(new LinearGradientPaint(x, y + 3, x, y + h - 4, BAR_BG_PTS, BAR_BG)); - if (x + 2 < w - 5 && y + 2 < h - 5) { - g2.fillRect(x + 2, y + 2, w - 5, h - 5); - } g2.setPaint(new LinearGradientPaint(x, y + 2, x, y + h - 2, BAR_FG_PTS, BAR_FG)); - if (x + 2 < w - 5 && y + 2 < h - 5) { + if (x + 2 < w - 5 && y + 2 < h - 5) g2.drawRect(x + 2, y + 2, w - 5, h - 5); - } - } /** * {@inheritDoc} */ + @Override public void paintProgressBarBorder(SynthContext context, Graphics g, int x, int y, int w, int h, int orientation) { } } diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/painters/TextFieldPainter.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ComboBoxUI.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java old mode 100644 new mode 100755 index 2a3f33642..1200d9e25 --- a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java +++ b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ListCellRender.java @@ -17,7 +17,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + */ package org.jackhuang.hellominecraft.lookandfeel.ui; import javax.swing.DefaultListCellRenderer; @@ -33,8 +33,9 @@ import java.awt.Component; */ public class ListCellRender extends DefaultListCellRenderer { - @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, - boolean cellHasFocus) { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { setOpaque(true); setBackground(Color.magenta); return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollBarUI.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java b/MetroLookAndFeel/src/main/java/org/jackhuang/hellominecraft/lookandfeel/ui/ScrollButton.java old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_disabled.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_off_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_disabled.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/checkbox_on_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_disabled.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_normal.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/combo_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_error.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_error.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_info.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_info.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_question.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_question.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_warning.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/option_pane_warning.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_normal.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_selected.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_disabled_selected.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/radio_btn_selected_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_normal.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_dec_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_disabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_disabled.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_enabled.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_enabled.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_normal.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_inc_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_normal.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_normal.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_over.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_over.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_pressed.png b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/images/scroll_thumb_pressed.png old mode 100644 new mode 100755 diff --git a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml old mode 100644 new mode 100755 index 9498f9d91..ca42492f8 --- a/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml +++ b/MetroLookAndFeel/src/main/resources/org/jackhuang/hellominecraft/lookandfeel/synth.xml @@ -238,7 +238,7 @@ @@ -264,47 +264,27 @@ + + 0 + 0 + false + + + - - 237 - 239 - 242 - + - - 0 - 0 - 0 - + - - 160 - 216 - 240 - + - - 35 - 35 - 36 - + - - + @@ -367,29 +347,13 @@ - - 237 - 239 - 242 - + - - 255 - 255 - 255 - + - - 0 - 0 - 255 - + - - 35 - 35 - 36 - + @@ -413,20 +377,9 @@ diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/build.gradle b/build.gradle old mode 100644 new mode 100755 diff --git a/common.gradle b/common.gradle old mode 100644 new mode 100755 diff --git a/license-header.txt b/license-header.txt old mode 100644 new mode 100755 diff --git a/settings.gradle b/settings.gradle old mode 100644 new mode 100755