From 9e53552a8ca6f724a3c01c528086b70079e67223 Mon Sep 17 00:00:00 2001 From: artdeell Date: Tue, 4 Feb 2025 16:54:39 +0300 Subject: [PATCH] Feat[bta_profile]: add the ability to install nightlies --- .../kdt/pojavlaunch/modloaders/BTAUtils.java | 38 +++++++++++++------ .../modloaders/BTAVersionListAdapter.java | 4 ++ .../src/main/res/values/strings.xml | 1 + 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAUtils.java index db567579d..cc267d620 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAUtils.java @@ -16,8 +16,8 @@ import java.util.List; import java.util.ListIterator; public class BTAUtils { - private static final String BTA_CLIENT_URL = "https://downloads.betterthanadventure.net/bta-client/release/%s/client.jar"; - private static final String BTA_ICON_URL = "https://downloads.betterthanadventure.net/bta-client/release/%s/auto/%s.png"; + private static final String BTA_CLIENT_URL = "https://downloads.betterthanadventure.net/bta-client/%s/%s/client.jar"; + private static final String BTA_ICON_URL = "https://downloads.betterthanadventure.net/bta-client/%s/%s/auto/%s.png"; private static final List BTA_TESTED_VERSIONS = new ArrayList<>(); static { BTA_TESTED_VERSIONS.add("v7.3"); @@ -27,26 +27,33 @@ public class BTAUtils { BTA_TESTED_VERSIONS.add("v7.1"); } - private static String getIconUrl(String version) { - String versionUnderscore = version.replace('.','_'); - return String.format(BTA_ICON_URL, version, versionUnderscore); + private static String getIconUrl(String version, String buildType) { + String iconName = version.replace('.','_'); + if(buildType.equals("nightly")) iconName = "v"+iconName; + return String.format(BTA_ICON_URL, buildType, version, iconName); } - private static List createVersionList(List versionStrings) { + private static List createVersionList(List versionStrings, String buildType) { ListIterator iterator = versionStrings.listIterator(versionStrings.size()); ArrayList btaVersions = new ArrayList<>(versionStrings.size()); while(iterator.hasPrevious()) { String version = iterator.previous(); + if(version == null) continue; btaVersions.add(new BTAVersion( version, - String.format(BTA_CLIENT_URL, version), - getIconUrl(version) + String.format(BTA_CLIENT_URL, buildType, version), + getIconUrl(version, buildType) )); } btaVersions.trimToSize(); return btaVersions; } + private static List processNightliesJson(String nightliesInfo) throws JsonParseException { + BTAVersionsManifest manifest = Tools.GLOBAL_GSON.fromJson(nightliesInfo, BTAVersionsManifest.class); + return createVersionList(manifest.versions, "nightly"); + } + private static BTAVersionList processReleasesJson(String releasesInfo) throws JsonParseException { BTAVersionsManifest manifest = Tools.GLOBAL_GSON.fromJson(releasesInfo, BTAVersionsManifest.class); List stringVersions = manifest.versions; @@ -62,16 +69,21 @@ public class BTAUtils { } return new BTAVersionList( - createVersionList(testedVersions), - createVersionList(untestedVersions) + createVersionList(testedVersions, "release"), + createVersionList(untestedVersions, "release"), + null ); } public static BTAVersionList downloadVersionList() throws IOException { try { - return DownloadUtils.downloadStringCached( + BTAVersionList releases = DownloadUtils.downloadStringCached( "https://downloads.betterthanadventure.net/bta-client/release/versions.json", "bta_releases", BTAUtils::processReleasesJson); + List nightlies = DownloadUtils.downloadStringCached( + "https://downloads.betterthanadventure.net/bta-client/nightly/versions.json", + "bta_nightlies", BTAUtils::processNightliesJson); + return new BTAVersionList(releases.testedVersions, releases.untestedVersions, nightlies); }catch (DownloadUtils.ParseException e) { Log.e("BTAUtils", "Failed to process json", e); return null; @@ -100,10 +112,12 @@ public class BTAUtils { public static class BTAVersionList { public final List testedVersions; public final List untestedVersions; + public final List nightlyVersions; - public BTAVersionList(List mTestedVersions, List mUntestedVersions) { + public BTAVersionList(List mTestedVersions, List mUntestedVersions, List nightlyVersions) { this.testedVersions = mTestedVersions; this.untestedVersions = mUntestedVersions; + this.nightlyVersions = nightlyVersions; } } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAVersionListAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAVersionListAdapter.java index 84c3c2393..4b1f99b66 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAVersionListAdapter.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/BTAVersionListAdapter.java @@ -31,6 +31,10 @@ public class BTAVersionListAdapter extends BaseExpandableListAdapter implements mGroupNames.add(context.getString(R.string.bta_installer_untested_versions)); mGroups.add(versionList.untestedVersions); } + if(!versionList.nightlyVersions.isEmpty()) { + mGroupNames.add(context.getString(R.string.bta_installer_nightly_versions)); + mGroups.add(versionList.nightlyVersions); + } mGroupNames.trimToSize(); mGroups.trimToSize(); } diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index cbd31b920..4db2f517d 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -428,4 +428,5 @@ Select \"Better than Adventure!\" version Supported BTA versions Untested BTA versions + Nightly BTA versions