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 15f0ff2a8..3b7ff73a5 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
@@ -80,7 +80,6 @@ public abstract class IMinecraftLoader {
res.addAll(Arrays.asList(StrUtils.tokenize(v.getJavaArgs())));
if (!v.isNoJVMArgs() && !(jv != null && jv.isEarlyAccess())) {
- //res.add("-Xincgc");
res.add("-XX:+UseConcMarkSweepGC");
res.add("-XX:+CMSIncrementalMode");
res.add("-XX:-UseAdaptiveSizePolicy");
@@ -107,14 +106,14 @@ public abstract class IMinecraftLoader {
}
if (!StrUtils.isBlank(v.getPermSize()) && !v.isNoJVMArgs())
- if (jv != null && jv.getVersion() != null && (jv.getVersion().startsWith("1.8") || jv.getVersion().startsWith("1.9")));
+ if (jv != null && jv.getParsedVersion() >= JdkVersion.JAVA_18);
else res.add("-XX:MaxPermSize=" + v.getPermSize() + "m");
if (!v.isNoJVMArgs()) appendJVMArgs(res);
HMCLog.log("On making java.library.path.");
- res.add("-Djava.library.path=" + provider.getDecompressNativesToLocation().getPath());//v.getSelectedMinecraftVersion().getNatives(v.getCanonicalGameDirFile()));
+ res.add("-Djava.library.path=" + provider.getDecompressNativesToLocation().getPath());
res.add("-Dfml.ignoreInvalidMinecraftCertificates=true");
res.add("-Dfml.ignorePatchDiscrepancies=true");
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java
index e73ac6574..5ba3078cb 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java
@@ -38,12 +38,12 @@ public final class OfflineAuthenticator extends IAuthenticator {
String uuid = getUUIDFromUserName(info.username);
result.setSession(uuid);
result.setUserId(uuid);
- result.setAccessToken("${auth_access_token}");
+ result.setAccessToken("0");
result.setUserType("Legacy");
result.setErrorReason(C.i18n("login.no_Player007"));
return result;
}
-
+
public static String getUUIDFromUserName(String str) {
String md5 = DigestUtils.md5Hex(str);
return md5.substring(0, 8) + '-' + md5.substring(8, 12) + '-' + md5.substring(12, 16) + '-' + md5.substring(16, 21) + md5.substring(21);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java
index d31e26db2..a187141d3 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java
@@ -38,80 +38,79 @@ import org.jackhuang.mojang.util.UUIDTypeAdapter;
* @author hyh
*/
public final class YggdrasilAuthenticator extends IAuthenticator {
-
+
YggdrasilAuthenticationService service;
YggdrasilUserAuthentication ua;
-
+
public YggdrasilAuthenticator(String clientToken) {
super(clientToken);
service = new YggdrasilAuthenticationService(Proxy.NO_PROXY, clientToken);
- ua = (YggdrasilUserAuthentication)service.createUserAuthentication(Agent.MINECRAFT);
+ ua = (YggdrasilUserAuthentication) service.createUserAuthentication(Agent.MINECRAFT);
}
@Override
public UserProfileProvider login(LoginInfo info) {
- if(ua.canPlayOnline()) {
+ if (ua.canPlayOnline()) {
UserProfileProvider result = new UserProfileProvider();
result.setUserName(info.username);
result.setSuccess(true);
result.setUserId(UUIDTypeAdapter.fromUUID(ua.getSelectedProfile().getId()));
result.setUserProperties(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new LegacyPropertyMapSerializer()).create().toJson(ua.getUserProperties()));
- result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties()));
+ result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties()));
result.setAccessToken(ua.getAuthenticatedToken());
result.setSession(ua.getAuthenticatedToken());
- result.setUserType(ua.getUserType().getName());
+ result.setUserType(ua.getUserType().getName());
return result;
}
UserProfileProvider result = new UserProfileProvider();
String usr = info.username;
- if(info.username == null || !info.username.contains("@")) {
+ if (info.username == null || !info.username.contains("@")) {
result.setSuccess(false);
result.setErrorReason(C.i18n("login.not_email"));
return result;
}
String pwd = info.password;
-
- if(!ua.isLoggedIn())
- ua.setPassword(pwd);
+
+ if (!ua.isLoggedIn())
+ ua.setPassword(pwd);
ua.setUsername(usr);
try {
ua.logIn();
- if(!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password"));
+ if (!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password"));
GameProfile selectedProfile = ua.getSelectedProfile();
GameProfile[] profiles = ua.getAvailableProfiles();
String[] names;
String username;
- if(selectedProfile == null) {
- if(ArrayUtils.isNotEmpty(profiles)) {
+ if (selectedProfile == null)
+ if (ArrayUtils.isNotEmpty(profiles)) {
names = new String[profiles.length];
- for(int i = 0; i < profiles.length; i++) {
+ for (int i = 0; i < profiles.length; i++)
names[i] = profiles[i].getName();
- }
Selector s = new Selector(null, names, C.i18n("login.choose_charactor"));
s.setVisible(true);
- selectedProfile = profiles[s.sel];
+ selectedProfile = profiles[s.sel];
username = names[s.sel];
- } else {
+ } else
username = JOptionPane.showInputDialog(C.i18n("login.no_charactor"));
- }
- } else {
+ else
username = selectedProfile.getName();
- }
result.setUserName(username);
result.setSuccess(true);
result.setUserId(selectedProfile == null ? OfflineAuthenticator.getUUIDFromUserName(username) : UUIDTypeAdapter.fromUUID(selectedProfile.getId()));
result.setUserProperties(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new LegacyPropertyMapSerializer()).create().toJson(ua.getUserProperties()));
- result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties()));
- result.setAccessToken(ua.getAuthenticatedToken());
- result.setSession(ua.getAuthenticatedToken());
- result.setUserType(ua.getUserType().getName());
+ result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties()));
+ String authToken = ua.getAuthenticatedToken();
+ if (authToken == null) authToken = "0";
+ result.setAccessToken(authToken);
+ result.setSession(authToken);
+ result.setUserType(ua.getUserType().getName());
} catch (Exception ex) {
result.setErrorReason(ex.getMessage());
result.setSuccess(false);
result.setUserName(ua.getUserID());
- result.setUserType(UserType.MOJANG.getName());
-
- HMCLog.err("Failed to login by yggdrasil authentication.", ex);
+ result.setUserType(UserType.MOJANG.getName());
+
+ HMCLog.err("Failed to login by yggdrasil authentication.", ex);
}
return result;
}
@@ -131,7 +130,7 @@ public final class YggdrasilAuthenticator extends IAuthenticator {
}
public void onLoadSettings(Map settings) {
- if(settings == null) return;
+ if (settings == null) return;
ua.loadFromStorage(settings);
}
@@ -140,7 +139,7 @@ public final class YggdrasilAuthenticator extends IAuthenticator {
UserProfileProvider info = new UserProfileProvider();
try {
ua.logIn();
- if(!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password"));
+ if (!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password"));
GameProfile profile = ua.getSelectedProfile();
info.setUserName(profile.getName());
info.setSuccess(true);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form
index 89290ee9e..c645ee4f5 100644
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.form
@@ -417,7 +417,6 @@
-
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java
index 53f349937..1c929cd71 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
@@ -420,11 +420,6 @@ public class GameSettingsPanel extends javax.swing.JPanel {
txtJavaDirFocusLost(evt);
}
});
- txtJavaDir.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- txtJavaDirActionPerformed(evt);
- }
- });
jLabel11.setText(bundle.getString("settings.java_dir")); // NOI18N
@@ -948,7 +943,7 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() {
}//GEN-LAST:event_btnRefreshVersionsActionPerformed
private void btnRefreshForgeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshForgeActionPerformed
- forge.refreshVersions();//refreshForgeVersions();
+ forge.refreshVersions();
}//GEN-LAST:event_btnRefreshForgeActionPerformed
private void btnDownloadForgeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadForgeActionPerformed
@@ -1130,10 +1125,6 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() {
profile.setMaxMemory(txtMaxMemory.getText());
}//GEN-LAST:event_txtMaxMemoryFocusLost
- private void txtJavaDirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtJavaDirActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_txtJavaDirActionPerformed
-
private void txtJavaDirFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtJavaDirFocusLost
profile.setJavaDir(txtJavaDir.getText());
}//GEN-LAST:event_txtJavaDirFocusLost
diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java
index 5f34aa93d..cc725a744 100644
--- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java
+++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/JdkVersion.java
@@ -44,6 +44,10 @@ public final class JdkVersion {
public String getLocation() {
return location;
}
+
+ public int getParsedVersion() {
+ return parseVersion(getVersion());
+ }
/**
* -1 - unkown 0 - 32Bit 1 - 64Bit
*/
@@ -79,10 +83,6 @@ public final class JdkVersion {
* Constant identifying the 1.5 JVM (Java 5).
*/
public static final int UNKOWN = 2;
- /**
- * Constant identifying the 1.5 JVM (Java 5).
- */
- public static final int JAVA_15 = 2;
/**
* Constant identifying the 1.6 JVM (Java 6).
*/
@@ -106,17 +106,21 @@ public final class JdkVersion {
static {
javaVersion = System.getProperty("java.version");
// version String should look like "1.4.2_10"
+ majorJavaVersion = parseVersion(javaVersion);
+ }
+
+ private static int parseVersion(String javaVersion) {
+ if(StrUtils.isBlank(javaVersion)) return UNKOWN;
+ int a = UNKOWN;
if (javaVersion.contains("1.9."))
- majorJavaVersion = JAVA_18;
+ a = JAVA_19;
else if (javaVersion.contains("1.8."))
- majorJavaVersion = JAVA_18;
+ a = JAVA_18;
else if (javaVersion.contains("1.7."))
- majorJavaVersion = JAVA_17;
+ a = JAVA_17;
else if (javaVersion.contains("1.6."))
- majorJavaVersion = JAVA_16;
- else
- // else leave 1.5 as default (it's either 1.5 or unknown)
- majorJavaVersion = JAVA_15;
+ a = JAVA_16;
+ return a;
}
/**
@@ -148,22 +152,6 @@ public final class JdkVersion {
return majorJavaVersion;
}
- /**
- * Convenience method to determine if the current JVM is at least Java 1.6
- * (Java 6).
- *
- * @return true if the current JVM is at least Java 1.6
- * @deprecated as of Spring 3.0, in favor of reflective checks for the
- * specific Java 1.6 classes of interest
- * @see #getMajorJavaVersion()
- * @see #JAVA_16
- * @see #JAVA_17
- */
- @Deprecated
- public static boolean isAtLeastJava16() {
- return (majorJavaVersion >= JAVA_16);
- }
-
public static boolean isJava64Bit() {
String jdkBit = System.getProperty("sun.arch.data.model");
return jdkBit.contains("64");
@@ -217,6 +205,6 @@ public final class JdkVersion {
}
public boolean isEarlyAccess() {
- return ver != null && ver.endsWith("-ea");
+ return getVersion() != null && getVersion().endsWith("-ea");
}
}