feat: print more effective logs when OptiFine Patcher failed to patch game.

This commit is contained in:
huanghongxun
2021-07-31 02:00:13 +08:00
parent b6de9d4ea2
commit 6f40335322

View File

@@ -25,6 +25,7 @@ import org.jackhuang.hmcl.task.FileDownloadTask;
import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.task.Task;
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.platform.CommandBuilder;
import org.jackhuang.hmcl.util.platform.JavaVersion; import org.jackhuang.hmcl.util.platform.JavaVersion;
import org.jackhuang.hmcl.util.platform.SystemUtils; import org.jackhuang.hmcl.util.platform.SystemUtils;
import org.jenkinsci.constant_pool_scanner.ConstantPool; import org.jenkinsci.constant_pool_scanner.ConstantPool;
@@ -133,7 +134,7 @@ public final class OptiFineInstallTask extends Task<Version> {
boolean hasLaunchWrapper = false; boolean hasLaunchWrapper = false;
try (FileSystem fs = CompressingUtils.createReadOnlyZipFileSystem(dest)) { try (FileSystem fs = CompressingUtils.createReadOnlyZipFileSystem(dest)) {
if (Files.exists(fs.getPath("optifine/Patcher.class"))) { if (Files.exists(fs.getPath("optifine/Patcher.class"))) {
int exitCode = SystemUtils.callExternalProcess( String[] command = {
JavaVersion.fromCurrentEnvironment().getBinary().toString(), JavaVersion.fromCurrentEnvironment().getBinary().toString(),
"-cp", "-cp",
dest.toString(), dest.toString(),
@@ -141,9 +142,10 @@ public final class OptiFineInstallTask extends Task<Version> {
gameRepository.getVersionJar(version).getAbsolutePath(), gameRepository.getVersionJar(version).getAbsolutePath(),
dest.toString(), dest.toString(),
gameRepository.getLibraryFile(version, optiFineLibrary).toString() gameRepository.getLibraryFile(version, optiFineLibrary).toString()
); };
int exitCode = SystemUtils.callExternalProcess(command);
if (exitCode != 0) if (exitCode != 0)
throw new IOException("OptiFine patcher failed"); throw new IOException("OptiFine patcher failed, command: " + new CommandBuilder().addAll(Arrays.asList(command)));
} else { } else {
FileUtils.copyFile(dest, gameRepository.getLibraryFile(version, optiFineLibrary).toPath()); FileUtils.copyFile(dest, gameRepository.getLibraryFile(version, optiFineLibrary).toPath());
} }