Skip to content

Commit 254b453

Browse files
committed
feat: update supported version handling
fixes #13 modrinth is phasing out featured versions, so i made it so now it just compares `date_published` for every version instead of getting featured versions
1 parent ae1ebe6 commit 254b453

3 files changed

Lines changed: 21 additions & 18 deletions

File tree

src/main/kotlin/io/github/gaming32/additiveinstaller/Modpack.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,16 @@ class Modpack(val id: String) {
2929
?.readBytes()
3030
?.toBase64()
3131
?.prefix("data:image/png;base64,")
32-
val supportedMcVersions = buildSet {
33-
for ((key, value) in versions) {
34-
if (value.values.asSequence().flatMap { it.values }.any(PackVersion::isSupported)) {
35-
add(key)
36-
}
37-
}
32+
33+
private val latestVersionForMcFull = versions.mapValues { (_, packVersions) ->
34+
packVersions.values.flatMap { it.values }.maxBy { it.datePublished }
3835
}
36+
37+
val latestVersionForMc = latestVersionForMcFull.mapValues { it.value.packVersion }
38+
39+
private val globalLatestPackVersion = latestVersionForMcFull.values.maxBy { it.datePublished }.packVersion
40+
41+
val supportedMcVersions = latestVersionForMcFull
42+
.filterValues { it.packVersion == globalLatestPackVersion }
43+
.keys
3944
}

src/main/kotlin/io/github/gaming32/additiveinstaller/PackVersion.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package io.github.gaming32.additiveinstaller
22

33
import com.google.gson.JsonObject
44
import java.nio.file.Path
5+
import java.time.Instant
56

67
class PackVersion(val modpack: Modpack, val data: JsonObject) {
78
val packVersion: String
89
val gameVersion: String
910
val loader: Loader
11+
val datePublished: Instant
1012

1113
init {
1214
val versionNumber = data["version_number"].asString
@@ -23,12 +25,12 @@ class PackVersion(val modpack: Modpack, val data: JsonObject) {
2325
gameVersion = versionNumber.substringAfter('+').substringBeforeLast('.')
2426
versionNumber.substringAfterLast('.')
2527
}.uppercase().let(Loader::valueOf)
28+
datePublished = Instant.parse(data["date_published"].asString)
2629
}
2730

2831
val launcherFolderPath = "${modpack.id}/$packVersion-$gameVersion-$loader"
2932
val launcherVersionId = "${modpack.id}-$packVersion-$gameVersion-$loader"
3033
val launcherProfileId = "${modpack.id}-$gameVersion-$loader"
31-
val isSupported = data["featured"].asBoolean
3234

3335
fun install(destination: Path, progressHandler: ProgressHandler) =
3436
PackInstaller(this, destination, progressHandler)

src/main/kotlin/io/github/gaming32/additiveinstaller/main.kt

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,8 @@ fun main() {
6565
selectedPack.versions[gameVersion]
6666
?.keys
6767
?.forEach(packVersion::addItem)
68-
selectedPack.versions[gameVersion]
69-
?.entries
70-
?.first { it.value.values.any(PackVersion::isSupported) }
71-
?.let { packVersion.selectedItem = it.key }
68+
selectedPack.latestVersionForMc[gameVersion]
69+
?.let { packVersion.selectedItem = it }
7270
}
7371
}
7472

@@ -78,10 +76,10 @@ fun main() {
7876
val loaders = selectedPack.versions[gameVersion]
7977
?.get(selectedVersion) ?: return@addItemListener
8078
loaderSelector.removeAllItems()
81-
for ((loader, version) in loaders) {
82-
if (version.isSupported || includeUnsupportedMinecraft.isSelected) {
83-
loaderSelector.addItem(loader.name.lowercase().capitalize())
84-
}
79+
for ((loader, _) in loaders) {
80+
loaderSelector.addItem(
81+
loader.name.lowercase().replaceFirstChar { it.titlecase() }
82+
)
8583
}
8684
}
8785

@@ -90,9 +88,7 @@ fun main() {
9088
minecraftVersion.removeAllItems()
9189
val all = includeUnsupportedMinecraft.isSelected
9290
val supported = selectedPack.supportedMcVersions
93-
selectedPack.versions
94-
.keys
95-
.asSequence()
91+
selectedPack.versions.keys
9692
.filter { all || it in supported }
9793
.forEach(minecraftVersion::addItem)
9894
if (mcVersion != null) {

0 commit comments

Comments
 (0)