From d7acd362e2bcc6d542728d14a9d33c1f6b7f900d Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 31 Jan 2021 00:10:33 +0300 Subject: [PATCH] Auto-download inherited version if it does not exist --- .../net/kdt/pojavlaunch/BaseMainActivity.java | 2 +- .../main/java/net/kdt/pojavlaunch/Tools.java | 17 ++++++++++++++--- .../tasks/MinecraftDownloaderTask.java | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java index 483e686e3..d8f9d75bd 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseMainActivity.java @@ -127,7 +127,7 @@ public class BaseMainActivity extends LoggableActivity { logStream = new PrintStream(logFile.getAbsolutePath()); mProfile = PojavProfile.getCurrentProfileContent(this); - mVersionInfo = Tools.getVersionInfo(mProfile.selectedVersion); + mVersionInfo = Tools.getVersionInfo(null,mProfile.selectedVersion); setTitle("Minecraft " + mProfile.selectedVersion); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index cb9e1457d..ebea3ded4 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -534,7 +534,7 @@ public final class Tools return libDir.toArray(new String[0]); } - public static JMinecraftVersionList.Version getVersionInfo(String versionName) { + public static JMinecraftVersionList.Version getVersionInfo(BaseLauncherActivity bla, String versionName) { try { JMinecraftVersionList.Version customVer = Tools.GLOBAL_GSON.fromJson(read(DIR_HOME_VERSION + "/" + versionName + "/" + versionName + ".json"), JMinecraftVersionList.Version.class); for (DependentLibrary lib : customVer.libraries) { @@ -545,9 +545,20 @@ public final class Tools if (customVer.inheritsFrom == null || customVer.inheritsFrom.equals(customVer.id)) { return customVer; } else { - JMinecraftVersionList.Version inheritsVer = Tools.GLOBAL_GSON.fromJson(read(DIR_HOME_VERSION + "/" + customVer.inheritsFrom + "/" + customVer.inheritsFrom + ".json"), JMinecraftVersionList.Version.class); + JMinecraftVersionList.Version inheritsVer = null; + if(bla != null) if (bla.mVersionList != null) { + for (JMinecraftVersionList.Version valueVer : bla.mVersionList.versions) { + if (valueVer.id.equals(customVer.inheritsFrom) && (!new File(DIR_HOME_VERSION + "/" + customVer.inheritsFrom + "/" + customVer.inheritsFrom + ".json").exists()) && (valueVer.url != null)) { + Tools.downloadFile(valueVer.url,DIR_HOME_VERSION + "/" + customVer.inheritsFrom + "/" + customVer.inheritsFrom + ".json"); + } + } + }//If it won't download, just search for it + try{ + inheritsVer = Tools.GLOBAL_GSON.fromJson(read(DIR_HOME_VERSION + "/" + customVer.inheritsFrom + "/" + customVer.inheritsFrom + ".json"), JMinecraftVersionList.Version.class); + }catch(IOException e) { + throw new RuntimeException("Can't find the source version for "+ versionName +" (req version="+customVer.inheritsFrom+")"); + } inheritsVer.inheritsFrom = inheritsVer.id; - insertSafety(inheritsVer, customVer, "assetIndex", "assets", "id", "mainClass", "minecraftArguments", diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index 5f00141e0..79e4eb97d 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -58,7 +58,7 @@ public class MinecraftDownloaderTask extends AsyncTask