fix(multiplayer): should not show unsupported platform when running on 32-bit Java, but 64-bit OS.
This commit is contained in:
@@ -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