@@ -136,7 +136,7 @@ class UpdateManager {
136136 result = updateProvider.getVersionsForMod(mod.id)
137137 val versions = when (result) {
138138 is VersionResult .Error -> {
139- logger.error(" Error while getting versions for mod {}" , metadata.id)
139+ logger.error(" Error while getting versions for mod {}" , metadata.id, result.cause )
140140 ModManager .modManager.setModState(metadata.id, mod.id, ModState .INSTALLED )
141141 return
142142 }
@@ -177,7 +177,7 @@ class UpdateManager {
177177 }
178178 val versions = when (val result = provider.getVersionsForMod(id)) {
179179 is VersionResult .Error -> {
180- logger.error(" Error while getting versions for mod {}" , metadata.id)
180+ logger.error(" Error while getting versions for mod {}" , metadata.id, result.cause )
181181 ModManager .modManager.setModState(metadata.id, id, ModState .INSTALLED )
182182 return
183183 }
@@ -261,25 +261,38 @@ class UpdateManager {
261261 private fun findLatestCompatible (installedVersion : String , versions : List <Version >): Version ? {
262262 var latest: Version ? = null
263263 var latestVersion: SemanticVersion ? = null
264+ var installed: Version ? = null
264265 val installVersion =
265- VersionDeserializer .deserializeSemantic(installedVersion.split( " + " )[ 0 ]) // Remove additional info from version
266+ VersionDeserializer .deserializeSemantic(installedVersion)
266267 for (version in versions) {
268+ if (version.version == installedVersion) {
269+ installed = version
270+ }
267271 if (! version.gameVersions.contains(ModManager .getMinecraftVersion()) ||
268272 ! ModManager .modManager.config.isReleaseAllowed(version.type)
269273 ) {
270274 continue
271275 }
272276 val ver = try {
273- VersionDeserializer .deserializeSemantic(version.version.split( " + " )[ 0 ] ) // Remove additional info from version
277+ VersionDeserializer .deserializeSemantic(version.version) // Remove additional info from version
274278 } catch (e: Exception ) {
279+ if (latestVersion == null || version.releaseDate > latest?.releaseDate) {
280+ logger.info(" Setting version {} via release date" , version.version)
281+ latest = version
282+ latestVersion = null
283+ continue
284+ }
275285 logger.warn(" Skipping error producing version {}" , version.version)
276286 continue
277287 }
278- if (latestVersion == null || ver > latestVersion) {
288+ if (latestVersion == null || ver > latestVersion || version.releaseDate > latest?.releaseDate ) {
279289 latest = version
280290 latestVersion = ver
281291 }
282292 }
293+ if (installed != null && installed.releaseDate > latest?.releaseDate) {
294+ return null
295+ }
283296 if (latestVersion?.compareTo(installVersion) == 0 ) {
284297 return null
285298 }
0 commit comments