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
index e0969c872..c7b813a87 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java
@@ -64,7 +64,7 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader {
String str = v.getJavaDir();
JdkVersion jv = new JdkVersion(str);
- if(Settings.getInstance().getJava().contains(jv))
+ if (Settings.getInstance().getJava().contains(jv))
jv = Settings.getInstance().getJava().get(Settings.getInstance().getJava().indexOf(jv));
else try {
jv = JdkVersion.getJavaVersionFromExecutable(str);
@@ -153,11 +153,9 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader {
res.add(args.length > 1 ? args[1] : "25565");
}
- if (v.isFullscreen())
- res.add("--fullscreen");
+ if (v.isFullscreen()) res.add("--fullscreen");
- if (v.isDebug() && !v.isCanceledWrapper())
- res.add("-debug");
+ if (v.isDebug() && !v.isCanceledWrapper()) res.add("-debug");
if (StrUtils.isNotBlank(v.getMinecraftArgs()))
res.addAll(Arrays.asList(v.getMinecraftArgs().split(" ")));
@@ -172,6 +170,7 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader {
*
main class
* minecraft arguments
*
+ *
* @param list the command list you shoud edit.
*/
protected abstract void makeSelf(List list);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
index 7cff8bddd..7dd3dbc8e 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java
@@ -57,17 +57,12 @@ public class DefaultGameLauncher extends GameLauncher {
return flag;
});
decompressNativesEvent.register((sender, value) -> {
- //boolean flag = true;
for (int i = 0; i < value.decompressFiles.length; i++)
try {
Compressor.unzip(value.decompressFiles[i], value.decompressTo, value.extractRules[i]);
} catch (IOException ex) {
HMCLog.err("Unable to decompress library file: " + value.decompressFiles[i] + " to " + value.decompressTo, ex);
- //flag = false;
}
- /*if(!flag)
- if(MessageBox.Show(C.i18n("launch.not_finished_decompressing_natives"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
- flag = true;*/
return true;
});
}
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
index 59667015d..04f987a29 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java
@@ -104,8 +104,14 @@ public class GameLauncher {
File file = provider.getDecompressNativesToLocation();
if (file != null) FileUtils.cleanDirectoryQuietly(file);
- if(!downloadLibrariesEvent.execute(provider.getDownloadLibraries(downloadType))) { failEvent.execute(C.i18n("launch.failed")); return null; }
- if(!decompressNativesEvent.execute(provider.getDecompressLibraries())) { failEvent.execute(C.i18n("launch.failed")); return null; }
+ if (!downloadLibrariesEvent.execute(provider.getDownloadLibraries(downloadType))) {
+ failEvent.execute(C.i18n("launch.failed"));
+ return null;
+ }
+ if (!decompressNativesEvent.execute(provider.getDecompressLibraries())) {
+ failEvent.execute(C.i18n("launch.failed"));
+ return null;
+ }
successEvent.execute(loader.makeLaunchingCommand());
return loader;
}
@@ -185,6 +191,7 @@ public class GameLauncher {
}
public static class DecompressLibraryJob {
+
File[] decompressFiles;
String[][] extractRules;
File decompressTo;
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
index 84d44e493..ca31e8372 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftLoader.java
@@ -23,5 +23,6 @@ import java.util.List;
* @author huangyuhui
*/
public interface IMinecraftLoader {
+
List makeLaunchingCommand();
}
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
index f58e027f0..a92cb68cc 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java
@@ -29,46 +29,64 @@ import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion;
* @author huangyuhui
*/
public abstract class IMinecraftProvider {
+
Profile profile;
public IMinecraftProvider(Profile profile) {
this.profile = profile;
}
-
+
public abstract File getRunDirectory(String id);
+
public abstract List getDownloadLibraries(DownloadType type);
+
public abstract void openSelf(String version);
+
public abstract void open(String version, String folder);
+
public abstract File getAssets();
+
public abstract File getResourcePacks();
+
public abstract GameLauncher.DecompressLibraryJob getDecompressLibraries();
+
public abstract File getDecompressNativesToLocation();
+
public abstract File getMinecraftJar();
+
public abstract File getBaseFolder();
/**
* Launch
+ *
* @param p player informations, including username & auth_token
* @param type according to the class name 233
* @return what you want
* @throws IllegalStateException circular denpendency versions
*/
public abstract IMinecraftLoader provideMinecraftLoader(UserProfileProvider p, DownloadType type) throws IllegalStateException;
-
+
// Versions
public abstract boolean renameVersion(String from, String to);
+
public abstract boolean removeVersionFromDisk(String a);
+
public abstract boolean refreshJson(String a);
+
public abstract boolean refreshAssetsIndex(String a);
-
+
public abstract MinecraftVersion getOneVersion();
+
public abstract Collection getVersions();
+
public abstract MinecraftVersion getVersionById(String id);
+
public abstract int getVersionCount();
+
public abstract void refreshVersions();
-
+
public abstract boolean install(String version, DownloadType type);
-
+
public abstract void onLaunch();
}
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
index d3058f8d6..9c547c490 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java
@@ -36,7 +36,7 @@ public class LaunchScriptFinisher implements Event> {
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());
+ 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"));
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
index 9e1517b82..578c6f894 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftCrashAdvicer.java
@@ -28,28 +28,27 @@ public final class MinecraftCrashAdvicer {
public static String getAdvice(String trace) {
return getAdvice(trace, false);
}
-
+
public static String getAdvice(String trace, boolean selfCrash) {
trace = trace.toLowerCase();
- if(trace.contains("pixel format not accelerated")) {
+ if (trace.contains("pixel format not accelerated"))
return C.i18n("crash.advice.LWJGLException");
- } else if (trace.contains("unsupportedclassversionrrror")) {
+ else if (trace.contains("unsupportedclassversionrrror"))
return C.i18n("crash.advice.UnsupportedClassVersionError");
- } else if (trace.contains("concurrentmodificationexception")) {
+ else if (trace.contains("concurrentmodificationexception"))
return C.i18n("crash.advice.ConcurrentModificationException");
- } else if (trace.contains("securityexception")) {
+ else if (trace.contains("securityexception"))
return C.i18n("crash.advice.SecurityException");
- } else if (trace.contains("nosuchfieldexception") || trace.contains("nosuchfielderror")) {
+ else if (trace.contains("nosuchfieldexception") || trace.contains("nosuchfielderror"))
return C.i18n("crash.advice.NoSuchFieldError");
- } else if (trace.contains("outofmemory") || trace.contains("out of memory")) {
+ else if (trace.contains("outofmemory") || trace.contains("out of memory"))
return C.i18n("crash.advice.OutOfMemoryError");
- } else if (trace.contains("noclassdeffounderror") || trace.contains("classnotfoundexception")) {
+ else if (trace.contains("noclassdeffounderror") || trace.contains("classnotfoundexception"))
return C.i18n("crash.advice.ClassNotFoundException");
- } else if (trace.contains("no lwjgl in java.library.path")) {
+ else if (trace.contains("no lwjgl in java.library.path"))
return C.i18n("crash.advice.no_lwjgl");
- } else if (trace.contains("opengl") || trace.contains("openal")) {
+ else if (trace.contains("opengl") || trace.contains("openal"))
return C.i18n("crash.advice.OpenGL");
- }
return C.i18n(selfCrash ? "crash.advice.no" : "crash.advice.otherwise");
}
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
index 5278c6218..9cf7695ad 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java
@@ -31,6 +31,7 @@ import org.jackhuang.hellominecraft.utils.system.OS;
* @author huangyuhui
*/
public final class Config {
+
@SerializedName("last")
private String last;
@SerializedName("bgpath")
@@ -119,7 +120,7 @@ public final class Config {
}
public TreeMap getConfigurations() {
- if(configurations == null)
+ if (configurations == null)
configurations = new TreeMap<>();
return configurations;
}
@@ -141,7 +142,7 @@ public final class Config {
this.yggdrasil = yggdrasil;
Settings.save();
}
-
+
@SerializedName("logintype")
private int logintype;
@SerializedName("downloadtype")
@@ -152,22 +153,21 @@ public final class Config {
private boolean checkUpdate;
@SerializedName("yggdrasil")
private Map yggdrasil;
-
- public Config()
- {
+
+ public Config() {
clientToken = UUID.randomUUID().toString();
username = "";
logintype = downloadtype = 0;
checkUpdate = true;
- configurations = new TreeMap<>();
- Profile profile = new Profile();
- configurations.put(profile.getName(), profile);
+ configurations = new TreeMap<>();
+ Profile profile = new Profile();
+ configurations.put(profile.getName(), profile);
enableShadow = OS.os() == OS.WINDOWS;
theme = 0;
}
public DownloadType getDownloadSource() {
- if(downloadtype >= DownloadType.values().length || downloadtype < 0) return null;
+ if (downloadtype >= DownloadType.values().length || downloadtype < 0) return null;
return DownloadType.values()[downloadtype];
}
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
index 1ec1e55bd..d7194e15c 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/LauncherVisibility.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/LauncherVisibility.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.settings;
* @author huangyuhui
*/
public enum LauncherVisibility {
+
CLOSE,
HIDE,
KEEP
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
index 8ccfa2fe0..1b7bf39ea 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java
@@ -53,32 +53,30 @@ public final class Profile {
protected transient IMinecraftProvider minecraftProvider;
public Profile() {
- this("Default");
+ this("Default");
}
public Profile(String name) {
- this.name = name;
- gameDir = MCUtils.getInitGameDir().getPath();
- debug = fullscreen = canceledWrapper = false;
- javaDir = IOUtils.getJavaDir();
- launcherVisibility = gameDirType = 0;
+ this.name = name;
+ gameDir = MCUtils.getInitGameDir().getPath();
+ debug = fullscreen = canceledWrapper = false;
+ javaDir = IOUtils.getJavaDir();
+ launcherVisibility = gameDirType = 0;
minecraftArgs = serverIp = "";
}
public Profile(Profile v) {
- this();
- if (v == null) {
- return;
- }
- name = v.name;
- gameDir = v.gameDir;
- maxMemory = v.maxMemory;
- width = v.width;
- height = v.height;
- fullscreen = v.fullscreen;
- javaArgs = v.javaArgs;
- javaDir = v.javaDir;
- debug = v.debug;
+ this();
+ if (v == null) return;
+ name = v.name;
+ gameDir = v.gameDir;
+ maxMemory = v.maxMemory;
+ width = v.width;
+ height = v.height;
+ fullscreen = v.fullscreen;
+ javaArgs = v.javaArgs;
+ javaDir = v.javaDir;
+ debug = v.debug;
minecraftArgs = v.minecraftArgs;
permSize = v.permSize;
gameDirType = v.gameDirType;
@@ -90,167 +88,162 @@ public final class Profile {
}
public IMinecraftProvider getMinecraftProvider() {
- if(minecraftProvider == null) minecraftProvider = new MinecraftVersionManager(this);
+ if (minecraftProvider == null) minecraftProvider = new MinecraftVersionManager(this);
return minecraftProvider;
}
public MinecraftVersion getSelectedMinecraftVersion() {
- if (StrUtils.isBlank(selectedMinecraftVersion)) {
- MinecraftVersion v = getMinecraftProvider().getOneVersion();
- if (v == null) {
- return null;
- }
- selectedMinecraftVersion = v.id;
- return v;
- }
- MinecraftVersion v = getMinecraftProvider().getVersionById(selectedMinecraftVersion);
- if(v == null) v = getMinecraftProvider().getOneVersion();
- if(v != null) setSelectedMinecraftVersion(v.id);
- return v;
+ if (StrUtils.isBlank(selectedMinecraftVersion)) {
+ MinecraftVersion v = getMinecraftProvider().getOneVersion();
+ if (v == null) return null;
+ selectedMinecraftVersion = v.id;
+ return v;
+ }
+ MinecraftVersion v = getMinecraftProvider().getVersionById(selectedMinecraftVersion);
+ if (v == null) v = getMinecraftProvider().getOneVersion();
+ if (v != null) setSelectedMinecraftVersion(v.id);
+ return v;
}
public String getGameDir() {
- if (StrUtils.isBlank(gameDir)) {
- gameDir = MCUtils.getInitGameDir().getPath();
- }
- return IOUtils.addSeparator(gameDir);
+ if (StrUtils.isBlank(gameDir)) gameDir = MCUtils.getInitGameDir().getPath();
+ return IOUtils.addSeparator(gameDir);
}
-
+
public String getCanonicalGameDir() {
- return IOUtils.tryGetCanonicalFolderPath(getGameDirFile());
+ return IOUtils.tryGetCanonicalFolderPath(getGameDirFile());
}
-
+
public File getCanonicalGameDirFile() {
- return IOUtils.tryGetCanonicalFile(getGameDirFile());
+ return IOUtils.tryGetCanonicalFile(getGameDirFile());
}
public File getGameDirFile() {
- return new File(getGameDir());
+ return new File(getGameDir());
}
public Profile setGameDir(String gameDir) {
- this.gameDir = gameDir;
+ this.gameDir = gameDir;
Settings.save();
return this;
}
public String getJavaDir() {
- if (StrUtils.isBlank(javaDir)) {
- javaDir = IOUtils.getJavaDir();
- }
- return javaDir;
+ if (StrUtils.isBlank(javaDir))
+ javaDir = IOUtils.getJavaDir();
+ return javaDir;
}
public File getJavaDirFile() {
- return new File(getJavaDir());
+ return new File(getJavaDir());
}
public void setJavaDir(String javaDir) {
- this.javaDir = javaDir;
+ this.javaDir = javaDir;
Settings.save();
}
public File getFolder(String folder) {
- return new File(getGameDir(), folder);
+ return new File(getGameDir(), folder);
}
public String getName() {
- return name;
+ return name;
}
public void setName(String name) {
- this.name = name;
+ this.name = name;
}
public void setSelectedMinecraftVersion(String selectedMinecraftVersion) {
- this.selectedMinecraftVersion = selectedMinecraftVersion;
+ this.selectedMinecraftVersion = selectedMinecraftVersion;
}
public String getJavaArgs() {
- if(StrUtils.isBlank(javaArgs)) return "";
- return javaArgs;
+ if (StrUtils.isBlank(javaArgs)) return "";
+ return javaArgs;
}
public void setJavaArgs(String javaArgs) {
- this.javaArgs = javaArgs;
+ this.javaArgs = javaArgs;
Settings.save();
}
-
+
public boolean hasJavaArgs() {
return StrUtils.isNotBlank(getJavaArgs().trim());
}
public String getMaxMemory() {
- if(StrUtils.isBlank(maxMemory)) return String.valueOf(Utils.getSuggestedMemorySize());
- return maxMemory;
+ if (StrUtils.isBlank(maxMemory)) return String.valueOf(Utils.getSuggestedMemorySize());
+ return maxMemory;
}
public void setMaxMemory(String maxMemory) {
- this.maxMemory = maxMemory;
+ this.maxMemory = maxMemory;
Settings.save();
}
public String getWidth() {
- if(StrUtils.isBlank(width)) return "854";
- return width;
+ if (StrUtils.isBlank(width)) return "854";
+ return width;
}
public void setWidth(String width) {
- this.width = width;
+ this.width = width;
}
public String getHeight() {
- if(StrUtils.isBlank(height)) return "480";
- return height;
+ if (StrUtils.isBlank(height)) return "480";
+ return height;
}
public void setHeight(String height) {
- this.height = height;
+ this.height = height;
Settings.save();
}
public String getUserProperties() {
- if(userProperties == null) return "";
- return userProperties;
+ if (userProperties == null) return "";
+ return userProperties;
}
public void setUserProperties(String userProperties) {
- this.userProperties = userProperties;
+ this.userProperties = userProperties;
}
public boolean isFullscreen() {
- return fullscreen;
+ return fullscreen;
}
public void setFullscreen(boolean fullscreen) {
- this.fullscreen = fullscreen;
+ this.fullscreen = fullscreen;
Settings.save();
}
public boolean isDebug() {
- return debug;
+ return debug;
}
public void setDebug(boolean debug) {
- this.debug = debug;
+ this.debug = debug;
Settings.save();
}
public LauncherVisibility getLauncherVisibility() {
- return LauncherVisibility.values()[launcherVisibility];
+ return LauncherVisibility.values()[launcherVisibility];
}
public void setLauncherVisibility(LauncherVisibility launcherVisibility) {
- this.launcherVisibility = launcherVisibility.ordinal();
+ this.launcherVisibility = launcherVisibility.ordinal();
Settings.save();
}
public GameDirType getGameDirType() {
- return GameDirType.values()[gameDirType];
+ return GameDirType.values()[gameDirType];
}
public void setGameDirType(GameDirType gameDirType) {
- this.gameDirType = gameDirType.ordinal();
+ this.gameDirType = gameDirType.ordinal();
Settings.save();
}
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
index 8a58f7899..286b8cbcc 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java
@@ -38,7 +38,7 @@ import org.jackhuang.hellominecraft.utils.VersionNumber;
* @author huangyuhui
*/
public final class Settings {
-
+
public static final String DEFAULT_PROFILE = "Default";
public static final File settingsFile = new File(IOUtils.currentDir(), "hmcl.json");
@@ -60,10 +60,9 @@ public final class Settings {
settings = initSettings();
if (!getVersions().containsKey(DEFAULT_PROFILE))
getVersions().put(DEFAULT_PROFILE, new Profile());
-
- for(Profile e : getVersions().values()) {
+
+ for (Profile e : getVersions().values())
e.checkFormat();
- }
UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer),
"hmcl", settings.isCheckUpdate(), () -> Main.invokeUpdate());
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
index f983d2882..b70067f16 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java
@@ -84,8 +84,8 @@ public final class MCUtils {
String ver = new String(tmp, i, j - i, "ASCII");
r.version = ver;
- r.type = file.getEntry("META-INF/MANIFEST.MF") == null ?
- MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK;
+ r.type = file.getEntry("META-INF/MANIFEST.MF") == null
+ ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK;
return r;
}
@@ -134,8 +134,8 @@ public final class MCUtils {
k++;
r.version = new String(tmp, k, i - k + 1);
}
- r.type = file.getEntry("META-INF/MANIFEST.MF") == null ?
- MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK;
+ r.type = file.getEntry("META-INF/MANIFEST.MF") == null
+ ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK;
return r;
}
@@ -295,11 +295,12 @@ public final class MCUtils {
String result = NetUtils.doGet(sourceType.getProvider().getVersionsListDownloadURL());
return MinecraftRemoteVersions.fromJson(result);
}
-
+
public static String profile = "{\"selectedProfile\": \"(Default)\",\"profiles\": {\"(Default)\": {\"name\": \"(Default)\"}},\"clientToken\": \"88888888-8888-8888-8888-888888888888\"}";
+
public static void tryWriteProfile(File gameDir) throws IOException {
File file = new File(gameDir, "launcher_profiles.json");
- if(!file.exists())
+ if (!file.exists())
FileUtils.writeStringToFile(file, profile);
}
}
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
index 30503fafe..3c348ee7a 100644
--- 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
@@ -30,20 +30,20 @@ public class AssetsIndex {
public static final String DEFAULT_ASSET_NAME = "legacy";
private Map objects;
private boolean virtual;
-
+
public AssetsIndex() {
- this.objects = new LinkedHashMap();
+ this.objects = new LinkedHashMap();
}
public Map getFileMap() {
- return this.objects;
+ return this.objects;
}
public Set getUniqueObjects() {
- return new HashSet(this.objects.values());
+ return new HashSet(this.objects.values());
}
public boolean isVirtual() {
- return this.virtual;
+ return this.virtual;
}
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java
index e37568e20..d4a2b61ab 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoader.java
@@ -54,21 +54,16 @@ public class AssetsLoader extends Thread {
for (int i = 0; i < contents.getLength(); i++) {
Node result = contents.item(i);
if (result.getNodeType() == Node.ELEMENT_NODE) {
- if (result.getNodeName().equalsIgnoreCase("Key")) {
+ if (result.getNodeName().equalsIgnoreCase("Key"))
ret.key = result.getTextContent();
- }
- if (result.getNodeName().equalsIgnoreCase("ETag")) {
+ if (result.getNodeName().equalsIgnoreCase("ETag"))
ret.eTag = result.getTextContent();
- }
- if (result.getNodeName().equalsIgnoreCase("LastModified")) {
+ if (result.getNodeName().equalsIgnoreCase("LastModified"))
ret.lastModified = result.getTextContent();
- }
- if (result.getNodeName().equalsIgnoreCase("Size")) {
+ if (result.getNodeName().equalsIgnoreCase("Size"))
ret.size = MathUtils.parseInt(result.getTextContent(), 0);
- }
- if (result.getNodeName().equalsIgnoreCase("StorageClass")) {
+ if (result.getNodeName().equalsIgnoreCase("StorageClass"))
ret.storageClass = result.getTextContent();
- }
}
}
return ret;
@@ -90,7 +85,7 @@ public class AssetsLoader extends Thread {
Node result = nodes.item(i);
if (result.getNodeType() == Node.ELEMENT_NODE && result.getNodeName().equals("Contents")) {
Contents c = modifyContents(result.getChildNodes());
- if(c.key != null)
+ if (c.key != null)
al.add(c);
}
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java
index c38d2df0a..598ccd1b7 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsLoaderListener.java
@@ -27,4 +27,4 @@ public interface AssetsLoaderListener {
void OnDone(ArrayList loader);
void OnFailed(Exception e);
-}
\ No newline at end of file
+}
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
index 45b4e3ffc..466f79caa 100644
--- 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
@@ -71,7 +71,7 @@ public class AssetsMojangLoader extends IAssetsHandler {
return;
}
AssetsIndex o;
- try {
+ try {
o = C.gson.fromJson(result, AssetsIndex.class);
} catch (Exception e) {
HMCLog.err("Failed to parse index json, please redownload it!", e);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java
index 73ef37f90..fcc85b6f1 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java
@@ -61,11 +61,11 @@ public class AssetsMojangOldLoader extends IAssetsHandler {
@Override
public boolean isVersionAllowed(String formattedVersion) {
VersionNumber r = VersionNumber.check(formattedVersion);
- if(r == null) return false;
- return VersionNumber.check("1.7.2").compareTo(r) >= 0 &&
- VersionNumber.check("1.6.0").compareTo(r) <= 0;
+ if (r == null) return false;
+ return VersionNumber.check("1.7.2").compareTo(r) >= 0
+ && VersionNumber.check("1.6.0").compareTo(r) <= 0;
}
-
+
@Override
public Task getDownloadTask(IDownloadProvider sourceType) {
return new AssetsTask(URL);
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
index 178ea4ad9..0ad31b66f 100644
--- 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
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.utils.assets;
* @author huangyuhui
*/
public class AssetsObject {
+
private String hash;
private long size;
@@ -28,26 +29,26 @@ public class AssetsObject {
}
public String getHash() {
- return this.hash;
+ return this.hash;
}
public long getSize() {
- return this.size;
+ return this.size;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- AssetsObject that = (AssetsObject) o;
- if (this.size != that.size) return false;
- return this.hash.equals(that.hash);
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AssetsObject that = (AssetsObject) o;
+ if (this.size != that.size) return false;
+ return this.hash.equals(that.hash);
}
@Override
public int hashCode() {
- int result = this.hash.hashCode();
- result = 31 * result + (int) (this.size ^ this.size >>> 32);
- return result;
+ int result = this.hash.hashCode();
+ result = 31 * result + (int) (this.size ^ this.size >>> 32);
+ return result;
}
}
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
index d8be93b35..8252d0f6d 100644
--- 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
@@ -21,8 +21,8 @@ package org.jackhuang.hellominecraft.launcher.utils.assets;
* @author huangyuhui
*/
public class Contents {
-
+
public String key, eTag, lastModified, storageClass;
public long size;
-
+
}
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
index 31e594c37..7ab2a32d1 100644
--- 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
@@ -62,7 +62,6 @@ public abstract class IAssetsHandler {
static {
assetsHandlers.add(new AssetsMojangLoader(C.i18n("assets.list.1_7_3_after")));
- //assetsHandlers.add(new AssetsMojangOldLoader(C.i18n("assets.list.1_6")));
}
/**
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
index e8d0fa5d7..d222e0453 100644
--- 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
@@ -30,28 +30,26 @@ public abstract class IAuthenticator {
public static final YggdrasilAuthenticator yggdrasilLogin;
public static final OfflineAuthenticator offlineLogin;
public static final SkinmeAuthenticator skinmeLogin;
- //public static final BestLogin bestLogin;
public static final List logins;
static {
- String clientToken = Settings.getInstance().getClientToken();
- logins = new ArrayList<>();
- logins.add(offlineLogin = new OfflineAuthenticator(clientToken));
- logins.add(yggdrasilLogin = new YggdrasilAuthenticator(clientToken));
- logins.add(skinmeLogin = new SkinmeAuthenticator(clientToken));
- //logins.add(bestLogin = new BestLogin(clientToken));
- yggdrasilLogin.onLoadSettings(Settings.getInstance().getYggdrasilConfig());
+ String clientToken = Settings.getInstance().getClientToken();
+ logins = new ArrayList<>();
+ logins.add(offlineLogin = new OfflineAuthenticator(clientToken));
+ logins.add(yggdrasilLogin = new YggdrasilAuthenticator(clientToken));
+ logins.add(skinmeLogin = new SkinmeAuthenticator(clientToken));
+ yggdrasilLogin.onLoadSettings(Settings.getInstance().getYggdrasilConfig());
- Runtime.getRuntime().addShutdownHook(new Thread(() ->
- Settings.getInstance().setYggdrasilConfig(yggdrasilLogin.onSaveSettings())
+ Runtime.getRuntime().addShutdownHook(new Thread(()
+ -> Settings.getInstance().setYggdrasilConfig(yggdrasilLogin.onSaveSettings())
));
}
protected String clientToken;
public IAuthenticator(String clientToken) {
- this.clientToken = clientToken;
+ this.clientToken = clientToken;
}
/**
@@ -74,11 +72,11 @@ public abstract class IAuthenticator {
* @return Will I hide password box?
*/
public boolean isHidePasswordBox() {
- return false;
+ return false;
}
public boolean isLoggedIn() {
- return false;
+ return false;
}
public void setRememberMe(boolean is) {
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
index cdb855f96..3a56df797 100644
--- 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
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.utils.auth;
* @author huangyuhui
*/
public final class LoginInfo {
+
public String username, password;
public LoginInfo(String username, String password) {
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
index 938033c9c..5c034c013 100644
--- 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
@@ -109,14 +109,14 @@ public final class UserProfileProvider {
public void setUserType(String userType) {
this.userType = userType;
}
-
+
private String username = "";
private String userId = "";
private String session = "";
private String accessToken = "";
private boolean success = false;
private String error = "";
- private String userProperties = "{}";
+ private String userProperties = "{}";
private String userPropertyMap = "{}";
private String otherInfo = "";
private String clientIdentifier = "";
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
index 568db6a20..693936bdf 100644
--- 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
@@ -23,17 +23,17 @@ import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionLi
* @author huangyuhui
*/
public class BMCLAPIDownloadProvider implements IDownloadProvider {
-
+
@Override
public InstallerVersionList getForgeInstaller() {
return org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl.ForgeBMCLVersionList.getInstance();
}
-
+
@Override
public InstallerVersionList getLiteLoaderInstaller() {
return org.jackhuang.hellominecraft.launcher.utils.installers.liteloader.LiteLoaderVersionList.getInstance();
}
-
+
@Override
public InstallerVersionList getOptiFineInstaller() {
return org.jackhuang.hellominecraft.launcher.utils.installers.optifine.bmcl.OptiFineBMCLVersionList.getInstance();
@@ -41,9 +41,9 @@ public class BMCLAPIDownloadProvider implements IDownloadProvider {
@Override
public InstallerVersionList getInstallerByType(String type) {
- if(type.equalsIgnoreCase("forge")) return getForgeInstaller();
- if(type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller();
- if(type.equalsIgnoreCase("optifine")) return getOptiFineInstaller();
+ if (type.equalsIgnoreCase("forge")) return getForgeInstaller();
+ if (type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller();
+ if (type.equalsIgnoreCase("optifine")) return getOptiFineInstaller();
return null;
}
@@ -64,17 +64,17 @@ public class BMCLAPIDownloadProvider implements IDownloadProvider {
@Override
public String getVersionsListDownloadURL() {
- return "http://bmclapi2.bangbang93.com/versions/versions.json";
+ return "http://bmclapi2.bangbang93.com/versions/versions.json";
}
@Override
public String getAssetsDownloadURL() {
- return "http://bmclapi2.bangbang93.com/assets/";
+ return "http://bmclapi2.bangbang93.com/assets/";
}
@Override
public boolean isAllowedToUseSelfURL() {
return false;
}
-
+
}
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
index 603922f8f..59b6a4f5e 100644
--- 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
@@ -23,12 +23,13 @@ import org.jackhuang.hellominecraft.C;
* @author huangyuhui
*/
public enum DownloadType {
+
Mojang(C.i18n("download.mojang"), new MojangDownloadProvider()),
BMCL(C.i18n("download.BMCL"), new BMCLAPIDownloadProvider());
-
+
private final String name;
private final IDownloadProvider provider;
-
+
DownloadType(String a, IDownloadProvider provider) {
name = a;
this.provider = provider;
@@ -37,7 +38,7 @@ public enum DownloadType {
public IDownloadProvider getProvider() {
return provider;
}
-
+
public String getName() {
return name;
}
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
index 2b749c9a6..4e466bb00 100644
--- 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
@@ -23,14 +23,24 @@ import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerVersionLi
* @author huangyuhui
*/
public interface IDownloadProvider {
+
InstallerVersionList getInstallerByType(String type);
+
InstallerVersionList getForgeInstaller();
+
InstallerVersionList getLiteLoaderInstaller();
+
InstallerVersionList getOptiFineInstaller();
+
String getLibraryDownloadURL();
+
String getVersionsDownloadURL();
+
String getIndexesDownloadURL();
+
String getVersionsListDownloadURL();
+
String getAssetsDownloadURL();
+
boolean isAllowedToUseSelfURL();
}
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
index 9ec14947f..e53044f90 100644
--- 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
@@ -41,9 +41,9 @@ public class MojangDownloadProvider implements IDownloadProvider {
@Override
public InstallerVersionList getInstallerByType(String type) {
- if(type.equalsIgnoreCase("forge")) return getForgeInstaller();
- if(type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller();
- if(type.equalsIgnoreCase("optifine")) return getOptiFineInstaller();
+ if (type.equalsIgnoreCase("forge")) return getForgeInstaller();
+ if (type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller();
+ if (type.equalsIgnoreCase("optifine")) return getOptiFineInstaller();
return null;
}
@@ -76,5 +76,5 @@ public class MojangDownloadProvider implements IDownloadProvider {
public boolean isAllowedToUseSelfURL() {
return true;
}
-
+
}
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
index 9890fc5a6..f383b61f4 100644
--- 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
@@ -25,6 +25,7 @@ import org.jackhuang.hellominecraft.launcher.utils.installers.forge.Install;
* @author huangyuhui
*/
public class InstallProfile {
+
@SerializedName("install")
public Install install;
@SerializedName("versionInfo")
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
index 12971ef08..72dcc7829 100644
--- 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
@@ -25,33 +25,40 @@ import org.jackhuang.hellominecraft.utils.functions.Consumer;
* @author huangyuhui
*/
public abstract class InstallerVersionList implements Consumer {
+
/**
* Refresh installer versions list from the downloaded content.
+ *
* @param versions Minecraft versions you need to refresh
* @throws java.lang.Exception
*/
public abstract void refreshList(String[] versions) throws Exception;
+
public abstract String getName();
+
public abstract List getVersions(String mcVersion);
-
+
public static class InstallerVersion implements Comparable {
- public String selfVersion, mcVersion;
- public String installer, universal;
+
+ public String selfVersion, mcVersion;
+ public String installer, universal;
public String changelog;
- public InstallerVersion(String selfVersion, String mcVersion) {
- this.selfVersion = selfVersion;
- this.mcVersion = mcVersion;
- }
+ public InstallerVersion(String selfVersion, String mcVersion) {
+ this.selfVersion = selfVersion;
+ this.mcVersion = mcVersion;
+ }
@Override
public int compareTo(InstallerVersion o) {
return selfVersion.compareTo(o.selfVersion);
}
}
-
+
public static class InstallerVersionComparator implements Comparator {
+
public static final InstallerVersionComparator INSTANCE = new InstallerVersionComparator();
+
@Override
public int compare(InstallerVersion o1, InstallerVersion o2) {
return o2.compareTo(o1);
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
index 8b4b1c9b4..27fd35352 100644
--- 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
@@ -48,8 +48,8 @@ public class ForgeInstaller extends Task {
public IMinecraftProvider mp;
public ForgeInstaller(IMinecraftProvider mp, File forgeInstaller) {
- this.gameDir = mp.getBaseFolder();
- this.forgeInstaller = forgeInstaller;
+ this.gameDir = mp.getBaseFolder();
+ this.forgeInstaller = forgeInstaller;
this.mp = mp;
}
@@ -64,17 +64,15 @@ public class ForgeInstaller extends Task {
InstallProfile profile = gson.fromJson(content, InstallProfile.class);
File from = new File(gameDir, "versions" + File.separator + profile.install.minecraft);
- if(!from.exists()) {
- if(MessageBox.Show(C.i18n("install.no_version_if_intall")) == MessageBox.YES_OPTION) {
- if(!mp.install(profile.install.minecraft, Settings.getInstance().getDownloadSource())) {
+ if (!from.exists()) {
+ if (MessageBox.Show(C.i18n("install.no_version_if_intall")) == MessageBox.YES_OPTION) {
+ if (!mp.install(profile.install.minecraft, Settings.getInstance().getDownloadSource()))
setFailReason(new RuntimeException(C.i18n("install.no_version")));
- }
- } else {
+ } else
setFailReason(new RuntimeException(C.i18n("install.no_version")));
- }
return false;
}
-
+
File to = new File(gameDir, "versions" + File.separator + profile.install.target);
to.mkdirs();
@@ -100,7 +98,7 @@ public class ForgeInstaller extends Task {
bos.close();
}
return true;
- } catch(IOException | JsonSyntaxException e) {
+ } catch (IOException | JsonSyntaxException e) {
setFailReason(e);
return false;
}
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
index 41bbdba1f..ee0b5edb0 100644
--- 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
@@ -26,12 +26,12 @@ import org.jackhuang.hellominecraft.launcher.utils.installers.PackMinecraftInsta
* @author huangyuhui
*/
public class ForgeOldInstaller {
-
+
public static void install(String destMinecraftJar, String srcMinecraftJar, String forgeUniversal) throws IOException {
ArrayList al = new ArrayList<>();
al.add(srcMinecraftJar);
al.add(forgeUniversal);
new PackMinecraftInstaller(al, new File(destMinecraftJar)).install();
}
-
+
}
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
index 9fe78b7db..1110be42c 100644
--- 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
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.utils.installers.forge;
* @author huangyuhui
*/
public class Install {
+
public String profileName;
public String target;
public String path;
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java
index a01930092..8c116cb18 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java
@@ -49,21 +49,21 @@ public class ForgeBMCLVersionList extends InstallerVersionList {
@Override
public void refreshList(String[] neededVersions) throws Exception {
- if(versionMap == null) {
+ if (versionMap == null) {
versionMap = new HashMap<>();
versions = new ArrayList<>();
}
-
+
for (String x : neededVersions) {
- if(versionMap.containsKey(x)) continue;
+ if (versionMap.containsKey(x)) continue;
String s = NetUtils.doGet("http://bmclapi2.bangbang93.com/forge/minecraft/" + x);
- if (s == null) {
+ if (s == null)
continue;
- }
try {
- root = C.gson.fromJson(s, new TypeToken>(){}.getType());
+ root = C.gson.fromJson(s, new TypeToken>() {
+ }.getType());
for (ForgeVersion v : root) {
InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.minecraft));
@@ -74,7 +74,7 @@ public class ForgeBMCLVersionList extends InstallerVersionList {
al.add(iv);
versions.add(iv);
}
- } catch(JsonSyntaxException e) {
+ } catch (JsonSyntaxException e) {
HMCLog.warn("Failed to parse BMCLAPI2 response.", e);
}
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java
index 5c4cc58f7..d6c1d9507 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeVersion.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.utils.installers.forge.bmcl;
* @author huangyuhui
*/
public class ForgeVersion {
+
public String time, minecraft, version, _id, __v;
public Downloads downloads;
}
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java
index 8d74212fc..4ded15798 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersion.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.utils.installers.forge.vanilla;
* @author huangyuhui
*/
public class MinecraftForgeVersion {
+
public String branch, mcversion, jobver, version;
public int build;
public double modified;
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java
index 36519f620..4b10f00ba 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java
@@ -32,71 +32,75 @@ import org.jackhuang.hellominecraft.utils.NetUtils;
* @author huangyuhui
*/
public class MinecraftForgeVersionList extends InstallerVersionList {
+
private static MinecraftForgeVersionList instance;
+
public static MinecraftForgeVersionList getInstance() {
- if(instance == null)
- instance = new MinecraftForgeVersionList();
- return instance;
+ if (instance == null)
+ instance = new MinecraftForgeVersionList();
+ return instance;
}
public MinecraftForgeVersionRoot root;
public Map> versionMap;
public List versions;
-
+
@Override
public void refreshList(String[] needed) throws Exception {
String s = NetUtils.doGet(C.URL_FORGE_LIST);
- if(root!=null) return;
-
- root = C.gson.fromJson(s, MinecraftForgeVersionRoot.class);
-
- versionMap = new HashMap>();
- versions = new ArrayList();
-
- for(Map.Entry arr : root.mcversion.entrySet()) {
- String mcver = StrUtils.formatVersion(arr.getKey());
- ArrayList al = new ArrayList();
- for(int num : arr.getValue()) {
- MinecraftForgeVersion v = root.number.get(num);
- InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.mcversion));
- for(String[] f : v.files) {
+ if (root != null) return;
- String ver = v.mcversion + "-" + v.version;
- if(!StrUtils.isBlank(v.branch)) {
- ver = ver + "-" + v.branch;
- }
- String filename = root.artifact + "-" + ver + "-" + f[1] + "." + f[0];
- String url = root.webpath + "/" + ver + "/" + filename;
- if(f[1].equals("installer")) {
- iv.installer = url;
- } else if(f[1].equals("universal")) {
- iv.universal = url;
- } else if(f[1].equals("changelog")) {
- iv.changelog = url;
- }
- }
- if(StrUtils.isBlank(iv.installer) || StrUtils.isBlank(iv.universal)) {
- continue;
- }
+ root = C.gson.fromJson(s, MinecraftForgeVersionRoot.class);
+
+ versionMap = new HashMap<>();
+ versions = new ArrayList<>();
+
+ for (Map.Entry arr : root.mcversion.entrySet()) {
+ String mcver = StrUtils.formatVersion(arr.getKey());
+ ArrayList al = new ArrayList<>();
+ for (int num : arr.getValue()) {
+ MinecraftForgeVersion v = root.number.get(num);
+ InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.mcversion));
+ for (String[] f : v.files) {
+
+ String ver = v.mcversion + "-" + v.version;
+ if (!StrUtils.isBlank(v.branch))
+ ver = ver + "-" + v.branch;
+ String filename = root.artifact + "-" + ver + "-" + f[1] + "." + f[0];
+ String url = root.webpath + "/" + ver + "/" + filename;
+ switch (f[1]) {
+ case "installer":
+ iv.installer = url;
+ break;
+ case "universal":
+ iv.universal = url;
+ break;
+ case "changelog":
+ iv.changelog = url;
+ break;
+ }
+ }
+ if (StrUtils.isBlank(iv.installer) || StrUtils.isBlank(iv.universal))
+ continue;
Collections.sort(al, new InstallerVersionNewerComparator());
- al.add(iv);
+ al.add(iv);
versions.add(iv);
- }
-
- versionMap.put(StrUtils.formatVersion(mcver), al);
- }
-
+ }
+
+ versionMap.put(StrUtils.formatVersion(mcver), al);
+ }
+
Collections.sort(versions, new InstallerVersionComparator());
}
@Override
public List getVersions(String mcVersion) {
if (versions == null || versionMap == null) return null;
- if(StrUtils.isBlank(mcVersion)) return versions;
- List c = versionMap.get(mcVersion);
- if(c == null) return versions;
+ if (StrUtils.isBlank(mcVersion)) return versions;
+ List c = versionMap.get(mcVersion);
+ if (c == null) return versions;
Collections.sort(c, InstallerVersionComparator.INSTANCE);
- return c;
+ return c;
}
@Override
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java
index ae97b88cf..76753df30 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionRoot.java
@@ -23,6 +23,7 @@ import java.util.Map;
* @author huangyuhui
*/
public class MinecraftForgeVersionRoot {
+
public String artifact, webpath, adfly, homepage, name;
public Map branches, mcversion;
public Map promos;
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
index 2ae464ce3..0706b859a 100644
--- 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
@@ -51,25 +51,25 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrat
@Override
public boolean executeTask() {
- if(profile == null || profile.getSelectedMinecraftVersion() == null) {
+ if (profile == null || profile.getSelectedMinecraftVersion() == null) {
setFailReason(new RuntimeException(C.i18n("install.no_version")));
return false;
}
- if(pre.size() != 1 && installer == null) throw new IllegalStateException("No registered previous task.");
- if(installer == null)
+ if (pre.size() != 1 && installer == null) throw new IllegalStateException("No registered previous task.");
+ if (installer == null)
installer = pre.get(pre.size() - 1).getResult();
try {
MinecraftVersion mv = (MinecraftVersion) profile.getSelectedMinecraftVersion().clone();
mv.inheritsFrom = mv.id;
mv.jar = mv.jar == null ? mv.id : mv.jar;
mv.libraries = new ArrayList(Arrays.asList(version.libraries));
-
+
mv.libraries.add(0, new MinecraftLibrary("com.mumfrey:liteloader:" + version.selfVersion));
FileUtils.copyFile(installer, new File(profile.getCanonicalGameDir(), "libraries/com/mumfrey/liteloader/" + version.selfVersion + "/liteloader-" + version.selfVersion + ".jar"));
mv.id += "-LiteLoader" + version.selfVersion;
- if(!mv.mainClass.startsWith("net.minecraft.launchwrapper.")) {
+ if (!mv.mainClass.startsWith("net.minecraft.launchwrapper.")) {
mv.mainClass = "net.minecraft.launchwrapper.Launch";
mv.minecraftArguments += " --tweakClass " + version.tweakClass;
}
@@ -78,7 +78,7 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrat
File json = new File(folder, mv.id + ".json");
HMCLog.log("Creating new version profile..." + mv.id + ".json");
FileUtils.write(json, C.gsonPrettyPrinting.toJson(mv));
-
+
return true;
} catch (Exception e) {
setFailReason(e);
@@ -90,8 +90,9 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrat
public String getInfo() {
return C.i18n("install.liteloader.install");
}
-
+
ArrayList> pre = new ArrayList<>();
+
@Override
public Task registerPreviousResult(PreviousResult pr) {
pre.add(pr);
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
index 19b342c8c..cc92dad20 100644
--- 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
@@ -23,5 +23,6 @@ import java.util.Map;
* @author huangyuhui
*/
public class LiteLoaderMCVersions {
+
public Map> artefacts;
}
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
index 1ee8d62da..086e00fa3 100644
--- 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
@@ -23,6 +23,7 @@ import org.jackhuang.hellominecraft.launcher.version.MinecraftLibrary;
* @author huangyuhui
*/
public class LiteLoaderVersion {
+
public String tweakClass, file, version, md5, timestamp;
public MinecraftLibrary[] libraries;
}
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
index 6423fd827..ee87bd41e 100644
--- 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
@@ -35,12 +35,13 @@ import org.jackhuang.hellominecraft.utils.StrUtils;
* @author huangyuhui
*/
public class LiteLoaderVersionList extends InstallerVersionList {
+
private static LiteLoaderVersionList instance;
+
public static LiteLoaderVersionList getInstance() {
- if(instance == null) {
- instance = new LiteLoaderVersionList();
- }
- return instance;
+ if (instance == null)
+ instance = new LiteLoaderVersionList();
+ return instance;
}
public LiteLoaderVersionsRoot root;
@@ -50,56 +51,57 @@ public class LiteLoaderVersionList extends InstallerVersionList {
@Override
public void refreshList(String[] needed) throws Exception {
String s = NetUtils.doGet(C.URL_LITELOADER_LIST);
- if(root != null) return;
-
- root = C.gson.fromJson(s, LiteLoaderVersionsRoot.class);
-
- versionMap = new HashMap<>();
- versions = new ArrayList<>();
-
- for(Map.Entry arr : root.versions.entrySet()) {
- ArrayList al = new ArrayList<>();
+ if (root != null) return;
+
+ root = C.gson.fromJson(s, LiteLoaderVersionsRoot.class);
+
+ versionMap = new HashMap<>();
+ versions = new ArrayList<>();
+
+ for (Map.Entry arr : root.versions.entrySet()) {
+ ArrayList al = new ArrayList<>();
LiteLoaderMCVersions mcv = arr.getValue();
- for(Map.Entry entry : mcv.artefacts.get("com.mumfrey:liteloader").entrySet()) {
- if("latest".equals(entry.getKey())) continue;
+ for (Map.Entry entry : mcv.artefacts.get("com.mumfrey:liteloader").entrySet()) {
+ if ("latest".equals(entry.getKey())) continue;
LiteLoaderVersion v = entry.getValue();
- LiteLoaderInstallerVersion iv = new LiteLoaderInstallerVersion(v.version, StrUtils.formatVersion(arr.getKey()));
- iv.universal = "http://dl.liteloader.com/versions/com/mumfrey/liteloader/" + arr.getKey() + "/" + v.file;
- iv.tweakClass = v.tweakClass;
- iv.libraries = Arrays.copyOf(v.libraries, v.libraries.length);
+ LiteLoaderInstallerVersion iv = new LiteLoaderInstallerVersion(v.version, StrUtils.formatVersion(arr.getKey()));
+ iv.universal = "http://dl.liteloader.com/versions/com/mumfrey/liteloader/" + arr.getKey() + "/" + v.file;
+ iv.tweakClass = v.tweakClass;
+ iv.libraries = Arrays.copyOf(v.libraries, v.libraries.length);
iv.installer = "http://dl.liteloader.com/redist/" + iv.mcVersion + "/liteloader-installer-" + iv.selfVersion.replace("_", "-") + ".jar";
- al.add(iv);
+ al.add(iv);
versions.add(iv);
- }
+ }
Collections.sort(al, new InstallerVersionNewerComparator());
- versionMap.put(StrUtils.formatVersion(arr.getKey()), al);
- }
-
+ versionMap.put(StrUtils.formatVersion(arr.getKey()), al);
+ }
+
Collections.sort(versions, InstallerVersionComparator.INSTANCE);
}
@Override
public List getVersions(String mcVersion) {
if (versions == null || versionMap == null) return null;
- if(StrUtils.isBlank(mcVersion)) return versions;
- List c = versionMap.get(mcVersion);
- if(c == null) return versions;
+ if (StrUtils.isBlank(mcVersion)) return versions;
+ List c = versionMap.get(mcVersion);
+ if (c == null) return versions;
Collections.sort(c, InstallerVersionComparator.INSTANCE);
- return c;
+ return c;
}
@Override
public String getName() {
return "LiteLoader - LiteLoader Official Site(By: Mumfrey)";
}
-
- public static class LiteLoaderInstallerVersion extends InstallerVersion {
- public MinecraftLibrary[] libraries;
- public String tweakClass;
- public LiteLoaderInstallerVersion(String selfVersion, String mcVersion) {
- super(selfVersion, mcVersion);
- }
+ public static class LiteLoaderInstallerVersion extends InstallerVersion {
+
+ public MinecraftLibrary[] libraries;
+ public String tweakClass;
+
+ public LiteLoaderInstallerVersion(String selfVersion, String mcVersion) {
+ super(selfVersion, mcVersion);
+ }
}
-
+
}
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
index c6eabe568..4350fbffa 100644
--- 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
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.launcher.utils.installers.liteloader;
* @author huangyuhui
*/
public class LiteLoaderVersionsMeta {
+
public String description, authors, url;
}
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
index 159713cc2..488cb64c5 100644
--- 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
@@ -23,6 +23,7 @@ import java.util.Map;
* @author huangyuhui
*/
public class LiteLoaderVersionsRoot {
+
public Map versions;
public LiteLoaderVersionsMeta meta;
}
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
index 34eac4efa..4d9f6a3fe 100644
--- 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
@@ -59,7 +59,7 @@ public class OptiFineBMCLVersionList extends InstallerVersionList {
if (s == null) return;
root = C.gson.fromJson(s, new TypeToken>() {
}.getType());
- for(OptiFineVersion v : root) {
+ for (OptiFineVersion v : root) {
v.mirror = v.mirror.replace("http://optifine.net/http://optifine.net/", "http://optifine.net/");
if (StrUtils.isBlank(v.mcver)) {
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
index 30686722b..16a40c7e1 100644
--- 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
@@ -28,8 +28,9 @@ import org.jackhuang.hellominecraft.utils.NetUtils;
* @author huangyuhui
*/
public class OptiFineDownloadFormatter extends Task implements PreviousResult {
+
String url, result;
-
+
public OptiFineDownloadFormatter(String url) {
this.url = url;
}
@@ -40,7 +41,7 @@ public class OptiFineDownloadFormatter extends Task implements PreviousResult root = new ArrayList();
public Map> versionMap;
@@ -59,51 +60,46 @@ public class OptiFineVersionList extends InstallerVersionList {
@Override
public void refreshList(String[] sss) throws Exception {
String content = NetUtils.doGet("http://optifine.net/downloads");
- if(versions != null) return;
- versionMap = new HashMap<>();
- versions = new ArrayList<>();
-
+ if (versions != null) return;
+ versionMap = new HashMap<>();
+ versions = new ArrayList<>();
+
content = content.replace(" ", " ").replace(">", ">").replace("<", "<");
-
+
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
Document doc = db.parse(new StringBufferInputStream(content));
Element r = doc.getDocumentElement();
NodeList tables = r.getElementsByTagName("table");
- for(int i = 0; i < tables.getLength(); i++) {
- Element e = (Element)tables.item(i);
- if("downloadTable".equals(e.getAttribute("class"))) {
+ for (int i = 0; i < tables.getLength(); i++) {
+ Element e = (Element) tables.item(i);
+ if ("downloadTable".equals(e.getAttribute("class"))) {
NodeList tr = e.getElementsByTagName("tr");
- for(int k = 0; k < tr.getLength(); k++) {
- NodeList downloadLine = ((Element)tr.item(k)).getElementsByTagName("td");
+ for (int k = 0; k < tr.getLength(); k++) {
+ NodeList downloadLine = ((Element) tr.item(k)).getElementsByTagName("td");
OptiFineVersion v = new OptiFineVersion();
- for(int j = 0; j < downloadLine.getLength(); j++) {
- Element td = (Element)downloadLine.item(j);
- if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineMirror")) {
- v.mirror = ((Element)td.getElementsByTagName("a").item(0)).getAttribute("href");
- }
- if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineDownload")) {
- v.dl = ((Element)td.getElementsByTagName("a").item(0)).getAttribute("href");
- }
- if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineDate")) {
+ for (int j = 0; j < downloadLine.getLength(); j++) {
+ Element td = (Element) downloadLine.item(j);
+ if (StrUtils.startsWith(td.getAttribute("class"), "downloadLineMirror"))
+ v.mirror = ((Element) td.getElementsByTagName("a").item(0)).getAttribute("href");
+ if (StrUtils.startsWith(td.getAttribute("class"), "downloadLineDownload"))
+ v.dl = ((Element) td.getElementsByTagName("a").item(0)).getAttribute("href");
+ if (StrUtils.startsWith(td.getAttribute("class"), "downloadLineDate"))
v.date = td.getTextContent();
- }
- if(StrUtils.startsWith(td.getAttribute("class"), "downloadLineFile")) {
+ if (StrUtils.startsWith(td.getAttribute("class"), "downloadLineFile"))
v.ver = td.getTextContent();
- }
}
- if(StrUtils.isBlank(v.mcver)) {
+ if (StrUtils.isBlank(v.mcver)) {
Pattern p = Pattern.compile("OptiFine (.*?) ");
Matcher m = p.matcher(v.ver);
- while(m.find()) v.mcver = StrUtils.formatVersion(m.group(1));
+ while (m.find()) v.mcver = StrUtils.formatVersion(m.group(1));
}
InstallerVersion iv = new InstallerVersion(v.ver, StrUtils.formatVersion(v.mcver));
iv.installer = iv.universal = v.mirror;
root.add(v);
versions.add(iv);
-
List ivl = ArrayUtils.tryGetMapWithList(versionMap, StrUtils.formatVersion(v.mcver));
ivl.add(iv);
}
@@ -112,10 +108,10 @@ public class OptiFineVersionList extends InstallerVersionList {
} catch (ParserConfigurationException | SAXException | IOException | DOMException ex) {
throw new RuntimeException(ex);
}
-
+
Collections.sort(versions, InstallerVersionComparator.INSTANCE);
}
-
+
@Override
public String getName() {
return "OptiFine - OptiFine Official Site";
@@ -124,11 +120,11 @@ public class OptiFineVersionList extends InstallerVersionList {
@Override
public List getVersions(String mcVersion) {
if (versions == null || versionMap == null) return null;
- if(StrUtils.isBlank(mcVersion)) return versions;
- List c = versionMap.get(mcVersion);
- if(c == null) return versions;
+ if (StrUtils.isBlank(mcVersion)) return versions;
+ List c = versionMap.get(mcVersion);
+ if (c == null) return versions;
Collections.sort(c, InstallerVersionComparator.INSTANCE);
- return c;
+ return c;
}
-
+
}
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
index 27ea3b305..fac71dedf 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Extract.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Extract.java
@@ -23,6 +23,7 @@ import java.util.Arrays;
* @author huangyuhui
*/
public class Extract extends Object implements Cloneable {
+
String[] exclude;
@Override
@@ -31,6 +32,5 @@ public class Extract extends Object implements Cloneable {
e.exclude = exclude == null ? null : Arrays.copyOf(exclude, exclude.length);
return e;
}
-
-
+
}
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
index 02e61b9be..d2a554070 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/GameDirType.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/GameDirType.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.version;
* @author huangyuhui
*/
public enum GameDirType {
+
ROOT_FOLDER,
VERSION_FOLDER;
}
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
index 70eb589e6..f56ad4578 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/IMinecraftLibrary.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/IMinecraftLibrary.java
@@ -24,33 +24,39 @@ import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType;
* @author huangyuhui
*/
public abstract class IMinecraftLibrary implements Cloneable {
-
+
public String name;
+
public IMinecraftLibrary(String name) {
- this.name = name;
+ this.name = name;
}
-
+
public abstract boolean isRequiredToUnzip();
+
public abstract String[] getDecompressExtractRules();
+
public abstract void init();
+
public abstract boolean allow();
+
public abstract File getFilePath(File gameDir);
+
public abstract String getDownloadURL(String urlBase, DownloadType downloadType);
-
+
@Override
public boolean equals(Object obj) {
- if(obj instanceof MinecraftLibrary)
- return ((MinecraftLibrary) obj).name.equals(name);
- return false;
+ if (obj instanceof MinecraftLibrary)
+ return ((MinecraftLibrary) obj).name.equals(name);
+ return false;
}
@Override
public int hashCode() {
- int hash = 3;
- hash = 89 * hash + (this.name != null ? this.name.hashCode() : 0);
- return hash;
+ int hash = 3;
+ hash = 89 * hash + (this.name != null ? this.name.hashCode() : 0);
+ return hash;
}
-
+
@Override
public abstract Object clone();
}
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
index 8f3b41b1e..2ee5279a7 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftClassicVersion.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftClassicVersion.java
@@ -29,46 +29,46 @@ import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType;
public class MinecraftClassicVersion extends MinecraftVersion {
public MinecraftClassicVersion() {
- super();
+ super();
- mainClass = "net.minecraft.client.Minecraft";
- id = "Classic";
- type = "release";
- processArguments = assets = releaseTime = time = null;
- minecraftArguments = "${auth_player_name} ${auth_session} --workDir ${game_directory}";
- libraries = new ArrayList<>();
- libraries.add(new MinecraftOldLibrary("lwjgl"));
- libraries.add(new MinecraftOldLibrary("jinput"));
- libraries.add(new MinecraftOldLibrary("lwjgl_util"));
+ mainClass = "net.minecraft.client.Minecraft";
+ id = "Classic";
+ type = "release";
+ processArguments = assets = releaseTime = time = null;
+ minecraftArguments = "${auth_player_name} ${auth_session} --workDir ${game_directory}";
+ libraries = new ArrayList<>();
+ libraries.add(new MinecraftOldLibrary("lwjgl"));
+ libraries.add(new MinecraftOldLibrary("jinput"));
+ libraries.add(new MinecraftOldLibrary("lwjgl_util"));
}
@Override
public Object clone() {
- return super.clone();
+ return super.clone();
}
@Override
public MinecraftVersion resolve(IMinecraftProvider manager, Set resolvedSoFar, DownloadType sourceType) {
- return this;
+ return this;
}
@Override
public File getJar(File gameDir) {
- return new File(gameDir, "bin/minecraft.jar");
+ return new File(gameDir, "bin/minecraft.jar");
}
@Override
public File getJar(File gameDir, String suffix) {
- return new File(gameDir, "bin/minecraft" + suffix + ".jar");
+ return new File(gameDir, "bin/minecraft" + suffix + ".jar");
}
@Override
public File getNatives(File gameDir) {
- return new File(gameDir, "bin/natives");
+ return new File(gameDir, "bin/natives");
}
-
+
@Override
public boolean isAllowedToUnpackNatives() {
- return false;
+ return false;
}
}
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
index 569dabb1b..a31a9212c 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java
@@ -31,28 +31,28 @@ import org.jackhuang.hellominecraft.utils.StrUtils;
public class MinecraftLibrary extends IMinecraftLibrary {
public ArrayList rules;
- public String url, formatted=null;
+ public String url, formatted = null;
//public boolean serverreq=true, clientreq=true;
public String[] checksums;
public Natives natives;
public Extract extract;
public MinecraftLibrary(String name) {
- super(name);
+ super(name);
}
public MinecraftLibrary(ArrayList rules, String url, String[] checksums, Natives natives, String name, Extract extract) {
- super(name);
- this.rules = rules == null ? null : (ArrayList) rules.clone();
- this.url = url;
- this.checksums = checksums == null ? null : Arrays.copyOf(checksums, checksums.length);
- this.natives = natives == null ? null : (Natives)natives.clone();
- this.extract = extract == null ? null :(Extract)extract.clone();
+ super(name);
+ this.rules = rules == null ? null : (ArrayList) rules.clone();
+ this.url = url;
+ this.checksums = checksums == null ? null : Arrays.copyOf(checksums, checksums.length);
+ this.natives = natives == null ? null : (Natives) natives.clone();
+ this.extract = extract == null ? null : (Extract) extract.clone();
}
-
+
@Override
public Object clone() {
- return new MinecraftLibrary(rules, url, checksums, natives, name, extract);
+ return new MinecraftLibrary(rules, url, checksums, natives, name, extract);
}
/**
@@ -62,73 +62,68 @@ public class MinecraftLibrary extends IMinecraftLibrary {
*/
@Override
public boolean allow() {
- boolean flag = false;
- if (rules == null || rules.isEmpty()) {
- flag = true;
- } else {
- for (Rules r : rules) {
- if (r.action.equals("disallow")) {
- if (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString()))) {
- flag = false;
- break;
- }
- } else {
- if (r.os == null || (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString())))) {
- flag = true;
- }
- }
- }
- }
- return flag;
+ boolean flag = false;
+ if (rules == null || rules.isEmpty())
+ flag = true;
+ else
+ for (Rules r : rules)
+ if (r.action.equals("disallow")) {
+ if (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString()))) {
+ flag = false;
+ break;
+ }
+ } else
+ if (r.os == null || (r.os != null && (StrUtils.isBlank(r.os.name) || r.os.name.equalsIgnoreCase(OS.os().toString()))))
+ flag = true;
+ return flag;
}
private String formatArch(String nati) {
- return nati == null ? "" : nati.replace("${arch}", Platform.getPlatform().getBit());
+ return nati == null ? "" : nati.replace("${arch}", Platform.getPlatform().getBit());
}
private String getNative() {
- OS os = OS.os();
- if (os == OS.WINDOWS) {
- return formatArch(natives.windows);
- } else if (os == OS.OSX) {
- return formatArch(natives.osx);
- } else {
- return formatArch(natives.linux);
- }
+ OS os = OS.os();
+ if (os == OS.WINDOWS)
+ return formatArch(natives.windows);
+ else if (os == OS.OSX)
+ return formatArch(natives.osx);
+ else
+ return formatArch(natives.linux);
}
@Override
public boolean isRequiredToUnzip() {
- return natives != null && allow();
+ return natives != null && allow();
}
@Override
public void init() {
- String str = name;
- String[] s = str.split(":");
- str = s[0];
- str = str.replace('.', File.separatorChar);
- if (natives == null) {
- str += File.separator + s[1] + File.separator + s[2]
- + File.separator + s[1] + '-' + s[2] + ".jar";
- } else {
- str += File.separator + s[1] + File.separator + s[2]
- + File.separator + s[1] + '-' + s[2] + '-';
- str += getNative();
- str += ".jar";
- }
- formatted = str;
+ String str = name;
+ String[] s = str.split(":");
+ str = s[0];
+ str = str.replace('.', File.separatorChar);
+ if (natives == null)
+ str += File.separator + s[1] + File.separator + s[2]
+ + File.separator + s[1] + '-' + s[2] + ".jar";
+ else {
+ str += File.separator + s[1] + File.separator + s[2]
+ + File.separator + s[1] + '-' + s[2] + '-';
+ str += getNative();
+ str += ".jar";
+ }
+ formatted = str;
}
@Override
public File getFilePath(File gameDir) {
- return new File(gameDir, "libraries" + File.separatorChar + formatted);
+ return new File(gameDir, "libraries" + File.separatorChar + formatted);
}
@Override
public String getDownloadURL(String urlBase, DownloadType downloadType) {
- if(StrUtils.isNotBlank(url)&&downloadType.getProvider().isAllowedToUseSelfURL()) urlBase = this.url;
- return urlBase + formatted.replace('\\', '/');
+ if (StrUtils.isNotBlank(url) && downloadType.getProvider().isAllowedToUseSelfURL()) urlBase = this.url;
+ return urlBase + formatted.replace('\\', '/');
}
@Override
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
index efbc0e0d9..5da811836 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftOldLibrary.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftOldLibrary.java
@@ -26,12 +26,12 @@ import org.jackhuang.hellominecraft.launcher.utils.download.DownloadType;
public class MinecraftOldLibrary extends MinecraftLibrary {
public MinecraftOldLibrary(String name) {
- super(name);
+ super(name);
}
@Override
public boolean isRequiredToUnzip() {
- return false;
+ return false;
}
@Override
@@ -40,22 +40,22 @@ public class MinecraftOldLibrary extends MinecraftLibrary {
@Override
public boolean allow() {
- return true;
+ return true;
}
@Override
public File getFilePath(File gameDir) {
- return new File(gameDir, "bin/" + name + ".jar");
+ return new File(gameDir, "bin/" + name + ".jar");
}
@Override
public Object clone() {
- return new MinecraftOldLibrary(name);
+ return new MinecraftOldLibrary(name);
}
@Override
public String getDownloadURL(String urlBase, DownloadType downloadType) {
- return null;
+ return null;
}
-
+
}
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
index 6dfde2a98..463aed73b 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java
@@ -33,7 +33,7 @@ import org.jackhuang.hellominecraft.utils.ArrayUtils;
public class MinecraftVersion implements Cloneable, Comparable {
public String minecraftArguments, mainClass, time, id, type, processArguments,
- releaseTime, assets, jar, inheritsFrom;
+ releaseTime, assets, jar, inheritsFrom;
public int minimumLauncherVersion;
public boolean hidden;
@@ -43,82 +43,79 @@ public class MinecraftVersion implements Cloneable, Comparable
}
public MinecraftVersion(String minecraftArguments, String mainClass, String time, String id, String type, String processArguments, String releaseTime, String assets, String jar, String inheritsFrom, int minimumLauncherVersion, List libraries, boolean hidden) {
- this();
- this.minecraftArguments = minecraftArguments;
- this.mainClass = mainClass;
- this.time = time;
- this.id = id;
- this.type = type;
- this.processArguments = processArguments;
- this.releaseTime = releaseTime;
- this.assets = assets;
- this.jar = jar;
- this.inheritsFrom = inheritsFrom;
- this.minimumLauncherVersion = minimumLauncherVersion;
+ this();
+ this.minecraftArguments = minecraftArguments;
+ this.mainClass = mainClass;
+ this.time = time;
+ this.id = id;
+ this.type = type;
+ this.processArguments = processArguments;
+ this.releaseTime = releaseTime;
+ this.assets = assets;
+ this.jar = jar;
+ this.inheritsFrom = inheritsFrom;
+ this.minimumLauncherVersion = minimumLauncherVersion;
this.hidden = hidden;
- if(libraries == null) this.libraries = new ArrayList<>();
- else {
- this.libraries = new ArrayList<>(libraries.size());
- for (IMinecraftLibrary library : libraries) {
- this.libraries.add((MinecraftLibrary) library.clone());
- }
- }
+ if (libraries == null) this.libraries = new ArrayList<>();
+ else {
+ this.libraries = new ArrayList<>(libraries.size());
+ for (IMinecraftLibrary library : libraries)
+ this.libraries.add((MinecraftLibrary) library.clone());
+ }
}
@Override
public Object clone() {
- return new MinecraftVersion(minecraftArguments, mainClass, time, id, type, processArguments, releaseTime, assets, jar, inheritsFrom, minimumLauncherVersion, libraries, hidden);
+ return new MinecraftVersion(minecraftArguments, mainClass, time, id, type, processArguments, releaseTime, assets, jar, inheritsFrom, minimumLauncherVersion, libraries, hidden);
}
public MinecraftVersion resolve(IMinecraftProvider manager, DownloadType sourceType) {
- return resolve(manager, new HashSet<>(), sourceType);
+ return resolve(manager, new HashSet<>(), sourceType);
}
protected MinecraftVersion resolve(IMinecraftProvider manager, Set resolvedSoFar, DownloadType sourceType) {
- if (inheritsFrom == null) {
- return this;
- }
- if (!resolvedSoFar.add(id)) {
- throw new IllegalStateException("Circular dependency detected.");
- }
+ if (inheritsFrom == null)
+ return this;
+ if (!resolvedSoFar.add(id))
+ throw new IllegalStateException("Circular dependency detected.");
- MinecraftVersion parent = manager.getVersionById(inheritsFrom);
- if(parent == null) {
- if(!manager.install(inheritsFrom, sourceType)) return this;
- parent = manager.getVersionById(inheritsFrom);
- }
- parent = parent.resolve(manager, resolvedSoFar, sourceType);
- MinecraftVersion result = new MinecraftVersion(
- this.minecraftArguments != null ? this.minecraftArguments : parent.minecraftArguments,
- this.mainClass != null ? this.mainClass : parent.mainClass,
- this.time, this.id, this.type, parent.processArguments, this.releaseTime,
- this.assets != null ? this.assets : parent.assets,
- this.jar != null ? this.jar : parent.jar,
- null, parent.minimumLauncherVersion,
- this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden);
-
- return result;
+ MinecraftVersion parent = manager.getVersionById(inheritsFrom);
+ if (parent == null) {
+ if (!manager.install(inheritsFrom, sourceType)) return this;
+ parent = manager.getVersionById(inheritsFrom);
+ }
+ parent = parent.resolve(manager, resolvedSoFar, sourceType);
+ MinecraftVersion result = new MinecraftVersion(
+ this.minecraftArguments != null ? this.minecraftArguments : parent.minecraftArguments,
+ this.mainClass != null ? this.mainClass : parent.mainClass,
+ this.time, this.id, this.type, parent.processArguments, this.releaseTime,
+ this.assets != null ? this.assets : parent.assets,
+ this.jar != null ? this.jar : parent.jar,
+ null, parent.minimumLauncherVersion,
+ this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden);
+
+ return result;
}
public File getJar(File gameDir) {
- String jarId = this.jar == null ? this.id : this.jar;
- return new File(gameDir, "versions/" + jarId + "/" + jarId + ".jar");
+ String jarId = this.jar == null ? this.id : this.jar;
+ return new File(gameDir, "versions/" + jarId + "/" + jarId + ".jar");
}
public File getJar(File gameDir, String suffix) {
- String jarId = this.jar == null ? this.id : this.jar;
- return new File(gameDir, "versions/" + jarId + "/" + jarId + suffix + ".jar");
+ String jarId = this.jar == null ? this.id : this.jar;
+ return new File(gameDir, "versions/" + jarId + "/" + jarId + suffix + ".jar");
}
public File getNatives(File gameDir) {
- return new File(gameDir, "versions/" + id + "/" + id
- + "-natives");
+ return new File(gameDir, "versions/" + id + "/" + id
+ + "-natives");
}
-
+
public boolean isAllowedToUnpackNatives() {
- return true;
+ return true;
}
-
+
public String getAssets() {
return assets == null ? AssetsIndex.DEFAULT_ASSET_NAME : assets;
}
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
index df9056264..d9ee67a2c 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java
@@ -118,12 +118,10 @@ public final class MinecraftVersionManager extends IMinecraftProvider {
if (StrUtils.formatVersion(id) == null) {
if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_cannot_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
FileUtils.deleteDirectoryQuietly(dir);
- } else if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_needs_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) {
- if (!refreshJson(id)) {
+ } else if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_needs_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
+ if (!refreshJson(id))
if (MessageBox.Show(C.i18n("launcher.versions_json_not_matched_cannot_auto_completion", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
FileUtils.deleteDirectoryQuietly(dir);
- }
- }
continue;
}
MinecraftVersion mcVersion;
@@ -215,10 +213,10 @@ public final class MinecraftVersionManager extends IMinecraftProvider {
@Override
public File getRunDirectory(String id) {
switch (profile.getGameDirType()) {
- case VERSION_FOLDER:
- return new File(baseFolder, "versions/" + id + "/");
- default:
- return baseFolder;
+ case VERSION_FOLDER:
+ return new File(baseFolder, "versions/" + id + "/");
+ default:
+ return baseFolder;
}
}
@@ -226,7 +224,7 @@ public final class MinecraftVersionManager extends IMinecraftProvider {
public List getDownloadLibraries(DownloadType downloadType) {
ArrayList downloadLibraries = new ArrayList<>();
MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(this, Settings.getInstance().getDownloadSource());
- if(v.libraries != null) {
+ if (v.libraries != null)
for (IMinecraftLibrary l : v.libraries) {
l.init();
if (l.allow()) {
@@ -239,7 +237,6 @@ public final class MinecraftVersionManager extends IMinecraftProvider {
}
}
}
- }
return downloadLibraries;
}
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
index 928d3a5e4..f882dd4e7 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Natives.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Natives.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.version;
* @author huangyuhui
*/
public class Natives implements Cloneable {
+
public String windows, osx, linux;
@Override
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
index 0c01859d1..933684e60 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/OS.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/OS.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.launcher.version;
* @author huangyuhui
*/
public class OS {
+
public String version, name;
}
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
index d2c28aeae..6309dbba4 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Rules.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/Rules.java
@@ -21,6 +21,7 @@ package org.jackhuang.hellominecraft.launcher.version;
* @author huangyuhui
*/
public class Rules {
+
public String action;
public OS os;
}
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
index 561d1fa52..7552c9c96 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java
@@ -63,9 +63,8 @@ public class DraggableFrame extends JFrame
@Override
public void mouseDragged(MouseEvent e) {
- if ((e.getModifiersEx() & 0x400) != 0) {
+ if ((e.getModifiersEx() & 0x400) != 0)
setLocation(e.getXOnScreen() - this.dragGripX, e.getYOnScreen() - this.dragGripY);
- }
}
@Override
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
index e80c3e997..ed536c9cb 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java
@@ -914,7 +914,7 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() {
private void btnRemoveProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoveProfileActionPerformed
if (profile == null) return;
if (MessageBox.Show(C.i18n("ui.message.sure_remove", profile.getName()), MessageBox.YES_NO_OPTION) == MessageBox.NO_OPTION) return;
- if(Settings.delVersion(profile)) {
+ if (Settings.delVersion(profile)) {
cboProfiles.removeItem(profile.getName());
profile = Settings.getOneProfile();
if (profile != null) {
@@ -925,12 +925,12 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() {
}//GEN-LAST:event_btnRemoveProfileActionPerformed
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()) || getProfile() == null)
return;
loadMinecraftVersion((String) cboVersions.getSelectedItem());
versionChanged(getProfile(), (String) cboVersions.getSelectedItem());
-
+
getProfile().setSelectedMinecraftVersion(cboVersions.getSelectedItem().toString());
cboVersions.setToolTipText(cboVersions.getSelectedItem().toString());
Settings.save();
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
index adfccb852..610aae381 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java
@@ -48,7 +48,7 @@ public class HeaderTab extends JLabel
return this.isActive;
}
- public void setIsActive(boolean isActive) {
+ public final void setIsActive(boolean isActive) {
this.isActive = isActive;
setOpaque(isActive);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
index 8f9bb75ea..ce7c14187 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java
@@ -37,7 +37,7 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
*/
public LauncherSettingsPanel() {
initComponents();
-
+
txtBackgroundPath.setText(Settings.getInstance().getBgpath());
txtProxyHost.setText(Settings.getInstance().getProxyHost());
txtProxyPort.setText(Settings.getInstance().getProxyPort());
@@ -46,7 +46,7 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
cboDownloadSource.setSelectedIndex(Settings.getInstance().getDownloadType());
cboTheme.setSelectedIndex(Settings.getInstance().getTheme());
chkEnableShadow.setSelected(Settings.getInstance().isEnableShadow());
-
+
setBackground(Color.white);
setOpaque(true);
}
@@ -259,9 +259,8 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
fc.setDialogTitle(C.i18n("launcher.choose_bgpath"));
fc.setMultiSelectionEnabled(false);
fc.showOpenDialog(this);
- if (fc.getSelectedFile() == null) {
+ if (fc.getSelectedFile() == null)
return;
- }
try {
String path = fc.getSelectedFile().getCanonicalPath();
path = IOUtils.removeLastSeparator(path);
@@ -289,7 +288,7 @@ public class LauncherSettingsPanel extends javax.swing.JPanel {
private void cboThemeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboThemeItemStateChanged
Settings.getInstance().setTheme(cboTheme.getSelectedIndex());
- if(MainFrame.instance != null)
+ if (MainFrame.instance != null)
MainFrame.instance.reloadColor();
}//GEN-LAST:event_cboThemeItemStateChanged
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
index c83d51786..395015865 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java
@@ -86,8 +86,7 @@ public final class MainFrame extends DraggableFrame {
if (enableShadow)
try {
- //AWTUtilities.setWindowOpaque(this, false);
- setBackground(new Color(0,0,0,0));
+ setBackground(new Color(0, 0, 0, 0));
getRootPane().setBorder(border = new DropShadowBorder(borderColor, 4));
} catch (Throwable ex) {
HMCLog.err("Failed to set window transparent.", ex);
@@ -250,14 +249,14 @@ public final class MainFrame extends DraggableFrame {
this.mainTab.setIsActive(true);
this.mainPanel.onSelected();
} else if (tabName.equalsIgnoreCase("game")) {
- if(gamePanel == null) {
+ if (gamePanel == null) {
gamePanel = new GameSettingsPanel();
gamePanelWrapper.add(gamePanel);
}
this.gameTab.setIsActive(true);
this.gamePanel.onSelected();
} else if (tabName.equalsIgnoreCase("launcher")) {
- if(launcherPanel == null) {
+ if (launcherPanel == null) {
launcherPanel = new LauncherSettingsPanel();
launcherPanelWrapper.add(launcherPanel);
}
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
index 7b6d81657..459f02675 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java
@@ -457,7 +457,7 @@ public class MainPagePanel extends javax.swing.JPanel {
SwingUtilities.invokeLater(() -> {
MessageBox.Show(C.i18n("mainwindow.no_version"));
showedNoVersion = true;
- });
+ });
} else {
for (MinecraftVersion mcVersion : getCurrentProfile().getMinecraftProvider().getVersions()) {
if (mcVersion.hidden) continue;
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
index 2c59be043..7068c14a8 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java
@@ -25,34 +25,35 @@ import java.util.ResourceBundle;
* @author huangyuhui
*/
public final class C {
+
public static final Gson gsonPrettyPrinting = new GsonBuilder().setPrettyPrinting().create();
public static final Gson gson = new Gson();
-
+
public static final ResourceBundle I18N = ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N");
-
+
//http://repo1.maven.org/maven2
-
public static final String URL_PUBLISH = "http://www.mcbbs.net/thread-142335-1-1.html";
public static final String URL_TIEBA = "http://tieba.baidu.com/f?kw=hellominecraftlauncher";
public static final String URL_GITHUB = "https://github.com/huanghongxun/HMCL/issues";
public static final String URL_MINECRAFTFORUM = "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1265720-hello-minecraft-launcher-1-9-3-mc-1-7-4-auto";
-
+
public static final String FILE_MINECRAFT_VERSIONS = "versions";
-
+
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
-
+
public static final String URL_FORGE_LIST = "http://files.minecraftforge.net/maven/net/minecraftforge/forge/json";
public static final String URL_LITELOADER_LIST = "http://dl.liteloader.com/versions/versions.json";
-
- private C(){}
-
+
+ private C() {
+ }
+
public static String i18n(String a, Object... format) {
try {
return String.format(C.I18N.getString(a), format);
- } catch(Exception e) {
+ } catch (Exception e) {
HMCLog.warn("Failed to read localization lang: " + a, e);
return a;
}
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java
index 699a0346f..09488cb12 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/HMCLog.java
@@ -18,33 +18,32 @@ package org.jackhuang.hellominecraft;
import org.jackhuang.hellominecraft.logging.logger.Logger;
-
/**
*
* @author huangyuhui
*/
public class HMCLog {
-
+
public static Logger logger = new Logger("HMC");
-
+
public static void log(String message) {
logger.info(message);
}
-
+
public static void warn(String message) {
logger.warn(message);
}
-
+
public static void warn(String msg, Throwable t) {
logger.warn(msg, t);
}
-
+
public static void err(String msg) {
logger.error(msg);
}
-
+
public static void err(String msg, Throwable t) {
logger.error(msg, t);
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java
index 2840014dd..1c0f9edcf 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DoingDoneListener.java
@@ -21,19 +21,25 @@ package org.jackhuang.hellominecraft.tasks;
* @author huangyuhui
*/
public interface DoingDoneListener {
+
/**
* Task done.
- * @param k
+ *
+ * @param k
*/
void onDone(K k);
+
/**
* Before task executing.
- * @param k
+ *
+ * @param k
*/
void onDoing(K k);
+
/**
* Task failed.
- * @param k
+ *
+ * @param k
*/
void onFailed(K k);
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java
index 0dff7483c..47720b7a9 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ParallelTask.java
@@ -24,6 +24,7 @@ import java.util.HashSet;
* @author huangyuhui
*/
public class ParallelTask extends Task {
+
Collection dependsTask = new HashSet<>();
@Override
@@ -40,9 +41,9 @@ public class ParallelTask extends Task {
public Collection getDependTasks() {
return dependsTask;
}
-
+
public void addDependsTask(Task t) {
dependsTask.add(t);
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java
index 1ab24c587..df03af137 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java
@@ -21,8 +21,9 @@ package org.jackhuang.hellominecraft.tasks;
* @author huangyuhui
*/
public abstract class ProgressProvider {
+
protected ProgressProviderListener ppl;
-
+
public ProgressProvider setProgressProviderListener(ProgressProviderListener p) {
ppl = p;
return this;
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java
index b6f5f2cf4..e5a94d0a1 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java
@@ -21,7 +21,10 @@ package org.jackhuang.hellominecraft.tasks;
* @author huangyuhui
*/
public interface ProgressProviderListener {
+
void setProgress(int prog, int max);
+
void setStatus(String sta);
+
void onProgressProviderDone();
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java
index 4159b78bd..018c2042d 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java
@@ -23,28 +23,36 @@ import java.util.Collection;
* @author huangyuhui
*/
public abstract class Task extends ProgressProvider {
-
+
/**
* Run in a new thread(packed in TaskList).
+ *
* @return is task finished sucessfully.
*/
public abstract boolean executeTask();
-
+
/**
- * if this func returns false, TaskList will force abort the thread.
- * run in main thread.
+ * if this func returns false, TaskList will force abort the thread. run in
+ * main thread.
+ *
* @return is aborted.
*/
- public boolean abort() { return false; }
-
- public Throwable getFailReason() { return failReason; }
+ public boolean abort() {
+ return false;
+ }
+
+ public Throwable getFailReason() {
+ return failReason;
+ }
protected Throwable failReason = null;
+
protected void setFailReason(Throwable s) {
failReason = s;
}
-
+
protected String tag;
protected boolean parallelExecuting;
+
public Task setTag(String tag) {
this.tag = tag;
return this;
@@ -57,9 +65,14 @@ public abstract class Task extends ProgressProvider {
public void setParallelExecuting(boolean parallelExecuting) {
this.parallelExecuting = parallelExecuting;
}
-
+
public abstract String getInfo();
-
- public Collection getDependTasks() { return null; }
- public Collection getAfterTasks() { return null; }
+
+ public Collection getDependTasks() {
+ return null;
+ }
+
+ public Collection getAfterTasks() {
+ return null;
+ }
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java
index 686e8ef70..3fc98d8e6 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskInfo.java
@@ -23,14 +23,14 @@ package org.jackhuang.hellominecraft.tasks;
public abstract class TaskInfo extends Task {
String info;
-
+
public TaskInfo(String info) {
this.info = info;
}
-
+
@Override
public String getInfo() {
return info;
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java
index 288a3bf23..022f4b5db 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java
@@ -87,9 +87,8 @@ public class TaskList extends Thread {
static final Set taskPool = Collections.synchronizedSet(new HashSet());
private void processTasks(Collection c) {
- if (c == null) {
+ if (c == null)
return;
- }
this.totTask += c.size();
Set runningThread = Collections.synchronizedSet(new HashSet());
for (Task t2 : c) {
@@ -99,46 +98,41 @@ public class TaskList extends Thread {
runningThread.add(thread);
thread.start();
}
- while (!runningThread.isEmpty()) {
+ while (!runningThread.isEmpty())
try {
- if(this.isInterrupted()) return;
+ if (this.isInterrupted()) return;
Thread.sleep(1);
} catch (InterruptedException ex) {
HMCLog.warn("Failed to sleep task thread", ex);
}
- }
-
+
}
private void executeTask(Task t) {
- if (!shouldContinue || t == null) {
+ if (!shouldContinue || t == null)
return;
- }
processTasks(t.getDependTasks());
HMCLog.log("Executing task: " + t.getInfo());
- for (DoingDoneListener d : taskListener) {
+ for (DoingDoneListener d : taskListener)
d.onDoing(t);
- }
if (t.executeTask()) {
HMCLog.log("Task finished: " + t.getInfo());
- for (DoingDoneListener d : taskListener) {
+ for (DoingDoneListener d : taskListener)
d.onDone(t);
- }
processTasks(t.getAfterTasks());
} else {
HMCLog.err("Task failed: " + t.getInfo(), t.getFailReason());
- for (DoingDoneListener d : taskListener) {
+ for (DoingDoneListener d : taskListener)
d.onFailed(t);
- }
}
}
@Override
public void run() {
Thread.currentThread().setName("TaskList");
-
+
threadPool.clear();
for (Task taskQueue1 : taskQueue)
executeTask(taskQueue1);
@@ -153,10 +147,10 @@ public class TaskList extends Thread {
public void abort() {
shouldContinue = false;
- while(!threadPool.isEmpty())
- synchronized(threadPool) {
+ while (!threadPool.isEmpty())
+ synchronized (threadPool) {
InvokeThread it = threadPool.iterator().next();
- if(!it.task.abort()) it.interrupt();
+ if (!it.task.abort()) it.interrupt();
threadPool.remove(it);
}
this.interrupt();
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java
index da7197b95..e76918edd 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnable.java
@@ -21,7 +21,9 @@ package org.jackhuang.hellominecraft.tasks;
* @author huangyuhui
*/
public class TaskRunnable extends TaskInfo {
+
private final Runnable r;
+
public TaskRunnable(String info, Runnable r) {
super(info);
this.r = r;
@@ -32,10 +34,10 @@ public class TaskRunnable extends TaskInfo {
try {
r.run();
return true;
- } catch(Throwable t) {
+ } catch (Throwable t) {
setFailReason(t);
return false;
}
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java
index d5cadc20c..df9173ac9 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java
@@ -170,7 +170,7 @@ public class TaskWindow extends javax.swing.JDialog
}// //GEN-END:initComponents
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
- if(MessageBox.Show(C.i18n("operation.confirm_stop"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
+ if (MessageBox.Show(C.i18n("operation.confirm_stop"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
this.dispose();
}//GEN-LAST:event_btnCancelActionPerformed
@@ -230,7 +230,7 @@ public class TaskWindow extends javax.swing.JDialog
@Override
public void onFailed(Task task) {
- failReasons.add(task.getInfo() + ": " + (task.getFailReason() == null ? "No exception" : task.getFailReason().getLocalizedMessage()));
+ failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage()));
pgsTotal.setMaximum(taskList.taskCount());
pgsTotal.setValue(pgsTotal.getValue() + 1);
SwingUtils.replaceLast(lstDownload, task.getFailReason());
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
index 8d97c19ad..444a1c1ae 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/DefaultPreviousResult.java
@@ -21,16 +21,17 @@ package org.jackhuang.hellominecraft.tasks.communication;
* @author huangyuhui
* @param the type of result.
*/
-public class DefaultPreviousResult implements PreviousResult{
+public class DefaultPreviousResult implements PreviousResult {
+
T a;
public DefaultPreviousResult(T a) {
this.a = a;
}
-
+
@Override
public T getResult() {
return a;
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java
index 0f00f5b5e..94584a6d4 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java
@@ -27,89 +27,79 @@ import java.util.Map;
public class ArrayUtils {
public static boolean isEmpty(T[] array) {
- return array == null || array.length <= 0;
+ return array == null || array.length <= 0;
}
public static boolean isNotEmpty(T[] array) {
- return !isEmpty(array);
+ return !isEmpty(array);
}
public static boolean contains(T[] array, T objectToFind) {
- return indexOf(array, objectToFind) != -1;
+ return indexOf(array, objectToFind) != -1;
}
public static int indexOf(T[] array, T valueToFind) {
- return indexOf(array, valueToFind, 0);
+ return indexOf(array, valueToFind, 0);
}
public static int indexOf(T[] array, T valueToFind, int startIndex) {
- if (array == null) {
- return -1;
- }
- if (startIndex < 0) {
- startIndex = 0;
- }
- for (int i = startIndex; i < array.length; i++) {
- if (valueToFind.equals(array[i])) {
- return i;
- }
- }
- return -1;
+ if (array == null)
+ return -1;
+ if (startIndex < 0)
+ startIndex = 0;
+ for (int i = startIndex; i < array.length; i++)
+ if (valueToFind.equals(array[i]))
+ return i;
+ return -1;
}
public static int lastIndexOf(T[] array, T valueToFind) {
- return lastIndexOf(array, valueToFind, 2147483647);
+ return lastIndexOf(array, valueToFind, 2147483647);
}
public static int lastIndexOf(T[] array, T valueToFind, int startIndex) {
- if (array == null) {
- return -1;
- }
- if (startIndex < 0) {
- return -1;
- }
- if (startIndex >= array.length) {
- startIndex = array.length - 1;
- }
- for (int i = startIndex; i >= 0; i--) {
- if (valueToFind.equals(array[i])) {
- return i;
- }
- }
- return -1;
+ if (array == null)
+ return -1;
+ if (startIndex < 0)
+ return -1;
+ if (startIndex >= array.length)
+ startIndex = array.length - 1;
+ for (int i = startIndex; i >= 0; i--)
+ if (valueToFind.equals(array[i]))
+ return i;
+ return -1;
}
public static ArrayList merge(List a, List b) {
- ArrayList al = new ArrayList(a.size() + b.size());
- al.addAll(a); al.addAll(b);
- return al;
+ ArrayList al = new ArrayList(a.size() + b.size());
+ al.addAll(a);
+ al.addAll(b);
+ return al;
}
-
+
public static K getEnd(K[] k) {
- if(k == null) return null;
- else return k[k.length-1];
+ if (k == null) return null;
+ else return k[k.length - 1];
}
-
+
public static List tryGetMapWithList(Map map, String key) {
- List l = (List)map.get(key);
- if(l == null)
- map.put(key, l = new ArrayList());
- return l;
+ List l = (List) map.get(key);
+ if (l == null)
+ map.put(key, l = new ArrayList());
+ return l;
}
public static int matchArray(T[] a, T[] b) {
for (int i = 0; i < a.length - b.length; i++) {
int j = 1;
for (int k = 0; k < b.length; k++) {
- if (b[k].equals(a[(i + k)])) {
+ if (b[k].equals(a[(i + k)]))
continue;
- }
j = 0;
break;
}
- if (j != 0) {
+ if (j != 0)
return i;
- }
}
return -1;
}
@@ -118,15 +108,13 @@ public class ArrayUtils {
for (int i = 0; i < a.length - b.length; i++) {
int j = 1;
for (int k = 0; k < b.length; k++) {
- if (b[k] == a[(i + k)]) {
+ if (b[k] == a[(i + k)])
continue;
- }
j = 0;
break;
}
- if (j != 0) {
+ if (j != 0)
return i;
- }
}
return -1;
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java
index 305e98921..07b386237 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java
@@ -27,16 +27,19 @@ import java.util.Iterator;
* @author huangyuhui
*/
public final class CollectionUtils {
+
public static void forEach(Collection coll, Consumer p) {
- for(T t : coll) p.accept(t);
+ for (T t : coll) p.accept(t);
}
-
+
public static Collection sortOut(Collection coll, Predicate p) {
ArrayList newColl = new ArrayList<>();
- forEach(coll, t -> { if(p.apply(t)) newColl.add(t); });
+ forEach(coll, t -> {
+ if (p.apply(t)) newColl.add(t);
+ });
return newColl;
}
-
+
public static boolean removeIf(Collection coll, Predicate p) {
boolean removed = false;
final Iterator each = coll.iterator();
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java
index 1b48a207a..46b7748fd 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/DoubleOutputStream.java
@@ -30,73 +30,60 @@ public class DoubleOutputStream extends OutputStream {
private boolean c = true;
public DoubleOutputStream(OutputStream paramOutputStream1, OutputStream paramOutputStream2) {
- this(paramOutputStream1, paramOutputStream2, true);
+ this(paramOutputStream1, paramOutputStream2, true);
}
private DoubleOutputStream(OutputStream paramOutputStream1, OutputStream paramOutputStream2, boolean paramBoolean) {
- this.a = paramOutputStream1;
- this.b = paramOutputStream2;
- this.c = true;
+ this.a = paramOutputStream1;
+ this.b = paramOutputStream2;
+ this.c = true;
}
@Override
public final void write(byte[] arr, int off, int len) throws IOException {
- if (this.a != null) {
- this.a.write(arr, off, len);
- }
- if (this.b != null) {
- this.b.write(arr, off, len);
- }
- if (this.c) {
- flush();
- }
+ if (this.a != null)
+ this.a.write(arr, off, len);
+ if (this.b != null)
+ this.b.write(arr, off, len);
+ if (this.c)
+ flush();
}
@Override
public final void write(byte[] paramArrayOfByte) throws IOException {
- if (this.a != null) {
- this.a.write(paramArrayOfByte);
- }
- if (this.b != null) {
- this.b.write(paramArrayOfByte);
- }
- if (this.c) {
- flush();
- }
+ if (this.a != null)
+ this.a.write(paramArrayOfByte);
+ if (this.b != null)
+ this.b.write(paramArrayOfByte);
+ if (this.c)
+ flush();
}
@Override
public final void write(int paramInt) throws IOException {
- if (this.a != null) {
- this.a.write(paramInt);
- }
- if (this.b != null) {
- this.b.write(paramInt);
- }
- if (this.c) {
- flush();
- }
+ if (this.a != null)
+ this.a.write(paramInt);
+ if (this.b != null)
+ this.b.write(paramInt);
+ if (this.c)
+ flush();
}
@Override
public final void close() throws IOException {
- flush();
+ flush();
- if (this.a != null) {
- this.a.close();
- }
- if (this.b != null) {
- this.b.close();
- }
+ if (this.a != null)
+ this.a.close();
+ if (this.b != null)
+ this.b.close();
}
@Override
public final void flush() throws IOException {
- if (this.a != null) {
- this.a.flush();
- }
- if (this.b != null) {
- this.b.flush();
- }
+ if (this.a != null)
+ this.a.flush();
+ if (this.b != null)
+ this.b.flush();
}
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java
index 2a66be050..50a98accf 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Event.java
@@ -22,5 +22,6 @@ package org.jackhuang.hellominecraft.utils;
* @param EventArgs
*/
public interface Event {
+
boolean call(Object sender, T t);
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java
index 07332caa8..dd8f0133b 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java
@@ -24,27 +24,28 @@ import java.util.HashSet;
* @param EventArgs
*/
public class EventHandler {
+
HashSet> handlers;
Object sender;
-
+
public EventHandler(Object sender) {
handlers = new HashSet<>();
this.sender = sender;
}
-
+
public void register(Event t) {
handlers.add(t);
}
-
+
public void unregister(Event t) {
handlers.remove(t);
}
-
+
public boolean execute(T x) {
boolean flag = true;
- for(Event t : handlers)
- if(!t.call(sender, x)) flag = false;
+ for (Event t : handlers)
+ if (!t.call(sender, x)) flag = false;
return flag;
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java
index d64aa9594..5055ea923 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LauncherPrintStream.java
@@ -30,19 +30,18 @@ public class LauncherPrintStream extends PrintStream {
private final ArrayList> printListeners = new ArrayList<>();
public LauncherPrintStream(OutputStream paramOutputStream) {
- super(paramOutputStream);
+ super(paramOutputStream);
}
@Override
public final void println(String paramString) {
- super.println(paramString);
+ super.println(paramString);
- for (Consumer a1 : printListeners) {
- a1.accept(paramString);
- }
+ for (Consumer a1 : printListeners)
+ a1.accept(paramString);
}
public final void addPrintListener(Consumer paraml) {
- this.printListeners.add(paraml);
+ this.printListeners.add(paraml);
}
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java
index 98c02eede..192597eb4 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java
@@ -38,16 +38,16 @@ public class MathUtils {
return false;
}
}
-
+
public static int parseMemory(String s, int def) {
try {
return Integer.parseInt(s);
} catch (Exception e) {
int a = parseInt(s.substring(0, s.length() - 1), def);
- if(s.endsWith("g")) return a * 1024;
- else if(s.endsWith("k")) return a / 1024;
+ if (s.endsWith("g")) return a * 1024;
+ else if (s.endsWith("k")) return a / 1024;
else return a;
}
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java
index 96bbbb89f..092330cbc 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java
@@ -34,40 +34,38 @@ import org.jackhuang.hellominecraft.HMCLog;
* @author huang
*/
public final class NetUtils {
-
+
public static byte[] getBytesFromStream(InputStream is) throws IOException {
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
byte[] arrayOfByte1 = new byte[1024];
int i;
- while ((i = is.read(arrayOfByte1)) >= 0) {
+ while ((i = is.read(arrayOfByte1)) >= 0)
localByteArrayOutputStream.write(arrayOfByte1, 0, i);
- }
is.close();
return localByteArrayOutputStream.toByteArray();
}
-
+
public static String getStreamContent(InputStream is) throws IOException {
return getStreamContent(is, DEFAULT_CHARSET);
}
-
+
public static String getStreamContent(InputStream is, String encoding)
- throws IOException {
+ throws IOException {
String result;
try (BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding))) {
result = "";
String line;
- while ((line = br.readLine()) != null) {
+ while ((line = br.readLine()) != null)
result += line + "\n";
- }
}
- if(result.length() < 1) return "";
- else return result.substring(0, result.length() - 1);
+ if (result.length() < 1) return "";
+ else return result.substring(0, result.length() - 1);
}
-
+
public static String doGet(String url, String encoding) throws IOException {
return getStreamContent(new URL(url).openConnection().getInputStream());
}
-
+
public static String doGet(String url) throws IOException {
return doGet(url, DEFAULT_CHARSET);
}
@@ -85,16 +83,15 @@ public final class NetUtils {
public static String sendGetRequest(String endpoint,
String requestParameters) {
String result = null;
- if (endpoint.startsWith("http://")) {
+ if (endpoint.startsWith("http://"))
// Send a GET request to the servlet
try {
// Construct data
StringBuilder data = new StringBuilder();
// Send data
String urlStr = endpoint;
- if (requestParameters != null && requestParameters.length() > 0) {
+ if (requestParameters != null && requestParameters.length() > 0)
urlStr += "?" + requestParameters;
- }
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
@@ -110,7 +107,6 @@ public final class NetUtils {
} catch (Exception e) {
HMCLog.warn("Failed to send get request.", e);
}
- }
return result;
}
@@ -164,7 +160,7 @@ public final class NetUtils {
}
private static final String METHOD_POST = "POST";
private static final String DEFAULT_CHARSET = "UTF-8";
-
+
public static URL constantURL(String url) {
try {
return new URL(url);
@@ -173,15 +169,14 @@ public final class NetUtils {
return null;
}
}
-
+
public static URL concatenateURL(URL url, String query) {
- try {
- if ((url.getQuery() != null) && (url.getQuery().length() > 0)) {
- return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("&").append(query).toString());
- }
- return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("?").append(query).toString());
- } catch (MalformedURLException ex) {
- throw new IllegalArgumentException("Could not concatenate given URL with GET arguments!", ex);
- }
+ try {
+ if ((url.getQuery() != null) && (url.getQuery().length() > 0))
+ return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("&").append(query).toString());
+ return new URL(url.getProtocol(), url.getHost(), url.getPort(), new StringBuilder().append(url.getFile()).append("?").append(query).toString());
+ } catch (MalformedURLException ex) {
+ throw new IllegalArgumentException("Could not concatenate given URL with GET arguments!", ex);
+ }
}
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java
index ea39e6b7f..74699f6f9 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Pair.java
@@ -25,6 +25,7 @@ import java.util.Map;
* @param V Type
*/
public class Pair implements Map.Entry {
+
public K key;
public V value;
@@ -49,5 +50,5 @@ public class Pair implements Map.Entry {
this.value = value;
return t;
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java
deleted file mode 100644
index eb452a678..000000000
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ReflectUtils.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.utils;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- *
- * @author huangyuhui
- */
-public class ReflectUtils {
-
- public static Set extends Class>> getClasses(Class c) {
- HashSet set = new HashSet();
- set.addAll(Arrays.asList(c.getInterfaces()));
- while(c != Object.class) {
- set.add(c);
- c = c.getSuperclass();
- }
- return set;
- }
-
-}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java
index eba624fd7..7d35d1482 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java
@@ -32,6 +32,14 @@ import org.jackhuang.hellominecraft.HMCLog;
*/
public class SwingUtils {
+ /**
+ * Make DefaultTableModel by overriding getColumnClass and isCellEditable of DefaultTableModel.
+ *
+ * @param titleA The title of each column.
+ * @param typesA The type of each column value.
+ * @param canEditA Is column editable?
+ * @return
+ */
public static DefaultTableModel makeDefaultTableModel(String[] titleA, final Class[] typesA, final boolean[] canEditA) {
return new javax.swing.table.DefaultTableModel(
new Object[][]{},
@@ -51,6 +59,10 @@ public class SwingUtils {
};
}
+ /**
+ * Open URL by java.awt.Desktop
+ * @param link
+ */
public static void openLink(URI link) {
try {
java.awt.Desktop.getDesktop().browse(link);
@@ -58,40 +70,61 @@ public class SwingUtils {
HMCLog.warn("Failed to open link: " + link, e);
}
}
-
+
+ /**
+ * Move the cursor to the end of TextArea.
+ * @param tf the TextArea
+ */
public static void moveEnd(JTextArea tf) {
int position = tf.getText().length();
tf.setCaretPosition(position);
}
-
+
+ /**
+ * Move the cursor to the end of ScrollPane.
+ * @param pane the ScrollPane
+ */
public static void moveEnd(JScrollPane pane) {
JScrollBar bar = pane.getVerticalScrollBar();
bar.setValue(bar.getMaximum());
}
-
+
+ /**
+ * Get the DefaultListModel from JList.
+ * @param list
+ * @return Forcely Type casted to DefaultListModel
+ */
public static DefaultListModel getDefaultListModel(JList list) {
- return (DefaultListModel)list.getModel();
+ return (DefaultListModel) list.getModel();
}
-
+
+ /**
+ * Append new element to JList
+ * @param list the JList
+ * @param element the Element
+ */
public static void appendLast(JList list, Object element) {
getDefaultListModel(list).addElement(element);
}
-
+
public static void replaceLast(JList list, Object element) {
DefaultListModel model = getDefaultListModel(list);
- model.set(model.getSize()-1, element);
+ model.set(model.getSize() - 1, element);
}
-
+
public static void clear(JList list) {
list.setModel(new DefaultListModel());
}
-
+
+ /**
+ * Clear the JTable
+ * @param table JTable with DefaultTableModel.
+ */
public static void clearDefaultTable(JTable table) {
- DefaultTableModel model = (DefaultTableModel)table.getModel();
- while(model.getRowCount() > 0) {
+ DefaultTableModel model = (DefaultTableModel) table.getModel();
+ while (model.getRowCount() > 0)
model.removeRow(0);
- }
table.updateUI();
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java
index b7c36df93..18bd77947 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java
@@ -26,6 +26,7 @@ import org.jackhuang.hellominecraft.HMCLog;
* @author huangyuhui
*/
public final class UpdateChecker extends Thread {
+
public static boolean OUT_DATED = false;
public VersionNumber base;
public String type;
@@ -33,46 +34,43 @@ public final class UpdateChecker extends Thread {
public NonConsumer dl;
public UpdateChecker(VersionNumber base, String type, boolean continueUpdate, NonConsumer dl) {
- super("UpdateChecker");
+ super("UpdateChecker");
this.base = base;
this.type = type;
this.continueUpdate = continueUpdate;
this.dl = dl;
}
-
+
VersionNumber value;
@Override
public void run() {
- String url = "http://huangyuhui.duapp.com/info.php?type=" + type, version;
- try {
- version = NetUtils.doGet(url);
- } catch (Exception e) {
+ String url = "http://huangyuhui.duapp.com/info.php?type=" + type, version;
+ try {
+ version = NetUtils.doGet(url);
+ } catch (Exception e) {
HMCLog.warn("Failed to get update url.", e);
- return;
- }
- value = VersionNumber.check(version);
- if (!continueUpdate) {
- return;
- }
+ return;
+ }
+ value = VersionNumber.check(version);
+ if (!continueUpdate)
+ return;
process(false);
}
-
+
public void process(boolean showMessage) {
- if (value == null) {
- HMCLog.warn("Failed to check update...");
- if(showMessage) {
+ if (value == null) {
+ HMCLog.warn("Failed to check update...");
+ if (showMessage)
MessageBox.Show(C.i18n("update.failed"));
- }
- } else {
- if (VersionNumber.isOlder(base, value)) {
+ } else
+ if (VersionNumber.isOlder(base, value)) {
OUT_DATED = true;
- dl.onDone();
- }
- }
+ dl.onDone();
+ }
}
-
+
public VersionNumber getNewVersion() {
return value;
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java
index c4136c46d..6abdf2697 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java
@@ -44,8 +44,9 @@ import org.jackhuang.hellominecraft.HMCLog;
* @author huangyuhui
*/
public final class Utils {
-
+
private static final GsonBuilder gsonBuilder = new GsonBuilder().setPrettyPrinting();
+
public static GsonBuilder getDefaultGsonBuilder() {
return gsonBuilder;
}
@@ -53,13 +54,12 @@ public final class Utils {
public static String[] getURL() {
URL[] urls = ((URLClassLoader) Utils.class.getClassLoader()).getURLs();
String[] urlStrings = new String[urls.length];
- for (int i = 0; i < urlStrings.length; i++) {
+ for (int i = 0; i < urlStrings.length; i++)
try {
urlStrings[i] = URLDecoder.decode(urls[i].getPath(), "UTF-8");
} catch (UnsupportedEncodingException ex) {
HMCLog.warn("Unsupported UTF-8 encoding", ex);
}
- }
return urlStrings;
}
@@ -79,31 +79,31 @@ public final class Utils {
throw new IOException("Failed to get field handle to set library path");
}
}
-
+
public static int getSuggestedMemorySize() {
- try {
- OperatingSystemMXBean osmb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
- int memory = (int)(osmb.getTotalPhysicalMemorySize() / 1024 / 1024) / 4;
- memory = Math.round((float)memory/128.0f)*128;
- return memory;
- } catch(Throwable t) {
- HMCLog.warn("Failed to get total memory size, use 1024MB.", t);
- return 1024;
- }
+ try {
+ OperatingSystemMXBean osmb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
+ int memory = (int) (osmb.getTotalPhysicalMemorySize() / 1024 / 1024) / 4;
+ memory = Math.round((float) memory / 128.0f) * 128;
+ return memory;
+ } catch (Throwable t) {
+ HMCLog.warn("Failed to get total memory size, use 1024MB.", t);
+ return 1024;
+ }
}
-
+
public static void setClipborad(String text) {
- Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(text), null);
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(text), null);
}
-
+
public static boolean openLink(String url) {
- try {
- Desktop.getDesktop().browse(new URI(url));
- return true;
- } catch (URISyntaxException | IOException ex) {
- HMCLog.warn("Failed to open link:" + url, ex);
- return false;
- }
+ try {
+ Desktop.getDesktop().browse(new URI(url));
+ return true;
+ } catch (URISyntaxException | IOException ex) {
+ HMCLog.warn("Failed to open link:" + url, ex);
+ return false;
+ }
}
public static void openFolder(File f) {
@@ -112,66 +112,66 @@ public final class Utils {
java.awt.Desktop.getDesktop().open(f);
} catch (Exception ex) {
MessageBox.Show(C.i18n("message.cannot_open_explorer") + ex.getMessage());
- HMCLog.warn("Failed to open folder:" + f, ex);
+ HMCLog.warn("Failed to open folder:" + f, ex);
}
}
-
+
public static ImageIcon scaleImage(ImageIcon i, int x, int y) {
return new ImageIcon(i.getImage().getScaledInstance(x, y, Image.SCALE_SMOOTH));
}
-
+
public static ImageIcon searchBackgroundImage(ImageIcon background, String bgpath, int width, int height) {
Random r = new Random();
boolean loaded = false;
-
+
// bgpath
- if (StrUtils.isNotBlank(bgpath) && !loaded) {
- String[] backgroundPath = bgpath.split(";");
- if(backgroundPath.length > 0) {
+ if (StrUtils.isNotBlank(bgpath) && !loaded) {
+ String[] backgroundPath = bgpath.split(";");
+ if (backgroundPath.length > 0) {
int index = r.nextInt(backgroundPath.length);
background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundPath[index]).getScaledInstance(width, height, Image.SCALE_DEFAULT));
HMCLog.log("Prepared background image in bgpath.");
loaded = true;
}
- }
-
+ }
+
// bgskin
if (!loaded) {
- File backgroundImageFile = new File("bg");
- if (backgroundImageFile.exists() && backgroundImageFile.isDirectory()) {
- String[] backgroundPath = backgroundImageFile.list();
- if(backgroundPath.length > 0) {
+ File backgroundImageFile = new File("bg");
+ if (backgroundImageFile.exists() && backgroundImageFile.isDirectory()) {
+ String[] backgroundPath = backgroundImageFile.list();
+ if (backgroundPath.length > 0) {
int index = r.nextInt(backgroundPath.length);
background = new ImageIcon(Toolkit.getDefaultToolkit().getImage("bg" + File.separator + backgroundPath[index]).getScaledInstance(width, height, Image.SCALE_DEFAULT));
HMCLog.log("Prepared background image in bgskin folder.");
loaded = true;
}
}
- }
-
+ }
+
// background.png
if (!loaded) {
File backgroundImageFile = new File("background.png");
if (backgroundImageFile.exists()) {
loaded = true;
- background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT));
+ background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT));
HMCLog.log("Prepared background image in background.png.");
}
- }
-
+ }
+
// background.jpg
if (!loaded) {
File backgroundImageFile = new File("background.jpg");
if (backgroundImageFile.exists()) {
- loaded = true;
- background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT));
+ //loaded = true;
+ background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(backgroundImageFile.getAbsolutePath()).getScaledInstance(width, height, Image.SCALE_DEFAULT));
HMCLog.log("Prepared background image in background.jpg.");
}
- }
-
+ }
+
return background;
}
-
+
/**
* In order to fight against the permission manager.
*/
@@ -181,7 +181,7 @@ public final class Utils {
Method exit = z.getDeclaredMethod("exit", int.class);
exit.setAccessible(true);
exit.invoke(z, 0);
- } catch(ClassNotFoundException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
MessageBox.Show(C.i18n("launcher.exit_failed"));
e.printStackTrace();
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java
index 339c15cd6..43b1b21e8 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java
@@ -27,16 +27,16 @@ public final class VersionNumber implements Comparable {
public byte firstVer, secondVer, thirdVer;
public VersionNumber(byte a, byte b, byte c) {
- firstVer = a; secondVer = b; thirdVer = c;
+ firstVer = a;
+ secondVer = b;
+ thirdVer = c;
}
public static VersionNumber check(String data) {
- while (!data.isEmpty() && ((data.charAt(0) < '0' || data.charAt(0) > '9') && data.charAt(0) != '.')) {
+ while (!data.isEmpty() && ((data.charAt(0) < '0' || data.charAt(0) > '9') && data.charAt(0) != '.'))
data = data.substring(1);
- }
- if (data.isEmpty()) {
+ if (data.isEmpty())
return null;
- }
VersionNumber ur;
String[] ver = data.split("\\.");
if (ver.length == 3) {
@@ -55,24 +55,21 @@ public final class VersionNumber implements Comparable {
}
public static boolean isOlder(VersionNumber a, VersionNumber b) {
- if (a.firstVer < b.firstVer) {
+ if (a.firstVer < b.firstVer)
return true;
- } else if (a.firstVer == b.firstVer) {
- if (a.secondVer < b.secondVer) {
+ else if (a.firstVer == b.firstVer)
+ if (a.secondVer < b.secondVer)
return true;
- } else if (a.secondVer == b.secondVer) {
- if (a.thirdVer < b.thirdVer) {
+ else if (a.secondVer == b.secondVer)
+ if (a.thirdVer < b.thirdVer)
return true;
- }
- }
- }
return false;
}
@Override
public int compareTo(VersionNumber o) {
- if(isOlder(this, o)) return -1;
- else if(isOlder(o, this)) return 1;
+ if (isOlder(this, o)) return -1;
+ else if (isOlder(o, this)) return 1;
else return 0;
}
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
index d0ad92838..f80d2946b 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java
@@ -16,7 +16,6 @@
*/
package org.jackhuang.hellominecraft.utils.code;
-import org.jackhuang.hellominecraft.utils.code.Hex;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
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
index 64fad088a..588fe30ea 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiConsumer.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiConsumer.java
@@ -20,5 +20,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface BiConsumer {
+
void onDone(V value, V2 value2);
}
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
index 089dc0fc6..f712f7f9b 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/BiFunction.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface BiFunction {
+
C apply(A a, B b);
}
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
index 3ce781a68..c72276a1e 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Consumer.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface Consumer {
+
void accept(T t);
}
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
index e25b8deee..ae5d65f5c 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Function.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface Function {
+
R apply(T t);
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonConsumer.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonConsumer.java
index 91a35e45b..221823184 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonConsumer.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonConsumer.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface NonConsumer {
+
void onDone();
}
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
index 8c8c37f37..276d36e2f 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonFunction.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/NonFunction.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface NonFunction {
+
T onDone();
}
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
index 840a55026..c0283975c 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/Predicate.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface Predicate {
+
boolean apply(T t);
}
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
index a003110c8..76577ae59 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TriConsumer.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TriConsumer.java
@@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.utils.functions;
* @author huangyuhui
*/
public interface TriConsumer {
+
void onDone(V1 v1, V2 v2, V3 v3);
}
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
index f17208386..f82f32b24 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java
@@ -52,11 +52,10 @@ public class Compressor {
BufferedOutputStream bos = new BufferedOutputStream(os);
try (ZipOutputStream zos = new ZipOutputStream(bos)) {
String basePath;
- if (sourceDir.isDirectory()) {
+ if (sourceDir.isDirectory())
basePath = sourceDir.getPath();
- } else {//直接压缩单个文件时,取父目录
+ else//直接压缩单个文件时,取父目录
basePath = sourceDir.getParent();
- }
zipFile(sourceDir, basePath, zos);
zos.closeEntry();
}
@@ -72,22 +71,21 @@ public class Compressor {
private static void zipFile(File source, String basePath,
ZipOutputStream zos) throws IOException {
File[] files;
- if (source.isDirectory()) {
+ if (source.isDirectory())
files = source.listFiles();
- } else {
+ else {
files = new File[1];
files[0] = source;
}
String pathName;//存相对路径(相对于待压缩的根目录)
byte[] buf = new byte[1024];
int length;
- for (File file : files) {
+ for (File file : files)
if (file.isDirectory()) {
pathName = file.getPath().substring(basePath.length() + 1)
+ "/";
- if (file.getName().toLowerCase().contains("meta-inf")) {
+ if (file.getName().toLowerCase().contains("meta-inf"))
continue;
- }
zos.putNextEntry(new ZipEntry(pathName));
zipFile(file, basePath, zos);
} else {
@@ -95,18 +93,16 @@ public class Compressor {
try (InputStream is = new FileInputStream(file)) {
BufferedInputStream bis = new BufferedInputStream(is);
zos.putNextEntry(new ZipEntry(pathName));
- while ((length = bis.read(buf)) > 0) {
+ while ((length = bis.read(buf)) > 0)
zos.write(buf, 0, length);
- }
}
}
- }
}
public static void unzip(String zipFileName, String extPlace) throws IOException {
unzip(new File(zipFileName), new File(extPlace));
}
-
+
public static void unzip(File zipFileName, File extPlace) throws IOException {
unzip(zipFileName, extPlace, new String[0]);
}
@@ -129,7 +125,7 @@ public class Compressor {
while (e.hasMoreElements()) {
ZipEntry zipEnt = (ZipEntry) e.nextElement();
gbkPath = zipEnt.getName();
- if(StrUtils.startsWithOne(without, gbkPath)) continue;
+ if (StrUtils.startsWithOne(without, gbkPath)) continue;
if (zipEnt.isDirectory()) {
strtemp = strPath + File.separator + gbkPath;
File dir = new File(strtemp);
@@ -142,15 +138,13 @@ public class Compressor {
strtemp = strPath + File.separator + gbkPath;
//建目录
String strsubdir = gbkPath;
- for (int i = 0; i < strsubdir.length(); i++) {
+ for (int i = 0; i < strsubdir.length(); i++)
if (strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) {
String temp = strPath + File.separator + strsubdir.substring(0, i);
File subdir = new File(temp);
- if (!subdir.exists()) {
+ if (!subdir.exists())
subdir.mkdir();
- }
}
- }
try (FileOutputStream fos = new FileOutputStream(strtemp); BufferedOutputStream bos = new BufferedOutputStream(fos)) {
int c;
while ((c = bis.read()) != -1)
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
index 273b7e4d9..8f0fb3b49 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java
@@ -36,197 +36,177 @@ import org.jackhuang.hellominecraft.utils.NetUtils;
public class FileUtils {
public static void deleteDirectory(File directory)
- throws IOException {
- if (!directory.exists()) {
- return;
- }
+ throws IOException {
+ if (!directory.exists())
+ return;
- if (!isSymlink(directory)) {
- cleanDirectory(directory);
- }
+ if (!isSymlink(directory))
+ cleanDirectory(directory);
- if (!directory.delete()) {
- String message = "Unable to delete directory " + directory + ".";
+ if (!directory.delete()) {
+ String message = "Unable to delete directory " + directory + ".";
- throw new IOException(message);
- }
+ throw new IOException(message);
+ }
}
-
+
public static boolean deleteDirectoryQuietly(File directory) {
try {
deleteDirectory(directory);
return true;
- } catch(Exception e) {
+ } catch (Exception e) {
HMCLog.err("Failed to delete directory " + directory, e);
return false;
}
}
-
+
public static boolean cleanDirectoryQuietly(File directory) {
try {
cleanDirectory(directory);
return true;
- } catch(Exception e) {
+ } catch (Exception e) {
HMCLog.err("Failed to clean directory " + directory, e);
return false;
}
}
public static void cleanDirectory(File directory)
- throws IOException {
- if (!directory.exists()) {
+ throws IOException {
+ if (!directory.exists()) {
//String message = directory + " does not exist";
- //throw new IllegalArgumentException(message);
+ //throw new IllegalArgumentException(message);
directory.mkdirs();
return;
- }
+ }
- if (!directory.isDirectory()) {
- String message = directory + " is not a directory";
- throw new IllegalArgumentException(message);
- }
+ if (!directory.isDirectory()) {
+ String message = directory + " is not a directory";
+ throw new IllegalArgumentException(message);
+ }
- File[] files = directory.listFiles();
- if (files == null) {
- throw new IOException("Failed to list contents of " + directory);
- }
+ File[] files = directory.listFiles();
+ if (files == null)
+ throw new IOException("Failed to list contents of " + directory);
- IOException exception = null;
- for (File file : files) {
- try {
- forceDelete(file);
- } catch (IOException ioe) {
- exception = ioe;
- }
- }
+ IOException exception = null;
+ for (File file : files)
+ try {
+ forceDelete(file);
+ } catch (IOException ioe) {
+ exception = ioe;
+ }
- if (null != exception) {
- throw exception;
- }
+ if (null != exception)
+ throw exception;
}
public static void forceDelete(File file)
- throws IOException {
- if (file.isDirectory()) {
- deleteDirectory(file);
- } else {
- boolean filePresent = file.exists();
- if (!file.delete()) {
- if (!filePresent) {
- throw new FileNotFoundException("File does not exist: " + file);
- }
- String message = "Unable to delete file: " + file;
+ throws IOException {
+ if (file.isDirectory())
+ deleteDirectory(file);
+ else {
+ boolean filePresent = file.exists();
+ if (!file.delete()) {
+ if (!filePresent)
+ throw new FileNotFoundException("File does not exist: " + file);
+ String message = "Unable to delete file: " + file;
- throw new IOException(message);
- }
- }
+ throw new IOException(message);
+ }
+ }
}
public static boolean isSymlink(File file)
- throws IOException {
- if (file == null) {
- throw new NullPointerException("File must not be null");
- }
- if (File.separatorChar == '\\') {
- return false;
- }
- File fileInCanonicalDir;
- if (file.getParent() == null) {
- fileInCanonicalDir = file;
- } else {
- File canonicalDir = file.getParentFile().getCanonicalFile();
- fileInCanonicalDir = new File(canonicalDir, file.getName());
- }
+ throws IOException {
+ if (file == null)
+ throw new NullPointerException("File must not be null");
+ if (File.separatorChar == '\\')
+ return false;
+ File fileInCanonicalDir;
+ if (file.getParent() == null)
+ fileInCanonicalDir = file;
+ else {
+ File canonicalDir = file.getParentFile().getCanonicalFile();
+ fileInCanonicalDir = new File(canonicalDir, file.getName());
+ }
- return !fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile());
+ return !fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile());
}
public static void copyDirectory(File srcDir, File destDir)
- throws IOException {
- copyDirectory(srcDir, destDir, true);
+ throws IOException {
+ copyDirectory(srcDir, destDir, true);
}
public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate)
- throws IOException {
- copyDirectory(srcDir, destDir, null, preserveFileDate);
+ throws IOException {
+ copyDirectory(srcDir, destDir, null, preserveFileDate);
}
public static void copyDirectory(File srcDir, File destDir, FileFilter filter)
- throws IOException {
- copyDirectory(srcDir, destDir, filter, true);
+ throws IOException {
+ copyDirectory(srcDir, destDir, filter, true);
}
public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)
- throws IOException {
- if (srcDir == null) {
- throw new NullPointerException("Source must not be null");
- }
- if (destDir == null) {
- throw new NullPointerException("Destination must not be null");
- }
- if (!srcDir.exists()) {
- throw new FileNotFoundException("Source '" + srcDir + "' does not exist");
- }
- if (!srcDir.isDirectory()) {
- throw new IOException("Source '" + srcDir + "' exists but is not a directory");
- }
- if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {
- throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same");
- }
+ throws IOException {
+ if (srcDir == null)
+ throw new NullPointerException("Source must not be null");
+ if (destDir == null)
+ throw new NullPointerException("Destination must not be null");
+ if (!srcDir.exists())
+ throw new FileNotFoundException("Source '" + srcDir + "' does not exist");
+ if (!srcDir.isDirectory())
+ throw new IOException("Source '" + srcDir + "' exists but is not a directory");
+ if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath()))
+ throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same");
- List exclusionList = null;
- if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {
- File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
- if ((srcFiles != null) && (srcFiles.length > 0)) {
- exclusionList = new ArrayList(srcFiles.length);
- for (File srcFile : srcFiles) {
- File copiedFile = new File(destDir, srcFile.getName());
- exclusionList.add(copiedFile.getCanonicalPath());
- }
- }
- }
- doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);
+ List exclusionList = null;
+ if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {
+ File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
+ if ((srcFiles != null) && (srcFiles.length > 0)) {
+ exclusionList = new ArrayList(srcFiles.length);
+ for (File srcFile : srcFiles) {
+ File copiedFile = new File(destDir, srcFile.getName());
+ exclusionList.add(copiedFile.getCanonicalPath());
+ }
+ }
+ }
+ doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);
}
private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List exclusionList)
- throws IOException {
- File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
- if (srcFiles == null) {
- throw new IOException("Failed to list contents of " + srcDir);
- }
- if (destDir.exists()) {
- if (!destDir.isDirectory()) {
- throw new IOException("Destination '" + destDir + "' exists but is not a directory");
- }
- } else if ((!destDir.mkdirs()) && (!destDir.isDirectory())) {
- throw new IOException("Destination '" + destDir + "' directory cannot be created");
- }
+ throws IOException {
+ File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
+ if (srcFiles == null)
+ throw new IOException("Failed to list contents of " + srcDir);
+ if (destDir.exists()) {
+ if (!destDir.isDirectory())
+ throw new IOException("Destination '" + destDir + "' exists but is not a directory");
+ } else if ((!destDir.mkdirs()) && (!destDir.isDirectory()))
+ throw new IOException("Destination '" + destDir + "' directory cannot be created");
- if (!destDir.canWrite()) {
- throw new IOException("Destination '" + destDir + "' cannot be written to");
- }
- for (File srcFile : srcFiles) {
- File dstFile = new File(destDir, srcFile.getName());
- if ((exclusionList == null) || (!exclusionList.contains(srcFile.getCanonicalPath()))) {
- if (srcFile.isDirectory()) {
- doCopyDirectory(srcFile, dstFile, filter, preserveFileDate, exclusionList);
- } else {
- doCopyFile(srcFile, dstFile, preserveFileDate);
- }
- }
+ if (!destDir.canWrite())
+ throw new IOException("Destination '" + destDir + "' cannot be written to");
+ for (File srcFile : srcFiles) {
+ File dstFile = new File(destDir, srcFile.getName());
+ if ((exclusionList == null) || (!exclusionList.contains(srcFile.getCanonicalPath())))
+ if (srcFile.isDirectory())
+ doCopyDirectory(srcFile, dstFile, filter, preserveFileDate, exclusionList);
+ else
+ doCopyFile(srcFile, dstFile, preserveFileDate);
- }
+ }
- if (preserveFileDate) {
- destDir.setLastModified(srcDir.lastModified());
- }
+ if (preserveFileDate)
+ destDir.setLastModified(srcDir.lastModified());
}
public static String readFileToString(File file)
- throws IOException {
- return NetUtils.getStreamContent(IOUtils.openInputStream(file));
+ throws IOException {
+ return NetUtils.getStreamContent(IOUtils.openInputStream(file));
}
-
+
public static String readFileToStringQuietly(File file) {
try {
return NetUtils.getStreamContent(IOUtils.openInputStream(file));
@@ -237,239 +217,216 @@ public class FileUtils {
}
public static String readFileToString(File file, String charset)
- throws IOException {
- return NetUtils.getStreamContent(IOUtils.openInputStream(file), charset);
+ throws IOException {
+ return NetUtils.getStreamContent(IOUtils.openInputStream(file), charset);
}
-
+
public static String readFileToStringIgnoreFileNotFound(File file) throws IOException {
- try {
- return NetUtils.getStreamContent(IOUtils.openInputStream(file));
- } catch (FileNotFoundException ex) {
- return "";
- }
+ try {
+ return NetUtils.getStreamContent(IOUtils.openInputStream(file));
+ } catch (FileNotFoundException ex) {
+ return "";
+ }
}
public static void copyFile(File srcFile, File destFile)
- throws IOException {
- copyFile(srcFile, destFile, true);
+ throws IOException {
+ copyFile(srcFile, destFile, true);
}
public static void copyFile(File srcFile, File destFile, boolean preserveFileDate)
- throws IOException {
- if (srcFile == null) {
- throw new NullPointerException("Source must not be null");
- }
- if (destFile == null) {
- throw new NullPointerException("Destination must not be null");
- }
- if (!srcFile.exists()) {
- throw new FileNotFoundException("Source '" + srcFile + "' does not exist");
- }
- if (srcFile.isDirectory()) {
- throw new IOException("Source '" + srcFile + "' exists but is a directory");
- }
- if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) {
- throw new IOException("Source '" + srcFile + "' and destination '" + destFile + "' are the same");
- }
- File parentFile = destFile.getParentFile();
- if ((parentFile != null)
- && (!parentFile.mkdirs()) && (!parentFile.isDirectory())) {
- throw new IOException("Destination '" + parentFile + "' directory cannot be created");
- }
+ throws IOException {
+ if (srcFile == null)
+ throw new NullPointerException("Source must not be null");
+ if (destFile == null)
+ throw new NullPointerException("Destination must not be null");
+ if (!srcFile.exists())
+ throw new FileNotFoundException("Source '" + srcFile + "' does not exist");
+ if (srcFile.isDirectory())
+ throw new IOException("Source '" + srcFile + "' exists but is a directory");
+ if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath()))
+ throw new IOException("Source '" + srcFile + "' and destination '" + destFile + "' are the same");
+ File parentFile = destFile.getParentFile();
+ if ((parentFile != null)
+ && (!parentFile.mkdirs()) && (!parentFile.isDirectory()))
+ throw new IOException("Destination '" + parentFile + "' directory cannot be created");
- if ((destFile.exists()) && (!destFile.canWrite())) {
- throw new IOException("Destination '" + destFile + "' exists but is read-only");
- }
- doCopyFile(srcFile, destFile, preserveFileDate);
+ if ((destFile.exists()) && (!destFile.canWrite()))
+ throw new IOException("Destination '" + destFile + "' exists but is read-only");
+ doCopyFile(srcFile, destFile, preserveFileDate);
}
private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate)
- throws IOException {
- if ((destFile.exists()) && (destFile.isDirectory())) {
- throw new IOException("Destination '" + destFile + "' exists but is a directory");
- }
+ throws IOException {
+ if ((destFile.exists()) && (destFile.isDirectory()))
+ throw new IOException("Destination '" + destFile + "' exists but is a directory");
- FileInputStream fis = null;
- FileOutputStream fos = null;
- FileChannel input = null;
- FileChannel output = null;
- try {
- fis = new FileInputStream(srcFile);
- fos = new FileOutputStream(destFile);
- input = fis.getChannel();
- output = fos.getChannel();
- long size = input.size();
- long pos = 0L;
- long count;
- while (pos < size) {
- count = size - pos > 31457280L ? 31457280L : size - pos;
- pos += output.transferFrom(input, pos, count);
- }
- } finally {
- IOUtils.closeQuietly(output);
- IOUtils.closeQuietly(fos);
- IOUtils.closeQuietly(input);
- IOUtils.closeQuietly(fis);
- }
+ FileInputStream fis = null;
+ FileOutputStream fos = null;
+ FileChannel input = null;
+ FileChannel output = null;
+ try {
+ fis = new FileInputStream(srcFile);
+ fos = new FileOutputStream(destFile);
+ input = fis.getChannel();
+ output = fos.getChannel();
+ long size = input.size();
+ long pos = 0L;
+ long count;
+ while (pos < size) {
+ count = size - pos > 31457280L ? 31457280L : size - pos;
+ pos += output.transferFrom(input, pos, count);
+ }
+ } finally {
+ IOUtils.closeQuietly(output);
+ IOUtils.closeQuietly(fos);
+ IOUtils.closeQuietly(input);
+ IOUtils.closeQuietly(fis);
+ }
- if (srcFile.length() != destFile.length()) {
- throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "'");
- }
+ if (srcFile.length() != destFile.length())
+ throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "'");
- if (preserveFileDate) {
- destFile.setLastModified(srcFile.lastModified());
- }
+ if (preserveFileDate)
+ destFile.setLastModified(srcFile.lastModified());
}
public static int indexOfLastSeparator(String filename) {
- if (filename == null) {
- return -1;
- }
- int lastUnixPos = filename.lastIndexOf(47);
- int lastWindowsPos = filename.lastIndexOf(92);
- return Math.max(lastUnixPos, lastWindowsPos);
+ if (filename == null)
+ return -1;
+ int lastUnixPos = filename.lastIndexOf(47);
+ int lastWindowsPos = filename.lastIndexOf(92);
+ return Math.max(lastUnixPos, lastWindowsPos);
}
public static int indexOfExtension(String filename) {
- if (filename == null) {
- return -1;
- }
- int extensionPos = filename.lastIndexOf(46);
- int lastSeparator = indexOfLastSeparator(filename);
- return lastSeparator > extensionPos ? -1 : extensionPos;
+ if (filename == null)
+ return -1;
+ int extensionPos = filename.lastIndexOf(46);
+ int lastSeparator = indexOfLastSeparator(filename);
+ return lastSeparator > extensionPos ? -1 : extensionPos;
}
public static String getName(String filename) {
- if (filename == null) {
- return null;
- }
- int index = indexOfLastSeparator(filename);
- return filename.substring(index + 1);
+ if (filename == null)
+ return null;
+ int index = indexOfLastSeparator(filename);
+ return filename.substring(index + 1);
}
public static String getBaseName(String filename) {
- return removeExtension(getName(filename));
+ return removeExtension(getName(filename));
}
public static String getExtension(String filename) {
- if (filename == null) {
- return null;
- }
- int index = indexOfExtension(filename);
- if (index == -1) {
- return "";
- }
- return filename.substring(index + 1);
+ if (filename == null)
+ return null;
+ int index = indexOfExtension(filename);
+ if (index == -1)
+ return "";
+ return filename.substring(index + 1);
}
public static String removeExtension(String filename) {
- if (filename == null) {
- return null;
- }
- int index = indexOfExtension(filename);
- if (index == -1) {
- return filename;
- }
- return filename.substring(0, index);
+ if (filename == null)
+ return null;
+ int index = indexOfExtension(filename);
+ if (index == -1)
+ return filename;
+ return filename.substring(0, index);
}
-
+
public static void writeQuietly(File file, CharSequence data) {
try {
write(file, data);
- } catch(IOException e) {
+ } catch (IOException e) {
HMCLog.warn("Failed to write data to file: " + file, e);
}
}
public static void write(File file, CharSequence data)
- throws IOException {
- write(file, data, "UTF-8", false);
+ throws IOException {
+ write(file, data, "UTF-8", false);
}
public static void write(File file, CharSequence data, boolean append)
- throws IOException {
- write(file, data, "UTF-8", append);
+ throws IOException {
+ write(file, data, "UTF-8", append);
}
public static void write(File file, CharSequence data, String encoding)
- throws IOException {
- write(file, data, encoding, false);
+ throws IOException {
+ write(file, data, encoding, false);
}
public static void write(File file, CharSequence data, String encoding, boolean append)
- throws IOException {
- String str = data == null ? null : data.toString();
- writeStringToFile(file, str, encoding, append);
+ throws IOException {
+ String str = data == null ? null : data.toString();
+ writeStringToFile(file, str, encoding, append);
}
public static void writeStringToFile(File file, String data)
- throws IOException {
- writeStringToFile(file, data, "UTF-8", false);
+ throws IOException {
+ writeStringToFile(file, data, "UTF-8", false);
}
public static void writeStringToFile(File file, String data, String encoding)
- throws IOException {
- writeStringToFile(file, data, encoding, false);
+ throws IOException {
+ writeStringToFile(file, data, encoding, false);
}
public static void writeStringToFile(File file, String data, String encoding, boolean append)
- throws IOException {
- OutputStream out = null;
- try {
- out = openOutputStream(file, append);
- IOUtils.write(data, out, encoding);
- out.close();
- } finally {
- IOUtils.closeQuietly(out);
- }
+ throws IOException {
+ OutputStream out = null;
+ try {
+ out = openOutputStream(file, append);
+ IOUtils.write(data, out, encoding);
+ out.close();
+ } finally {
+ IOUtils.closeQuietly(out);
+ }
}
public static FileInputStream openInputStream(File file)
- throws IOException {
- if (file.exists()) {
- if (file.isDirectory()) {
- throw new IOException("File '" + file + "' exists but is a directory");
- }
- if (!file.canRead()) {
- throw new IOException("File '" + file + "' cannot be read");
- }
- } else {
- throw new FileNotFoundException("File '" + file + "' does not exist");
- }
- return new FileInputStream(file);
+ throws IOException {
+ if (file.exists()) {
+ if (file.isDirectory())
+ throw new IOException("File '" + file + "' exists but is a directory");
+ if (!file.canRead())
+ throw new IOException("File '" + file + "' cannot be read");
+ } else
+ throw new FileNotFoundException("File '" + file + "' does not exist");
+ return new FileInputStream(file);
}
public static FileOutputStream openOutputStream(File file)
- throws IOException {
- return openOutputStream(file, false);
+ throws IOException {
+ return openOutputStream(file, false);
}
public static FileOutputStream openOutputStream(File file, boolean append)
- throws IOException {
- if (file.exists()) {
- if (file.isDirectory()) {
- throw new IOException("File '" + file + "' exists but is a directory");
- }
- if (!file.canWrite()) {
- throw new IOException("File '" + file + "' cannot be written to");
- }
- } else {
- File parent = file.getParentFile();
- if ((parent != null)
- && (!parent.mkdirs()) && (!parent.isDirectory())) {
- throw new IOException("Directory '" + parent + "' could not be created");
- }
+ throws IOException {
+ if (file.exists()) {
+ if (file.isDirectory())
+ throw new IOException("File '" + file + "' exists but is a directory");
+ if (!file.canWrite())
+ throw new IOException("File '" + file + "' cannot be written to");
+ } else {
+ File parent = file.getParentFile();
+ if ((parent != null)
+ && (!parent.mkdirs()) && (!parent.isDirectory()))
+ throw new IOException("Directory '" + parent + "' could not be created");
file.createNewFile();
- }
+ }
- return new FileOutputStream(file, append);
+ return new FileOutputStream(file, append);
}
-
+
public static File[] searchSuffix(File dir, String suffix) {
ArrayList al = new ArrayList();
File[] files = dir.listFiles();
- for(File f : files)
- if(f.getName().endsWith(suffix)) al.add(f);
+ for (File f : files)
+ if (f.getName().endsWith(suffix)) al.add(f);
return al.toArray(new File[0]);
}
}
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
index 1d21a07a0..a6b8e413c 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java
@@ -16,7 +16,6 @@
*/
package org.jackhuang.hellominecraft.utils.system;
-import org.jackhuang.hellominecraft.utils.system.OS;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
@@ -43,14 +42,12 @@ import org.jackhuang.hellominecraft.HMCLog;
public class IOUtils {
public static String addSeparator(String path) {
- if (path == null || path.trim().length() == 0) {
+ if (path == null || path.trim().length() == 0)
return "";
- }
- if (isSeparator(path.charAt(path.length() - 1))) {
+ if (isSeparator(path.charAt(path.length() - 1)))
return path;
- } else {
+ else
return path + File.separatorChar;
- }
}
public static boolean isSeparator(char ch) {
@@ -60,21 +57,18 @@ public class IOUtils {
public static String removeLastSeparator(String dir) {
String t = dir.trim();
char ch = t.charAt(t.length() - 1);
- if (isSeparator(ch)) {
+ if (isSeparator(ch))
return t.substring(0, t.length() - 1);
- }
return t;
}
public static String extractLastDirectory(String dir) {
String t = removeLastSeparator(dir);
int i = t.length() - 1;
- while (i >= 0 && !isSeparator(dir.charAt(i))) {
+ while (i >= 0 && !isSeparator(dir.charAt(i)))
i--;
- }
- if (i < 0) {
+ if (i < 0)
return t;
- }
return t.substring(i + 1, (t.length() - i) + (i + 1) - 1);
}
@@ -83,11 +77,9 @@ public class IOUtils {
if (f.isDirectory()) {
File[] f1 = f.listFiles();
int len = f1.length;
- for (int i = 0; i < len; i++) {
- if (f1[i].isFile()) {
+ for (int i = 0; i < len; i++)
+ if (f1[i].isFile())
arr.add(f1[i].getName());
- }
- }
}
return arr;
}
@@ -97,11 +89,9 @@ public class IOUtils {
if (f.isDirectory()) {
File[] f1 = f.listFiles();
int len = f1.length;
- for (int i = 0; i < len; i++) {
- if (f1[i].isFile()) {
+ for (int i = 0; i < len; i++)
+ if (f1[i].isFile())
arr.add(addSeparator(f.getAbsolutePath()) + f1[i].getName());
- }
- }
}
return arr;
}
@@ -111,11 +101,9 @@ public class IOUtils {
if (f.isDirectory()) {
File[] f1 = f.listFiles();
int len = f1.length;
- for (int i = 0; i < len; i++) {
- if (f1[i].isDirectory()) {
+ for (int i = 0; i < len; i++)
+ if (f1[i].isDirectory())
arr.add(f1[i].getName());
- }
- }
}
return arr;
}
@@ -152,9 +140,8 @@ public class IOUtils {
for (int i = 0; i < macs.length; i++) {
mac = Integer.toHexString(macs[i] & 0xFF);
- if (mac.length() == 1) {
+ if (mac.length() == 1)
mac = '0' + mac;
- }
sb.append(mac).append("-");
}
@@ -179,11 +166,10 @@ public class IOUtils {
public static String getJavaDir() {
String path = System.getProperty("java.home") + File.separatorChar + "bin" + File.separatorChar;
path = addSeparator(path);
- if (OS.os() == OS.WINDOWS && new File(path + "javaw.exe").isFile()) {
+ if (OS.os() == OS.WINDOWS && new File(path + "javaw.exe").isFile())
return path + "javaw.exe";
- } else {
+ else
return path + "java";
- }
}
public static byte[] readFully(InputStream stream) throws IOException {
@@ -192,9 +178,8 @@ public class IOUtils {
int len;
do {
len = stream.read(data);
- if (len <= 0) {
+ if (len <= 0)
continue;
- }
entryBuffer.write(data, 0, len);
} while (len != -1);
@@ -219,39 +204,33 @@ public class IOUtils {
public static void closeQuietly(Closeable closeable) {
try {
- if (closeable != null) {
+ if (closeable != null)
closeable.close();
- }
} catch (IOException ioe) {
}
}
public static void write(byte[] data, OutputStream output)
throws IOException {
- if (data != null) {
+ if (data != null)
output.write(data);
- }
}
public static void write(String data, OutputStream output, String encoding)
throws IOException {
- if (data != null) {
+ if (data != null)
output.write(data.getBytes(encoding));
- }
}
public static FileInputStream openInputStream(File file)
throws IOException {
if (file.exists()) {
- if (file.isDirectory()) {
+ if (file.isDirectory())
throw new IOException("File '" + file + "' exists but is a directory");
- }
- if (!file.canRead()) {
+ if (!file.canRead())
throw new IOException("File '" + file + "' cannot be read");
- }
- } else {
+ } else
throw new FileNotFoundException("File '" + file + "' does not exist");
- }
return new FileInputStream(file);
}
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
index 843c3ab22..9a5b43123 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java
@@ -16,7 +16,6 @@
*/
package org.jackhuang.hellominecraft.utils.system;
-import org.jackhuang.hellominecraft.utils.system.ProcessManager;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -35,7 +34,7 @@ public class JavaProcess {
public JavaProcess(List commands, Process process, ProcessManager pm) {
this.commands = commands;
this.process = process;
- if(pm != null) pm.registerProcess(this);
+ if (pm != null) pm.registerProcess(this);
}
public JavaProcess(String[] commands, Process process, ProcessManager pm) {
@@ -89,4 +88,4 @@ public class JavaProcess {
public void stop() {
this.process.destroy();
}
-}
\ No newline at end of file
+}
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
index 398422dca..f19d9526f 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java
@@ -45,7 +45,7 @@ public final class JdkVersion {
public String getLocation() {
return location;
}
-
+
public int getParsedVersion() {
return parseVersion(getVersion());
}
@@ -109,18 +109,14 @@ public final class JdkVersion {
// version String should look like "1.4.2_10"
majorJavaVersion = parseVersion(javaVersion);
}
-
+
private static int parseVersion(String javaVersion) {
- if(StrUtils.isBlank(javaVersion)) return UNKOWN;
+ if (StrUtils.isBlank(javaVersion)) return UNKOWN;
int a = UNKOWN;
- if (javaVersion.contains("1.9."))
- a = JAVA_19;
- else if (javaVersion.contains("1.8."))
- a = JAVA_18;
- else if (javaVersion.contains("1.7."))
- a = JAVA_17;
- else if (javaVersion.contains("1.6."))
- a = JAVA_16;
+ if (javaVersion.contains("1.9.")) a = JAVA_19;
+ else if (javaVersion.contains("1.8.")) a = JAVA_18;
+ else if (javaVersion.contains("1.7.")) a = JAVA_17;
+ else if (javaVersion.contains("1.6.")) a = JAVA_16;
return a;
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java
index d14d76e29..610598333 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java
@@ -16,38 +16,38 @@
*/
package org.jackhuang.hellominecraft.utils.system;
-import javax.swing.JOptionPane;
+import javax.swing.JOptionPane;
import org.jackhuang.hellominecraft.C;
-
-/**
- * @author huangyuhui
- */
-public class MessageBox
-{
+
+/**
+ * @author huangyuhui
+ */
+public class MessageBox {
+
private static String Title = C.i18n("message.info");
/**
* Buttons: OK
*/
- public static final int DEFAULT_OPTION = -1;
+ public static final int DEFAULT_OPTION = -1;
/**
* Buttons: Yes No
*/
- public static final int YES_NO_OPTION = 10;
+ public static final int YES_NO_OPTION = 10;
/**
* Buttons: Yes No Cancel
*/
- public static final int YES_NO_CANCEL_OPTION =11;
+ public static final int YES_NO_CANCEL_OPTION = 11;
/**
* Buttons: OK Cancel
*/
- public static final int OK_CANCEL_OPTION = 12;
+ public static final int OK_CANCEL_OPTION = 12;
/**
* User Operation: Yes
*/
public static final int YES_OPTION = 0;
/**
* User Operation: No
- */
+ */
public static final int NO_OPTION = 1;
/**
* User Operation: Cancel
@@ -67,7 +67,7 @@ public class MessageBox
public static final int ERROR_MESSAGE = 0;
/**
* Message Box Type: Info
- */
+ */
public static final int INFORMATION_MESSAGE = 1;
/**
* Message Box Type: Warning
@@ -81,46 +81,45 @@ public class MessageBox
* Message Box Type: Plain
*/
public static final int PLAIN_MESSAGE = -1;
-
+
/**
* Show MsgBox with title and options
+ *
* @param Msg The Message
* @param Title The title of MsgBox.
* @param Option The type of MsgBox.
* @return user operation.
*/
- 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 JOptionPane.showConfirmDialog(null, Msg, Title, Option - 10);
- default:
- JOptionPane.showMessageDialog(null, Msg, Title, Option);
- }
- return 0;
+ 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 JOptionPane.showConfirmDialog(null, Msg, Title, Option - 10);
+ default:
+ JOptionPane.showMessageDialog(null, Msg, Title, Option);
+ }
+ return 0;
}
-
+
/**
* Show MsgBox with options
+ *
* @param Msg The Message
* @param Option The type of MsgBox.
* @return User Operation
*/
- public static int Show(String Msg, int Option)
- {
- return Show(Msg, Title, Option);
- }
-
+ public static int Show(String Msg, int Option) {
+ return Show(Msg, Title, Option);
+ }
+
/**
* Show Default MsgBox
+ *
* @param Msg The Message
* @return User Operation
*/
- public static int Show(String Msg)
- {
- return Show(Msg, Title, INFORMATION_MESSAGE);
- }
-}
\ No newline at end of file
+ public static int Show(String Msg) {
+ return Show(Msg, Title, INFORMATION_MESSAGE);
+ }
+}
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
index d3f8d682e..e11fab392 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java
@@ -24,12 +24,12 @@ import org.jackhuang.hellominecraft.HMCLog;
* @author huangyuhui
*/
public enum OS {
-
+
LINUX('/'),
WINDOWS('\\'),
OSX('/'),
UNKOWN('/');
-
+
public final char fileSeparator;
private OS(char fileSeparator) {
@@ -39,27 +39,21 @@ public enum OS {
public static OS os() {
String str;
if ((str = System.getProperty("os.name").toLowerCase())
- .contains("win")) {
+ .contains("win"))
return OS.WINDOWS;
- }
- if (str.contains("mac")) {
+ if (str.contains("mac"))
return OS.OSX;
- }
- if (str.contains("solaris")) {
+ if (str.contains("solaris"))
return OS.LINUX;
- }
- if (str.contains("sunos")) {
+ if (str.contains("sunos"))
return OS.LINUX;
- }
- if (str.contains("linux")) {
+ if (str.contains("linux"))
return OS.LINUX;
- }
- if (str.contains("unix")) {
+ if (str.contains("unix"))
return OS.LINUX;
- }
return OS.UNKOWN;
}
-
+
/**
* @return Free Physical Memory Size (Byte)
*/
@@ -67,10 +61,10 @@ public enum OS {
try {
OperatingSystemMXBean o = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
return o.getTotalPhysicalMemorySize();
- } catch(Throwable t) {
+ } catch (Throwable t) {
HMCLog.warn("Failed to get total physical memory size");
return -1;
}
}
-
+
}
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
index ef082e4e2..1ef2f5f30 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java
@@ -48,8 +48,8 @@ public enum Platform {
};
public abstract String getBit();
-
+
public static Platform getPlatform() {
- return System.getProperty("os.arch").contains("64") ? BIT_64 : BIT_32;
+ return System.getProperty("os.arch").contains("64") ? BIT_64 : BIT_32;
}
}
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
index 89443735c..5bd091f3f 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessManager.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessManager.java
@@ -25,18 +25,17 @@ import java.util.HashSet;
public class ProcessManager {
private static final HashSet gameProcesses = new HashSet();
-
+
public void registerProcess(JavaProcess jp) {
gameProcesses.add(jp);
}
-
+
public void stopAllProcesses() {
- for(JavaProcess jp : gameProcesses) {
+ for (JavaProcess jp : gameProcesses)
jp.stop();
- }
gameProcesses.clear();
}
-
+
public void onProcessStopped(JavaProcess p) {
gameProcesses.remove(p);
}
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
index 341dc86c2..5913e0cb4 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java
@@ -31,7 +31,7 @@ public class ProcessThread extends Thread {
JavaProcess p;
boolean readError = false, enableReading = true;
-
+
public final EventHandler printlnEvent = new EventHandler<>(this);
public final EventHandler stopEvent = new EventHandler<>(this);
@@ -49,22 +49,20 @@ public class ProcessThread extends Thread {
public void run() {
InputStream in = null;
BufferedReader br = null;
- if (enableReading) {
+ if (enableReading)
in = readError ? p.getRawProcess().getErrorStream() : p.getRawProcess().getInputStream();
- }
try {
- if (enableReading) {
+ if (enableReading)
try {
br = new BufferedReader(new InputStreamReader(in, System.getProperty("sun.jnu.encoding", "UTF-8")));
} catch (UnsupportedEncodingException ex) {
HMCLog.warn("Unsupported encoding: " + System.getProperty("sun.jnu.encoding", "UTF-8"), ex);
br = new BufferedReader(new InputStreamReader(in));
}
- }
-
+
String line;
- while (p.isRunning()) {
- if (enableReading) {
+ while (p.isRunning())
+ if (enableReading)
while ((line = br.readLine()) != null) {
printlnEvent.execute(line);
if (readError) {
@@ -75,14 +73,12 @@ public class ProcessThread extends Thread {
p.getStdOutLines().add(line);
}
}
- } else {
+ else
try {
Thread.sleep(1);
} catch (Exception e) {
}
- }
- }
- if (enableReading) {
+ if (enableReading)
while ((line = br.readLine()) != null) {
printlnEvent.execute(line);
if (readError) {
@@ -93,7 +89,6 @@ public class ProcessThread extends Thread {
p.getStdOutLines().add(line);
}
}
- }
stopEvent.execute(p);
} catch (Exception e) {
e.printStackTrace();
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java
index 49d0efade..9c2426e64 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteVersions.java
@@ -24,12 +24,12 @@ import org.jackhuang.hellominecraft.C;
* @author huangyuhui
*/
public class MinecraftRemoteVersions {
-
+
public ArrayList versions;
public MinecraftRemoteLatestVersion latest;
-
+
public static MinecraftRemoteVersions fromJson(String s) {
return C.gson.fromJson(s, MinecraftRemoteVersions.class);
}
-
+
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java
index 5e0f2ec2b..cd84c7e05 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java
@@ -22,11 +22,12 @@ import org.jackhuang.hellominecraft.C;
* @author huangyuhui
*/
public class MinecraftVersionRequest {
+
public static final int Unkown = 0, Invaild = 1, InvaildJar = 2,
Modified = 3, OK = 4, NotFound = 5, NotReadable = 6, NotAFile = 7;
public int type;
public String version;
-
+
public static String getResponse(MinecraftVersionRequest minecraftVersion) {
String text = "";
switch (minecraftVersion.type) {
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
index 5ea0eb52a..9c7704215 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java
@@ -30,7 +30,7 @@ import org.jackhuang.hellominecraft.utils.Utils;
* @author huangyuhui
*/
public class LogWindow extends javax.swing.JFrame {
-
+
boolean movingEnd;
NonFunction listener;
NonConsumer terminateGameListener;
@@ -40,18 +40,18 @@ public class LogWindow extends javax.swing.JFrame {
*/
public LogWindow() {
initComponents();
-
+
movingEnd = true;
setLocationRelativeTo(null);
-
- TextComponentOutputStream tc = new TextComponentOutputStream(txtLog);
- DoubleOutputStream out = new DoubleOutputStream(tc, System.out);
- System.setOut(new LauncherPrintStream(out));
- DoubleOutputStream err = new DoubleOutputStream(tc, System.err);
- System.setErr(new LauncherPrintStream(err));
+
+ TextComponentOutputStream tc = new TextComponentOutputStream(txtLog);
+ DoubleOutputStream out = new DoubleOutputStream(tc, System.out);
+ System.setOut(new LauncherPrintStream(out));
+ DoubleOutputStream err = new DoubleOutputStream(tc, System.err);
+ System.setErr(new LauncherPrintStream(err));
}
-
+
public static LogWindow instance = new LogWindow();
/**
@@ -206,15 +206,15 @@ public class LogWindow extends javax.swing.JFrame {
}//GEN-LAST:event_btnClearActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
- if(listener != null && listener.onDone()) Utils.shutdownForcely();
+ if (listener != null && listener.onDone()) Utils.shutdownForcely();
}//GEN-LAST:event_formWindowClosed
private void btnCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCopyActionPerformed
- Utils.setClipborad(this.txtLog.getText());
+ Utils.setClipborad(this.txtLog.getText());
}//GEN-LAST:event_btnCopyActionPerformed
private void btnMCBBSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMCBBSActionPerformed
- Utils.openLink(C.URL_PUBLISH);
+ Utils.openLink(C.URL_PUBLISH);
}//GEN-LAST:event_btnMCBBSActionPerformed
private void btnTieBaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTieBaActionPerformed
@@ -226,7 +226,7 @@ public class LogWindow extends javax.swing.JFrame {
}//GEN-LAST:event_btnMCFActionPerformed
private void btnTerminateGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTerminateGameActionPerformed
- if(terminateGameListener != null)
+ if (terminateGameListener != null)
terminateGameListener.onDone();
}//GEN-LAST:event_btnTerminateGameActionPerformed
@@ -238,49 +238,49 @@ public class LogWindow extends javax.swing.JFrame {
String text = txtLog.getText();
text += status + System.getProperty("line.separator");
txtLog.setText(text);
-
- if(movingEnd) {
+
+ if (movingEnd) {
int position = text.length();
txtLog.setCaretPosition(position);
}
}
-
+
public void log(String status, Throwable t) {
- log(status);
- log(StrUtils.getStackTrace(t));
+ log(status);
+ log(StrUtils.getStackTrace(t));
}
-
+
public void setExit(NonFunction exit) {
- this.listener = exit;
+ this.listener = exit;
}
-
+
public void setTerminateGame(NonConsumer l) {
- this.terminateGameListener = l;
+ this.terminateGameListener = l;
}
-
+
public void clean() {
txtLog.setText("");
}
-
+
public boolean getMovingEnd() {
return movingEnd;
}
-
+
public void setMovingEnd(boolean b) {
movingEnd = b;
}
@Override
public void setVisible(boolean b) {
- lblCrash.setVisible(false);
- btnMCBBS.setVisible(false);
- btnTieBa.setVisible(false);
- btnMCF.setVisible(false);
- super.setVisible(b);
+ lblCrash.setVisible(false);
+ btnMCBBS.setVisible(false);
+ btnTieBa.setVisible(false);
+ btnMCF.setVisible(false);
+ super.setVisible(b);
}
-
+
public void showAsCrashWindow(boolean out_date) {
- if(out_date) {
+ if (out_date) {
lblCrash.setVisible(false);
btnMCBBS.setVisible(false);
btnTieBa.setVisible(false);
@@ -293,10 +293,10 @@ public class LogWindow extends javax.swing.JFrame {
btnMCF.setVisible(true);
lblCrash.setText(C.i18n("ui.label.crashing"));
}
-
- super.setVisible(true);
+
+ super.setVisible(true);
}
-
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnClear;
private javax.swing.JButton btnClose;
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java
index f17ae0d11..a782ceb8c 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java
@@ -18,9 +18,11 @@ package org.jackhuang.hellominecraft.views;
/**
* The frame given to choose things.
+ *
* @author huangyuhui
*/
public class Selector extends javax.swing.JDialog {
+
String[] selList;
String msg;
/**
@@ -39,12 +41,12 @@ public class Selector extends javax.swing.JDialog {
initComponents();
setLocationRelativeTo(null);
-
+
this.selList = selList;
this.sel = failedToSel;
this.msg = msg;
jLabel1.setText(msg);
- for(String s : selList)
+ for (String s : selList)
jComboBox1.addItem(s);
}
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java
index 77780b08b..f54bf7841 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/TintablePanel.java
@@ -46,9 +46,8 @@ public class TintablePanel extends JPanel {
}
public void setOverIcon(ImageIcon image) {
- if (this.overIcon != null) {
+ if (this.overIcon != null)
remove(this.overIcon);
- }
this.overIcon = new JLabel(image);
this.overIcon.setVisible(false);