fix(multiplayer): should not show unsupported platform when running on 32-bit Java, but 64-bit OS.
This commit is contained in:
@@ -430,7 +430,7 @@ public final class LauncherHelper {
|
||||
}
|
||||
}
|
||||
|
||||
if (javaVersion.getPlatform() != Architecture.CURRENT.getPlatform()) {
|
||||
if (javaVersion.getPlatform() != Architecture.SYSTEM.getPlatform()) {
|
||||
Controllers.dialog(i18n("launch.advice.different_platform"), i18n("message.warning"), MessageType.ERROR, continueAction);
|
||||
suggested = true;
|
||||
}
|
||||
|
||||
@@ -26,9 +26,9 @@ import org.jackhuang.hmcl.task.Schedulers;
|
||||
import org.jackhuang.hmcl.task.Task;
|
||||
import org.jackhuang.hmcl.util.Lang;
|
||||
import org.jackhuang.hmcl.util.StringUtils;
|
||||
import org.jackhuang.hmcl.util.platform.Architecture;
|
||||
import org.jackhuang.hmcl.util.platform.JavaVersion;
|
||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||
import org.jackhuang.hmcl.util.platform.Platform;
|
||||
import org.jackhuang.hmcl.util.versioning.VersionNumber;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -608,7 +608,7 @@ public final class VersionSetting implements Cloneable {
|
||||
if (checkJava)
|
||||
return JavaVersion.fromExecutable(Paths.get(getJavaDir()));
|
||||
else
|
||||
return new JavaVersion(Paths.get(getJavaDir()), "", Platform.getPlatform());
|
||||
return new JavaVersion(Paths.get(getJavaDir()), "", Architecture.SYSTEM.getPlatform());
|
||||
} catch (IOException | InvalidPathException e) {
|
||||
return null; // Custom Java Directory not found,
|
||||
}
|
||||
|
||||
@@ -228,23 +228,23 @@ public final class MultiplayerManager {
|
||||
public static String getCatoPath() {
|
||||
switch (OperatingSystem.CURRENT_OS) {
|
||||
case WINDOWS:
|
||||
if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return "cato/cato/" + MultiplayerManager.CATO_VERSION + "/cato-windows-amd64.exe";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
case OSX:
|
||||
if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return "cato/cato/" + MultiplayerManager.CATO_VERSION + "/cato-darwin-amd64";
|
||||
} else if (Architecture.CURRENT == Architecture.ARM64) {
|
||||
} else if (Architecture.SYSTEM == Architecture.ARM64) {
|
||||
return "cato/cato/" + MultiplayerManager.CATO_VERSION + "/cato-darwin-arm64";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
case LINUX:
|
||||
if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return "cato/cato/" + MultiplayerManager.CATO_VERSION + "/cato-linux-amd64";
|
||||
} else if (Architecture.CURRENT == Architecture.ARM || Architecture.CURRENT == Architecture.ARM64) {
|
||||
} else if (Architecture.SYSTEM == Architecture.ARM || Architecture.SYSTEM == Architecture.ARM64) {
|
||||
return "cato/cato/" + MultiplayerManager.CATO_VERSION + "/cato-linux-arm7";
|
||||
} else {
|
||||
return "";
|
||||
|
||||
@@ -84,7 +84,7 @@ public final class SelfDependencyPatcher {
|
||||
|
||||
private static String currentArchClassifier() {
|
||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) {
|
||||
switch (Architecture.CURRENT) {
|
||||
switch (Architecture.JDK) {
|
||||
case X86_64:
|
||||
return "linux";
|
||||
case ARM:
|
||||
@@ -93,14 +93,14 @@ public final class SelfDependencyPatcher {
|
||||
return "linux-aarch64";
|
||||
}
|
||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
||||
switch (Architecture.CURRENT) {
|
||||
switch (Architecture.JDK) {
|
||||
case X86_64:
|
||||
return "mac";
|
||||
case ARM64:
|
||||
return "mac-aarch64";
|
||||
}
|
||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||
switch (Architecture.CURRENT) {
|
||||
switch (Architecture.JDK) {
|
||||
case X86_64:
|
||||
return "win";
|
||||
case X86:
|
||||
|
||||
@@ -62,19 +62,19 @@ public final class JavaRepository {
|
||||
|
||||
public static Optional<String> getCurrentJavaPlatform() {
|
||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) {
|
||||
if (Architecture.CURRENT == Architecture.X86) {
|
||||
if (Architecture.SYSTEM == Architecture.X86) {
|
||||
return Optional.of("linux-i386");
|
||||
} else if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
} else if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return Optional.of("linux");
|
||||
}
|
||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
|
||||
if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return Optional.of("mac-os");
|
||||
}
|
||||
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
||||
if (Architecture.CURRENT == Architecture.X86) {
|
||||
if (Architecture.SYSTEM == Architecture.X86) {
|
||||
return Optional.of("windows-x86");
|
||||
} else if (Architecture.CURRENT == Architecture.X86_64) {
|
||||
} else if (Architecture.SYSTEM == Architecture.X86_64) {
|
||||
return Optional.of("windows-x64");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ public enum JavaVersionConstraint {
|
||||
VANILLA_LINUX_JAVA_8(JavaVersionConstraint.RULE_MANDATORY, versionRange("0", "1.12.999"), versionRange(JavaVersionConstraint.MIN, "1.8.999")) {
|
||||
@Override
|
||||
public boolean appliesToVersion(@Nullable VersionNumber gameVersion, @Nullable Version version) {
|
||||
return OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.CURRENT == Architecture.X86_64;
|
||||
return OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.SYSTEM == Architecture.X86_64;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
@@ -24,8 +24,8 @@ import org.jackhuang.hmcl.util.Immutable;
|
||||
import org.jackhuang.hmcl.util.ToStringBuilder;
|
||||
import org.jackhuang.hmcl.util.gson.TolerableValidationException;
|
||||
import org.jackhuang.hmcl.util.gson.Validation;
|
||||
import org.jackhuang.hmcl.util.platform.Architecture;
|
||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||
import org.jackhuang.hmcl.util.platform.Platform;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -94,7 +94,7 @@ public class Library implements Comparable<Library>, Validation {
|
||||
public String getClassifier() {
|
||||
if (artifact.getClassifier() == null)
|
||||
if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS))
|
||||
return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Platform.getPlatform().getBit());
|
||||
return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Architecture.SYSTEM.getPlatform().getBit());
|
||||
else
|
||||
return null;
|
||||
else
|
||||
|
||||
@@ -58,7 +58,8 @@ public enum Architecture {
|
||||
}
|
||||
|
||||
public static final String SYSTEM_ARCHITECTURE;
|
||||
public static final Architecture CURRENT;
|
||||
public static final Architecture JDK;
|
||||
public static final Architecture SYSTEM;
|
||||
|
||||
private static Architecture normalizeArch(String value) {
|
||||
value = normalize(value);
|
||||
@@ -151,7 +152,7 @@ public enum Architecture {
|
||||
static {
|
||||
SYSTEM_ARCHITECTURE = System.getProperty("os.arch");
|
||||
|
||||
CURRENT = Optional.ofNullable(normalizeProcessorArchitecture())
|
||||
.orElseGet(() -> normalizeArch(SYSTEM_ARCHITECTURE));
|
||||
JDK = normalizeArch(SYSTEM_ARCHITECTURE);
|
||||
SYSTEM = Optional.ofNullable(normalizeProcessorArchitecture()).orElse(JDK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ public final class JavaVersion {
|
||||
CURRENT_JAVA = new JavaVersion(
|
||||
currentExecutable,
|
||||
System.getProperty("java.version"),
|
||||
Platform.getPlatform());
|
||||
Architecture.JDK.getPlatform());
|
||||
}
|
||||
|
||||
private static Collection<JavaVersion> JAVAS;
|
||||
|
||||
Reference in New Issue
Block a user