diff --git a/src/main/kotlin/xyz/deathsgun/modmanager/ModManager.kt b/src/main/kotlin/xyz/deathsgun/modmanager/ModManager.kt index 40c807e..7898bdc 100644 --- a/src/main/kotlin/xyz/deathsgun/modmanager/ModManager.kt +++ b/src/main/kotlin/xyz/deathsgun/modmanager/ModManager.kt @@ -68,6 +68,7 @@ class ModManager : ClientModInitializer { provider[modrinth.getName().lowercase()] = modrinth updateProvider[modrinth.getName().lowercase()] = modrinth GlobalScope.launch { + update.fullyDeleteMods() update.checkUpdates() icons.cleanupCache() } diff --git a/src/main/kotlin/xyz/deathsgun/modmanager/update/UpdateManager.kt b/src/main/kotlin/xyz/deathsgun/modmanager/update/UpdateManager.kt index ca268aa..a8c1746 100644 --- a/src/main/kotlin/xyz/deathsgun/modmanager/update/UpdateManager.kt +++ b/src/main/kotlin/xyz/deathsgun/modmanager/update/UpdateManager.kt @@ -47,6 +47,7 @@ import java.net.http.HttpRequest import java.net.http.HttpResponse import java.nio.file.Files import java.nio.file.Path +import java.nio.file.StandardOpenOption import java.security.MessageDigest import java.time.Duration import java.util.zip.ZipFile @@ -388,8 +389,8 @@ class UpdateManager { try { Files.delete(this) } catch (e: Exception) { - logger.info("Error while deleting {} trying on exit again", this.absolutePathString()) - this.toFile().deleteOnExit() + logger.info("Error while deleting {} trying on restart again", this.absolutePathString()) + Files.writeString(this, "MODMANAGER", StandardOpenOption.WRITE) } } @@ -420,4 +421,22 @@ class UpdateManager { return URI("dummy", url.replace("\t", ""), null).rawSchemeSpecificPart } + fun fullyDeleteMods() { + val jars = + FileUtils.listFiles(FabricLoader.getInstance().gameDir.resolve("mods").toFile(), arrayOf("jar"), true) + for (jar in jars) { + val content = try { + Files.readString(jar.toPath()) + } catch (e: Exception) { + logger.info("Failed to read file ignoring it: {}", e.message) + "" + } + if (content != "MODMANGER") { + continue + } + logger.info("Deleting {}", jar.absolutePath) + jar.delete() + } + } + } \ No newline at end of file