fix: wrongly considering Forge 1.12.2 not compatible with OptiFine
This commit is contained in:
@@ -20,6 +20,7 @@ package org.jackhuang.hmcl.download.forge;
|
|||||||
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
||||||
import org.jackhuang.hmcl.download.DependencyManager;
|
import org.jackhuang.hmcl.download.DependencyManager;
|
||||||
import org.jackhuang.hmcl.download.VersionMismatchException;
|
import org.jackhuang.hmcl.download.VersionMismatchException;
|
||||||
|
import org.jackhuang.hmcl.download.optifine.OptiFineInstallTask;
|
||||||
import org.jackhuang.hmcl.game.GameVersion;
|
import org.jackhuang.hmcl.game.GameVersion;
|
||||||
import org.jackhuang.hmcl.game.Version;
|
import org.jackhuang.hmcl.game.Version;
|
||||||
import org.jackhuang.hmcl.task.FileDownloadTask;
|
import org.jackhuang.hmcl.task.FileDownloadTask;
|
||||||
@@ -27,6 +28,7 @@ import org.jackhuang.hmcl.task.Task;
|
|||||||
import org.jackhuang.hmcl.util.gson.JsonUtils;
|
import org.jackhuang.hmcl.util.gson.JsonUtils;
|
||||||
import org.jackhuang.hmcl.util.io.CompressingUtils;
|
import org.jackhuang.hmcl.util.io.CompressingUtils;
|
||||||
import org.jackhuang.hmcl.util.io.FileUtils;
|
import org.jackhuang.hmcl.util.io.FileUtils;
|
||||||
|
import org.jackhuang.hmcl.util.versioning.VersionNumber;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.FileSystem;
|
import java.nio.file.FileSystem;
|
||||||
@@ -97,7 +99,19 @@ public final class ForgeInstallTask extends Task<Version> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws IOException, VersionMismatchException {
|
public void execute() throws IOException, VersionMismatchException, OptiFineInstallTask.UnsupportedOptiFineInstallationException {
|
||||||
|
String originalMainClass = version.resolve(dependencyManager.getGameRepository()).getMainClass();
|
||||||
|
if (VersionNumber.VERSION_COMPARATOR.compare("1.13", remote.getGameVersion()) <= 0) {
|
||||||
|
// Forge 1.13 is not compatible with any other libraries.
|
||||||
|
if (!"net.minecraft.client.main.Main".equals(originalMainClass) && !"cpw.mods.modlauncher.Launcher".equals(originalMainClass))
|
||||||
|
throw new OptiFineInstallTask.UnsupportedOptiFineInstallationException();
|
||||||
|
} else {
|
||||||
|
// Forge 1.12 and older versions is compatible with vanilla and launchwrapper.
|
||||||
|
// if (!"net.minecraft.client.main.Main".equals(originalMainClass) && !"net.minecraft.launchwrapper.Launch".equals(originalMainClass))
|
||||||
|
// throw new OptiFineInstallTask.UnsupportedOptiFineInstallationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (detectForgeInstallerType(dependencyManager, version, installer))
|
if (detectForgeInstallerType(dependencyManager, version, installer))
|
||||||
dependency = new ForgeNewInstallTask(dependencyManager, version, remote.getSelfVersion(), installer);
|
dependency = new ForgeNewInstallTask(dependencyManager, version, remote.getSelfVersion(), installer);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -131,10 +131,6 @@ public class ForgeNewInstallTask extends Task<Version> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws Exception {
|
public void execute() throws Exception {
|
||||||
String originalMainClass = version.resolve(dependencyManager.getGameRepository()).getMainClass();
|
|
||||||
if (!"net.minecraft.client.main.Main".equals(originalMainClass) && !"cpw.mods.modlauncher.Launcher".equals(originalMainClass))
|
|
||||||
throw new OptiFineInstallTask.UnsupportedOptiFineInstallationException();
|
|
||||||
|
|
||||||
Path temp = Files.createTempDirectory("forge_installer");
|
Path temp = Files.createTempDirectory("forge_installer");
|
||||||
int finished = 0;
|
int finished = 0;
|
||||||
try (FileSystem fs = CompressingUtils.createReadOnlyZipFileSystem(installer)) {
|
try (FileSystem fs = CompressingUtils.createReadOnlyZipFileSystem(installer)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user