diff options
author | Linnea Gräf <nea@nea.moe> | 2025-07-07 12:48:26 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-07-07 12:48:26 +0200 |
commit | 8e4e3499636b5662b167ffbb4f501888912f7ceb (patch) | |
tree | b6fac28622ccd7feabf835cad90de11ce2d36d15 /src/main/kotlin/repo/RepoManager.kt | |
parent | 5ead6193b4b01bd7db814d742afd602db63a0cc9 (diff) | |
download | Firmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.tar.gz Firmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.tar.bz2 Firmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.zip |
feat: reload repo on other thread (who knew people had slow hard drives)
Diffstat (limited to 'src/main/kotlin/repo/RepoManager.kt')
-rw-r--r-- | src/main/kotlin/repo/RepoManager.kt | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/main/kotlin/repo/RepoManager.kt b/src/main/kotlin/repo/RepoManager.kt index bebc39a..4675f70 100644 --- a/src/main/kotlin/repo/RepoManager.kt +++ b/src/main/kotlin/repo/RepoManager.kt @@ -7,7 +7,10 @@ import io.github.moulberry.repo.data.NEURecipe import io.github.moulberry.repo.data.Rarity import java.nio.file.Path import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import net.minecraft.client.MinecraftClient import net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket import net.minecraft.recipe.display.CuttingRecipeDisplay @@ -39,7 +42,9 @@ object RepoManager { val disableItemGroups by toggle("disable-item-groups") { true } val reload by button("reload") { save() - RepoManager.reload() + Firmament.coroutineScope.launch { + RepoManager.reload() + } } val redownload by button("redownload") { save() @@ -131,16 +136,12 @@ object RepoManager { fun reloadForTest(from: Path) { neuRepo = makeNEURepository(from) - reload() + GlobalScope.launch { + reload() + } } - fun reload() { - if (!TestUtil.isInTest && !MC.instance.isOnThread) { - MC.instance.send { - reload() - } - return - } + suspend fun reload() = withContext(Dispatchers.Default) { try { logger.info("Repo reload started.") neuRepo.reload() @@ -168,7 +169,9 @@ object RepoManager { if (Config.autoUpdate) { launchAsyncUpdate() } else { - reload() + Firmament.coroutineScope.launch { + reload() + } } } |