diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/repo')
-rw-r--r-- | src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt | 20 | ||||
-rw-r--r-- | src/main/kotlin/moe/nea/notenoughupdates/repo/RepoManager.kt | 11 |
2 files changed, 27 insertions, 4 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt b/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt index 8deb4c3..9255867 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt @@ -1,6 +1,7 @@ package moe.nea.notenoughupdates.repo import com.mojang.serialization.Dynamic +import io.github.cottonmc.cotton.gui.client.CottonHud import io.github.moulberry.repo.IReloadable import io.github.moulberry.repo.NEURepository import io.github.moulberry.repo.data.NEUItem @@ -79,11 +80,22 @@ object ItemCache : IReloadable { val j = job if (j != null && j.isActive) { j.cancel() - job = NotEnoughUpdates.coroutineScope.launch { - repository.items?.items?.values?.forEach { - it.asItemStack() // Rebuild cache - } + } + + job = NotEnoughUpdates.coroutineScope.launch { + val items = repository.items?.items + if (items == null) { + CottonHud.remove(RepoManager.progressBar) + return@launch + } + RepoManager.progressBar.reportProgress("Recache Items", 0, items.size) + CottonHud.add(RepoManager.progressBar) + var i = 0 + items.values.forEach { + it.asItemStack() // Rebuild cache + RepoManager.progressBar.reportProgress("Recache Items", i++, items.size) } + CottonHud.remove(RepoManager.progressBar) } } } diff --git a/src/main/kotlin/moe/nea/notenoughupdates/repo/RepoManager.kt b/src/main/kotlin/moe/nea/notenoughupdates/repo/RepoManager.kt index 375b2bb..c515ff7 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/repo/RepoManager.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/repo/RepoManager.kt @@ -1,5 +1,6 @@ package moe.nea.notenoughupdates.repo +import io.github.cottonmc.cotton.gui.client.CottonHud import io.github.moulberry.repo.NEURepository import io.github.moulberry.repo.NEURepositoryException import kotlinx.coroutines.launch @@ -7,6 +8,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.serializer import moe.nea.notenoughupdates.NotEnoughUpdates import moe.nea.notenoughupdates.NotEnoughUpdates.logger +import moe.nea.notenoughupdates.hud.ProgressBar import moe.nea.notenoughupdates.util.ConfigHolder import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents import net.minecraft.client.Minecraft @@ -24,6 +26,10 @@ object RepoManager : ConfigHolder<RepoManager.Config>(serializer(), "repo", ::Co var recentlyFailedToUpdateItemList = false + val progressBar = ProgressBar("", null, 0).also { + it.setSize(180, 22) + } + val neuRepo: NEURepository = NEURepository.of(RepoDownloadManager.repoSavedLocation).apply { registerReloadListener(ItemCache) registerReloadListener { @@ -49,13 +55,18 @@ object RepoManager : ConfigHolder<RepoManager.Config>(serializer(), "repo", ::Co fun launchAsyncUpdate() { NotEnoughUpdates.coroutineScope.launch { + progressBar.reportProgress("Downloading", 0, null) + CottonHud.add(progressBar) RepoDownloadManager.downloadUpdate() + progressBar.reportProgress("Download complete", 1, 1) reload() } } fun reload() { try { + progressBar.reportProgress("Reloading from Disk", 0, null) + CottonHud.add(progressBar) neuRepo.reload() } catch (exc: NEURepositoryException) { Minecraft.getInstance().player?.sendSystemMessage( |