diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java index 701380b7d..b41e835cc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java @@ -131,9 +131,14 @@ public abstract class VersionList { lock.readLock().lock(); try { T result = null; - for (T it : versions.get(gameVersion)) + TreeSet remoteVersions = versions.get(gameVersion); + for (T it : remoteVersions) if (remoteVersion.equals(it.getSelfVersion())) result = it; + if (result == null) + for (T it : remoteVersions) + if (remoteVersion.equals(it.getFullVersion())) + result = it; return Optional.ofNullable(result); } finally { lock.readLock().unlock(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineRemoteVersion.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineRemoteVersion.java index 12be0813d..2efdf48ee 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineRemoteVersion.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineRemoteVersion.java @@ -31,6 +31,11 @@ public class OptiFineRemoteVersion extends RemoteVersion { super(LibraryAnalyzer.LibraryType.OPTIFINE.getPatchId(), gameVersion, selfVersion, null, snapshot ? Type.SNAPSHOT : Type.RELEASE, urls); } + @Override + public String getFullVersion() { + return getGameVersion() + "_" + getSelfVersion(); + } + @Override public Task getInstallTask(DefaultDependencyManager dependencyManager, Version baseVersion) { return new OptiFineInstallTask(dependencyManager, baseVersion, this);