From bb93215e5782aad221f17b9adee6ac852ce318d9 Mon Sep 17 00:00:00 2001 From: btwonion Date: Fri, 23 Aug 2024 21:09:11 +0200 Subject: [PATCH 1/2] update widgets correctly --- src/main/kotlin/dev/nyon/skylper/extensions/event/Events.kt | 5 +++++ .../nyon/skylper/skyblock/data/api/HeartOfTheMountainApi.kt | 3 +++ .../render/mining/crystalHollows/CrystalCompletionWidget.kt | 6 +++++- .../render/mining/crystalHollows/TotalPowderWidget.kt | 3 ++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/dev/nyon/skylper/extensions/event/Events.kt b/src/main/kotlin/dev/nyon/skylper/extensions/event/Events.kt index dc7b93b..8a06d86 100644 --- a/src/main/kotlin/dev/nyon/skylper/extensions/event/Events.kt +++ b/src/main/kotlin/dev/nyon/skylper/extensions/event/Events.kt @@ -73,6 +73,11 @@ data class CrystalFoundEvent(val crystal: Crystal) : InfoEvent */ data class CrystalPlaceEvent(val crystal: Crystal) : InfoEvent +/** + * Is invoked, when a crystal state is updated apart from place, found or run complete events. + */ +object CrystalStateUpdateEvent : InfoEvent + /** * Is invoked, when player gains a Crystal Loot Bundle. */ diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/HeartOfTheMountainApi.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/HeartOfTheMountainApi.kt index 7bed036..49f857b 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/HeartOfTheMountainApi.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/HeartOfTheMountainApi.kt @@ -1,6 +1,8 @@ package dev.nyon.skylper.skyblock.data.api import dev.nyon.skylper.extensions.* +import dev.nyon.skylper.extensions.event.CrystalStateUpdateEvent +import dev.nyon.skylper.extensions.event.EventHandler import dev.nyon.skylper.extensions.event.EventHandler.listenInfoEvent import dev.nyon.skylper.extensions.event.SetItemEvent import dev.nyon.skylper.skyblock.data.skylper.currentProfile @@ -59,6 +61,7 @@ object HeartOfTheMountainApi { else -> CrystalState.PLACED } } + EventHandler.invokeEvent(CrystalStateUpdateEvent) } name.matches(resetHotmRegex) -> { diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/CrystalCompletionWidget.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/CrystalCompletionWidget.kt index ab9cc85..b0b540d 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/CrystalCompletionWidget.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/CrystalCompletionWidget.kt @@ -23,7 +23,11 @@ object CrystalCompletionWidget : TableHudWidget( field = value } override val updateTriggerEvents: List>> = listOf( - CrystalFoundEvent::class, CrystalPlaceEvent::class, NucleusRunCompleteEvent::class, LevelChangeEvent::class + CrystalFoundEvent::class, + CrystalPlaceEvent::class, + NucleusRunCompleteEvent::class, + LevelChangeEvent::class, + CrystalStateUpdateEvent::class ) override fun update() { diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/TotalPowderWidget.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/TotalPowderWidget.kt index 1590270..ec885fe 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/TotalPowderWidget.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/render/mining/crystalHollows/TotalPowderWidget.kt @@ -2,6 +2,7 @@ package dev.nyon.skylper.skyblock.render.mining.crystalHollows import dev.nyon.skylper.config.config import dev.nyon.skylper.extensions.event.Event +import dev.nyon.skylper.extensions.event.PowderAdjustedEvent import dev.nyon.skylper.extensions.event.PowderGainEvent import dev.nyon.skylper.extensions.math.format import dev.nyon.skylper.extensions.render.hud.TableHudWidget @@ -25,7 +26,7 @@ object TotalPowderWidget : config.mining.totalPowderOverlay.y = value.toInt() field = value } - override val updateTriggerEvents: List>> = listOf(PowderGainEvent::class) + override val updateTriggerEvents: List>> = listOf(PowderGainEvent::class, PowderAdjustedEvent::class) override fun update() { super.update() From 2479143dfb9164596dcde982edccaefde09c4763 Mon Sep 17 00:00:00 2001 From: btwonion Date: Fri, 23 Aug 2024 21:33:26 +0200 Subject: [PATCH 2/2] fix double powder in widget --- .../data/api/CrystalHollowsPowderGrindingApi.kt | 5 +---- .../mining/crystalHollows/powder/PowderGrindingData.kt | 2 -- .../crystalHollows/powder/PowderGrindingTracker.kt | 10 ++++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/CrystalHollowsPowderGrindingApi.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/CrystalHollowsPowderGrindingApi.kt index 308eaa8..f224f01 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/CrystalHollowsPowderGrindingApi.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/data/api/CrystalHollowsPowderGrindingApi.kt @@ -7,8 +7,6 @@ import dev.nyon.skylper.extensions.regex import dev.nyon.skylper.extensions.singleGroup import dev.nyon.skylper.skyblock.models.mining.PowderType import dev.nyon.skylper.skyblock.models.mining.crystalHollows.ChestReward -import dev.nyon.skylper.skyblock.tracker.mining.crystalHollows.powder.PowderGrindingTracker.data -import dev.nyon.skylper.skyblock.tracker.mining.crystalHollows.powder.PowderGrindingTracker.startTime import kotlinx.datetime.Clock object CrystalHollowsPowderGrindingApi { @@ -36,7 +34,6 @@ object CrystalHollowsPowderGrindingApi { val rewards = ChestReward.entries.associateWith { reward -> val regex = reward.getRegex() if (!regex.matches(rawText)) return@associateWith 0 - if (startTime == null) startTime = now val amount = regex.singleGroup(rawText)?.doubleOrNull()?.toInt() ?: return@associateWith 0 amount }.toMutableMap().filter { it.value != 0 } @@ -55,6 +52,6 @@ object CrystalHollowsPowderGrindingApi { private val bossBarListener = listenInfoEvent { if (!CrystalHollowsLocationApi.isPlayerInHollows) return@listenInfoEvent if (!powderBossBarPattern.matches(rawText)) return@listenInfoEvent - data.doublePowderActive = true + doublePowderActive = true } } \ No newline at end of file diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingData.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingData.kt index b958ecd..4beb761 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingData.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingData.kt @@ -12,7 +12,6 @@ import net.minecraft.network.chat.Component import kotlin.reflect.KClass data class PowderGrindingData( - var doublePowderActive: Boolean = false, var gemstone: ResourceData = ResourceData(), var mithril: ResourceData = ResourceData(), var chest: ResourceData = ResourceData() @@ -76,7 +75,6 @@ data class PowderGrindingData( override val resetTriggers: List>> = listOf(LevelChangeEvent::class) override fun reset() { - doublePowderActive = false gemstone = ResourceData() mithril = ResourceData() chest = ResourceData() diff --git a/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingTracker.kt b/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingTracker.kt index ccca175..ecf3771 100644 --- a/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingTracker.kt +++ b/src/main/kotlin/dev/nyon/skylper/skyblock/tracker/mining/crystalHollows/powder/PowderGrindingTracker.kt @@ -7,6 +7,7 @@ import dev.nyon.skylper.extensions.event.EventHandler.listenInfoEvent import dev.nyon.skylper.extensions.tracker.Tracker import dev.nyon.skylper.independentScope import dev.nyon.skylper.skyblock.data.api.CrystalHollowsLocationApi +import dev.nyon.skylper.skyblock.data.api.CrystalHollowsPowderGrindingApi import dev.nyon.skylper.skyblock.models.mining.PowderType import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -39,7 +40,12 @@ object PowderGrindingTracker : Tracker("hollows.powder_grind } @Suppress("unused") - private val treasureChestRewardsEvent = listenInfoEvent { + private val treasureChestRewardsEvent = listenInfoEvent { + if (startTime == null) startTime = Clock.System.now() + } + + @Suppress("unused") + private val powderGainEvent = listenInfoEvent { when (type) { PowderType.MITHRIL -> data.mithril.updateByIncrease(amount, this@PowderGrindingTracker) PowderType.GEMSTONE -> data.gemstone.updateByIncrease(amount, this@PowderGrindingTracker) @@ -81,7 +87,7 @@ object PowderGrindingTracker : Tracker("hollows.powder_grind if (config.doublePowder) { add( finalComponent("double_powder", - Component.literal(if (data.doublePowderActive) Symbols.CHECK_MARK else Symbols.CROSS) + Component.literal(if (CrystalHollowsPowderGrindingApi.doublePowderActive) Symbols.CHECK_MARK else Symbols.CROSS) .withStyle { it.withBold(true).withColor(ChatFormatting.WHITE) }) ) }