aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-07 12:48:26 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-07 12:48:26 +0200
commit8e4e3499636b5662b167ffbb4f501888912f7ceb (patch)
treeb6fac28622ccd7feabf835cad90de11ce2d36d15
parent5ead6193b4b01bd7db814d742afd602db63a0cc9 (diff)
downloadFirmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.tar.gz
Firmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.tar.bz2
Firmament-8e4e3499636b5662b167ffbb4f501888912f7ceb.zip
feat: reload repo on other thread (who knew people had slow hard drives)
-rw-r--r--src/main/kotlin/repo/RepoManager.kt23
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()
+ }
}
}