From 8fce2a22a257a2fefd93d4ea3d19930d62f5544f Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 17 Dec 2023 14:46:31 +0300 Subject: [PATCH] Feat[mcdl]: skip natives-only libraries to improve startup speeds --- .../tasks/NewMinecraftDownloader.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/NewMinecraftDownloader.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/NewMinecraftDownloader.java index ba9d4da9c..02791d323 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/NewMinecraftDownloader.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/NewMinecraftDownloader.java @@ -3,6 +3,7 @@ package net.kdt.pojavlaunch.tasks; import static net.kdt.pojavlaunch.PojavApplication.sExecutorService; import android.app.Activity; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -229,15 +230,25 @@ public class NewMinecraftDownloader { Tools.preProcessLibraries(dependentLibraries); growDownloadList(dependentLibraries.length); for(DependentLibrary dependentLibrary : dependentLibraries) { + // Don't download lwjgl, we have our own bundled in. + if(dependentLibrary.name.startsWith("org.lwjgl")) continue; + String libArtifactPath = Tools.artifactToPath(dependentLibrary); String sha1 = null, url = null; long size = 0; boolean skipIfFailed = false; - if(dependentLibrary.downloads != null && dependentLibrary.downloads.artifact != null) { - MinecraftLibraryArtifact artifact = dependentLibrary.downloads.artifact; - sha1 = artifact.sha1; - url = artifact.url; - size = artifact.size; + if(dependentLibrary.downloads != null) { + if(dependentLibrary.downloads.artifact != null) { + MinecraftLibraryArtifact artifact = dependentLibrary.downloads.artifact; + sha1 = artifact.sha1; + url = artifact.url; + size = artifact.size; + } else { + // If the library has a downloads section but doesn't have an artifact in + // it, it is likely natives-only, which means it can be skipped. + Log.i("NewMCDownloader", "Skipped library " + dependentLibrary.name + " due to lack of artifact"); + continue; + } } if(url == null) { url = (dependentLibrary.url == null