Skip to content
This repository was archived by the owner on Dec 30, 2022. It is now read-only.

Commit af4e5ca

Browse files
committed
Minor changes
- trying to delete files on delete - mark all mods on update check as installed - also check names Signed-off-by: DeathsGun <deathsgun@protonmail.com>
1 parent 8f41558 commit af4e5ca

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

src/main/kotlin/xyz/deathsgun/modmanager/models/FabricMetadata.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import kotlinx.serialization.Serializable
2121
@Serializable
2222
data class FabricMetadata(
2323
val id: String,
24+
val name: String,
2425
val custom: Custom = Custom(emptyMap())
2526
) {
2627
@Serializable

src/main/kotlin/xyz/deathsgun/modmanager/update/UpdateManager.kt

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import net.fabricmc.loader.api.SemanticVersion
2727
import net.fabricmc.loader.api.metadata.ModMetadata
2828
import net.fabricmc.loader.util.version.VersionDeserializer
2929
import net.minecraft.text.TranslatableText
30-
import net.minecraft.util.Util
3130
import org.apache.commons.io.FileUtils
3231
import org.apache.logging.log4j.LogManager
3332
import xyz.deathsgun.modmanager.ModManager
@@ -52,9 +51,8 @@ import java.nio.file.Files
5251
import java.nio.file.Path
5352
import java.security.MessageDigest
5453
import java.time.Duration
55-
import java.util.concurrent.TimeUnit
5654
import java.util.zip.ZipFile
57-
import kotlin.io.path.name
55+
import kotlin.io.path.absolutePathString
5856

5957

6058
class UpdateManager {
@@ -87,6 +85,7 @@ class UpdateManager {
8785
}
8886

8987
private fun checkForUpdatesManually(metadata: ModMetadata) {
88+
ModManager.modManager.setModState(metadata.id, metadata.id, ModState.INSTALLED)
9089
val defaultProvider = ModManager.modManager.config.defaultProvider
9190
val provider = ModManager.modManager.provider[defaultProvider]
9291
if (provider == null) {
@@ -159,6 +158,7 @@ class UpdateManager {
159158
}
160159

161160
private fun checkForUpdates(metadata: ModMetadata, ids: Map<String, String>) {
161+
ModManager.modManager.setModState(metadata.id, metadata.id, ModState.INSTALLED)
162162
var provider: IModUpdateProvider? = null
163163
var id: String? = null
164164
for ((provId, modId) in ids) {
@@ -293,7 +293,7 @@ class UpdateManager {
293293
?: return ModUpdateResult.Error(TranslatableText("modmanager.error.jar.notFound"))
294294
logger.info("Updating {}", update.mod.name)
295295
try {
296-
oldJar.forceDelete()
296+
oldJar.delete()
297297
} catch (e: Exception) {
298298
return ModUpdateResult.Error(TranslatableText("modmanager.error.jar.failedDelete", e))
299299
}
@@ -337,7 +337,9 @@ class UpdateManager {
337337
val meta = json.decodeFromString<FabricMetadata>(data)
338338
jarFile.close()
339339
if (meta.id == mod.id || meta.id == mod.slug || meta.id == mod.slug.replace("-", "") ||
340-
meta.custom.modmanager[ModManager.modManager.config.defaultProvider] == mod.id
340+
meta.custom.modmanager[ModManager.modManager.config.defaultProvider] == mod.id ||
341+
meta.id.replace("_", "-") == mod.id ||
342+
meta.name.equals(mod.name, true)
341343
) {
342344
return jar.toPath()
343345
}
@@ -360,22 +362,21 @@ class UpdateManager {
360362
return ids
361363
}
362364

363-
private fun getCheckableMods(): List<ModMetadata> {
365+
fun getCheckableMods(): List<ModMetadata> {
364366
return FabricLoader.getInstance().allMods.map { it.metadata }.filter {
365367
!it.id.startsWith("fabric") &&
366368
!CustomValueUtil.getBoolean("fabric-loom:generated", it).orElse(false) &&
367369
!blockedIds.contains(it.id)
368370
}
369371
}
370372

371-
private fun Path.forceDelete() {
372-
if (Util.getOperatingSystem() == Util.OperatingSystem.WINDOWS) {
373-
// Under windows this file gets locked can't be deleted by Java
374-
ProcessBuilder("cmd", "/c", "del /f ${this.name}").directory(this.parent.toFile()).start()
375-
.waitFor(200, TimeUnit.MILLISECONDS)
376-
return
373+
private fun Path.delete() {
374+
try {
375+
Files.delete(this)
376+
} catch (e: Exception) {
377+
logger.info("Error while deleting {} trying on exit again", this.absolutePathString())
378+
this.toFile().deleteOnExit()
377379
}
378-
Files.deleteIfExists(this)
379380
}
380381

381382
private fun Path.sha512(): String {
@@ -393,7 +394,7 @@ class UpdateManager {
393394
val jar = findJarByMod(mod)
394395
?: return ModRemoveResult.Error(TranslatableText("modmanager.error.jar.notFound"))
395396
return try {
396-
jar.forceDelete()
397+
jar.delete()
397398
ModManager.modManager.setModState(mod.slug, mod.id, ModState.DOWNLOADABLE)
398399
ModRemoveResult.Success
399400
} catch (e: Exception) {

src/main/resources/assets/modmanager/config.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/main/resources/assets/modmanager/lang/en_us.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"modmanager.button.updateChannel": "Update channel",
1111
"modmanager.button.save": "Save",
1212
"modmanager.categories": "Categories",
13-
"modmanager.category.updatable": "Updatable Mods",
13+
"modmanager.category.updatable": "Updatable mods",
14+
"modmanager.category.installed": "Installed mods",
1415
"modmanager.category.technology": "Technology",
1516
"modmanager.category.adventure": "Adventure",
1617
"modmanager.category.magic": "Magic",
@@ -39,6 +40,7 @@
3940
"modmanager.error.network": "Network error while retrieving data:\n %s",
4041
"modmanager.error.failedToParse": "Failed to parse response:\n %s",
4142
"modmanager.error.noCompatibleModVersionFound": "No compatible version found for your current channel!\nTry changing the channel in the Mod Manager settings!",
43+
"modmanager.error.jar.notFound": "Error jar file not found. Is it part of another mod?",
4244
"modmanager.status.installing": "Installing %s...",
4345
"modmanager.status.install.success": "Successfully installed %s!\nDo you want to go back?",
4446
"modmanager.status.updating": "Updating %s...",

0 commit comments

Comments
 (0)