From a16e2bad0a97772dff2fae08f2a1be9ce2a544c8 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 02:23:15 +0100 Subject: [PATCH 01/25] init flowstate helper --- .../config/features/mining/MiningConfig.java | 13 ++++ .../features/mining/FlowstateHelper.kt | 71 +++++++++++++++++++ .../at/hannibal2/skyhanni/utils/ItemUtils.kt | 5 ++ 3 files changed, 89 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java index 5f242ecd5f47..1d748538e0b6 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java @@ -1,10 +1,12 @@ package at.hannibal2.skyhanni.config.features.mining; import at.hannibal2.skyhanni.config.FeatureToggle; +import at.hannibal2.skyhanni.config.core.config.Position; import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.Accordion; import io.github.notenoughupdates.moulconfig.annotations.Category; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; +import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; public class MiningConfig { @@ -102,4 +104,15 @@ public class MiningConfig { @ConfigEditorBoolean @FeatureToggle public boolean forgeGfs = false; + + @Expose + @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") + @ConfigEditorBoolean + @FeatureToggle + public boolean flowstateHelper = false; + + @Expose + @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") + @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") + public Position flowstateHelperPosition = new Position(); } diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt new file mode 100644 index 000000000000..9868c00a923b --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -0,0 +1,71 @@ +package at.hannibal2.skyhanni.features.mining + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.api.event.HandleEvent +import at.hannibal2.skyhanni.data.MiningAPI +import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.mining.OreMinedEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule +import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.DelayedRun +import at.hannibal2.skyhanni.utils.ItemUtils +import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderable +import at.hannibal2.skyhanni.utils.SimpleTimeMark +import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getEnchantments +import at.hannibal2.skyhanni.utils.inPartialSeconds +import at.hannibal2.skyhanni.utils.renderables.Renderable +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import kotlin.time.Duration.Companion.seconds + +@SkyHanniModule +object FlowstateHelper { + private val config get() = SkyHanniMod.feature.mining + private var timeSinceBreak = SimpleTimeMark.farPast() + private var display: Renderable? = null + + private var blockBreakStreak = 0 + + @HandleEvent(onlyOnSkyblock = true) + fun onBlockMined(event: OreMinedEvent) { + if (!MiningAPI.inCustomMiningIsland()) return + if (hasFlowstate() == null) return + + timeSinceBreak = SimpleTimeMark.now().plus(10.seconds) + blockBreakStreak += event.extraBlocks.values.sum() + event.extraBlocks.forEach { (block, amount) -> + ChatUtils.debug("Mined $amount ${block.name}") + } + createDisplay() + + DelayedRun.runDelayed(10.seconds) { + if (timeSinceBreak.isInFuture()) return@runDelayed + blockBreakStreak = 0 + createDisplay() + } + } + + @SubscribeEvent + fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { + if (!config.flowstateHelper) return + + if (display == null || timeSinceBreak.isInFuture()) createDisplay() + display?.let { config.flowstateHelperPosition.renderRenderable(it, "Flowstate Helper", true) } + } + + private fun createDisplay() { + var timeRemaining = timeSinceBreak.minus(SimpleTimeMark.now()).inPartialSeconds.toString() + if (timeRemaining.contains("-")) timeRemaining = "0.0" + display = Renderable.string( + "streak: ${if (blockBreakStreak >= 200) "§6" else ""}$blockBreakStreak" + + " §ftime until explode: $timeRemaining" + " speedbonus: ${getSpeedBonus()}", + ) + } + + private fun getSpeedBonus(): Int { + val flowstateLevel = hasFlowstate() ?: 0 + if (blockBreakStreak >= 200) return 200 * flowstateLevel + return blockBreakStreak * flowstateLevel + } + + private fun hasFlowstate(): Int? = ItemUtils.getHeldItem()?.getEnchantments()?.getValue("ultimate_flowstate") +} diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt index cc1a4362b070..b0339f55de78 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt @@ -515,4 +515,9 @@ object ItemUtils { true, true, ) } + + fun getHeldItem(): ItemStack? { + val player = Minecraft.getMinecraft().thePlayer ?: return null + return player.heldItem + } } From 25be3b0e8d6a5e4a78fb558f03bea8b8c0710dc0 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 03:14:19 +0100 Subject: [PATCH 02/25] revamp gui look --- .../features/mining/FlowstateHelper.kt | 50 +++++++++++++++---- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 9868c00a923b..092a51d9d90a 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -9,7 +9,7 @@ import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.DelayedRun import at.hannibal2.skyhanni.utils.ItemUtils -import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderable +import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getEnchantments import at.hannibal2.skyhanni.utils.inPartialSeconds @@ -21,7 +21,7 @@ import kotlin.time.Duration.Companion.seconds object FlowstateHelper { private val config get() = SkyHanniMod.feature.mining private var timeSinceBreak = SimpleTimeMark.farPast() - private var display: Renderable? = null + private var display: List? = null private var blockBreakStreak = 0 @@ -49,16 +49,42 @@ object FlowstateHelper { if (!config.flowstateHelper) return if (display == null || timeSinceBreak.isInFuture()) createDisplay() - display?.let { config.flowstateHelperPosition.renderRenderable(it, "Flowstate Helper", true) } + display?.let { + config.flowstateHelperPosition.renderRenderables( + listOf(Renderable.verticalContainer(it, 1)), + posLabel = "Flowstate Helper", + addToGuiManager = true + ) + } } private fun createDisplay() { - var timeRemaining = timeSinceBreak.minus(SimpleTimeMark.now()).inPartialSeconds.toString() - if (timeRemaining.contains("-")) timeRemaining = "0.0" - display = Renderable.string( - "streak: ${if (blockBreakStreak >= 200) "§6" else ""}$blockBreakStreak" + - " §ftime until explode: $timeRemaining" + " speedbonus: ${getSpeedBonus()}", - ) + val helperDisplay: MutableList = mutableListOf() + + helperDisplay.add(Renderable.string("§d§lFlowstate Helper")) + helperDisplay.add(createDisplayTimer()) + helperDisplay.add(createDisplayBlock()) + helperDisplay.add(Renderable.string("§6+${getSpeedBonus()}⸕")) + + display = helperDisplay.toList() + } + + private fun createDisplayTimer(): Renderable { + var timeRemaining = timeSinceBreak.minus(SimpleTimeMark.now()).inPartialSeconds + if (timeRemaining < 0.0) timeRemaining = 0.0 + + val timerColor = when (timeRemaining) { + in 0.0..3.0 -> "§c" + in 3.0..6.0 -> "§e" + in 6.0..10.0 -> "§a" + else -> "§c" + } + return Renderable.string("Time Remaining: $timerColor$timeRemaining") + } + + private fun createDisplayBlock(): Renderable { + val textColor = if (blockBreakStreak < 200) "§7" else "§f" + return Renderable.string("Streak: $textColor$blockBreakStreak") } private fun getSpeedBonus(): Int { @@ -67,5 +93,9 @@ object FlowstateHelper { return blockBreakStreak * flowstateLevel } - private fun hasFlowstate(): Int? = ItemUtils.getHeldItem()?.getEnchantments()?.getValue("ultimate_flowstate") + private fun hasFlowstate(): Int? { + val enchantList = ItemUtils.getHeldItem()?.getEnchantments() ?: return null + if ("ultimate_flowstate" !in enchantList) return null + return enchantList.getValue("ultimate_flowstate") + } } From ef2168aea0d06fd668c78097dde4bfd4233760ab Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 03:22:53 +0100 Subject: [PATCH 03/25] add pickoniumbus support --- .../features/mining/FlowstateHelper.kt | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 092a51d9d90a..37ae74dc9c7d 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -4,16 +4,18 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.api.event.HandleEvent import at.hannibal2.skyhanni.data.MiningAPI import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule -import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.DelayedRun import at.hannibal2.skyhanni.utils.ItemUtils +import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getEnchantments import at.hannibal2.skyhanni.utils.inPartialSeconds import at.hannibal2.skyhanni.utils.renderables.Renderable +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.seconds @@ -25,6 +27,11 @@ object FlowstateHelper { private var blockBreakStreak = 0 + private val pickobulusPattern by RepoPattern.pattern( + "mining.pickobulus.blockdestroy", + "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" + ) + @HandleEvent(onlyOnSkyblock = true) fun onBlockMined(event: OreMinedEvent) { if (!MiningAPI.inCustomMiningIsland()) return @@ -32,11 +39,24 @@ object FlowstateHelper { timeSinceBreak = SimpleTimeMark.now().plus(10.seconds) blockBreakStreak += event.extraBlocks.values.sum() - event.extraBlocks.forEach { (block, amount) -> - ChatUtils.debug("Mined $amount ${block.name}") - } createDisplay() + attemptClearDisplay() + } + + @SubscribeEvent + fun onChat(event: LorenzChatEvent) { + if (!MiningAPI.inCustomMiningIsland()) return + if (hasFlowstate() == null) return + pickobulusPattern.matchMatcher(event.message) { + timeSinceBreak = SimpleTimeMark.now().plus(10.seconds) + blockBreakStreak += group("amount").toInt() + createDisplay() + attemptClearDisplay() + } + } + + private fun attemptClearDisplay() { DelayedRun.runDelayed(10.seconds) { if (timeSinceBreak.isInFuture()) return@runDelayed blockBreakStreak = 0 @@ -46,7 +66,9 @@ object FlowstateHelper { @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { + if (!MiningAPI.inCustomMiningIsland()) return if (!config.flowstateHelper) return + if (hasFlowstate() == null) return if (display == null || timeSinceBreak.isInFuture()) createDisplay() display?.let { From 6b36db7271a18c06a59d400096e1d0aa2e8db9f5 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 03:35:37 +0100 Subject: [PATCH 04/25] fix config --- .../skyhanni/config/features/mining/MiningConfig.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java index 1d748538e0b6..d863e0415a91 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java @@ -112,7 +112,6 @@ public class MiningConfig { public boolean flowstateHelper = false; @Expose - @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") - public Position flowstateHelperPosition = new Position(); + public Position flowstateHelperPosition = new Position(0 , 0); //TODO } From 68cdf6a4c6877c3f70d14859a7e79ddd516fc479 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 11:39:32 +0100 Subject: [PATCH 05/25] remove gethelditem --- .../at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 4 ++-- src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 37ae74dc9c7d..5657dfa03180 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -8,7 +8,7 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.DelayedRun -import at.hannibal2.skyhanni.utils.ItemUtils +import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark @@ -116,7 +116,7 @@ object FlowstateHelper { } private fun hasFlowstate(): Int? { - val enchantList = ItemUtils.getHeldItem()?.getEnchantments() ?: return null + val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null if ("ultimate_flowstate" !in enchantList) return null return enchantList.getValue("ultimate_flowstate") } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt index b0339f55de78..cc1a4362b070 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt @@ -515,9 +515,4 @@ object ItemUtils { true, true, ) } - - fun getHeldItem(): ItemStack? { - val player = Minecraft.getMinecraft().thePlayer ?: return null - return player.heldItem - } } From 773c9237329e72bf32cc2740b2d2959c40831b41 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 11:58:57 +0100 Subject: [PATCH 06/25] cache some values --- .../features/mining/FlowstateHelper.kt | 78 ++++++++++++++----- 1 file changed, 58 insertions(+), 20 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 5657dfa03180..6d305dfdaa7e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -4,10 +4,11 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.api.event.HandleEvent import at.hannibal2.skyhanni.data.MiningAPI import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.ItemInHandChangeEvent import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule -import at.hannibal2.skyhanni.utils.DelayedRun import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables @@ -22,10 +23,15 @@ import kotlin.time.Duration.Companion.seconds @SkyHanniModule object FlowstateHelper { private val config get() = SkyHanniMod.feature.mining - private var timeSinceBreak = SimpleTimeMark.farPast() + private var streakEndTimer = SimpleTimeMark.farPast() + private var blockBreakStreak = 0 + private var display: List? = null + private var displayDirty = false - private var blockBreakStreak = 0 + private var titleRenderable = Renderable.string("") + private var streakRenderable = Renderable.string("") + private var speedRenderable = Renderable.string("") private val pickobulusPattern by RepoPattern.pattern( "mining.pickobulus.blockdestroy", @@ -37,9 +43,10 @@ object FlowstateHelper { if (!MiningAPI.inCustomMiningIsland()) return if (hasFlowstate() == null) return - timeSinceBreak = SimpleTimeMark.now().plus(10.seconds) + streakEndTimer = SimpleTimeMark.now().plus(10.seconds) blockBreakStreak += event.extraBlocks.values.sum() createDisplay() + displayDirty = true attemptClearDisplay() } @@ -49,19 +56,26 @@ object FlowstateHelper { if (hasFlowstate() == null) return pickobulusPattern.matchMatcher(event.message) { - timeSinceBreak = SimpleTimeMark.now().plus(10.seconds) + streakEndTimer = SimpleTimeMark.now().plus(10.seconds) blockBreakStreak += group("amount").toInt() createDisplay() + displayDirty = true attemptClearDisplay() } } + @SubscribeEvent + fun onTick(event: LorenzTickEvent) { + if (!MiningAPI.inCustomMiningIsland()) return + if (hasFlowstate() == null) return + + attemptClearDisplay() + } + private fun attemptClearDisplay() { - DelayedRun.runDelayed(10.seconds) { - if (timeSinceBreak.isInFuture()) return@runDelayed - blockBreakStreak = 0 - createDisplay() - } + if (streakEndTimer.isInFuture()) return + blockBreakStreak = 0 + createDisplay() } @SubscribeEvent @@ -70,7 +84,7 @@ object FlowstateHelper { if (!config.flowstateHelper) return if (hasFlowstate() == null) return - if (display == null || timeSinceBreak.isInFuture()) createDisplay() + if (display == null || streakEndTimer.isInFuture()) createDisplay() display?.let { config.flowstateHelperPosition.renderRenderables( listOf(Renderable.verticalContainer(it, 1)), @@ -81,18 +95,31 @@ object FlowstateHelper { } private fun createDisplay() { - val helperDisplay: MutableList = mutableListOf() - - helperDisplay.add(Renderable.string("§d§lFlowstate Helper")) - helperDisplay.add(createDisplayTimer()) - helperDisplay.add(createDisplayBlock()) - helperDisplay.add(Renderable.string("§6+${getSpeedBonus()}⸕")) + if (displayDirty) { + displayDirty = false + display = buildList { + createDisplayTitle() + createDisplayTimer() + createDisplayBlock() + createDisplaySpeed() + } + } else { + display = buildList { + titleRenderable + createDisplayTimer() + streakRenderable + speedRenderable + } + } + } - display = helperDisplay.toList() + private fun createDisplayTitle(): Renderable { + titleRenderable = Renderable.string("§d§lFlowstate Helper") + return titleRenderable } private fun createDisplayTimer(): Renderable { - var timeRemaining = timeSinceBreak.minus(SimpleTimeMark.now()).inPartialSeconds + var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()).inPartialSeconds if (timeRemaining < 0.0) timeRemaining = 0.0 val timerColor = when (timeRemaining) { @@ -106,7 +133,13 @@ object FlowstateHelper { private fun createDisplayBlock(): Renderable { val textColor = if (blockBreakStreak < 200) "§7" else "§f" - return Renderable.string("Streak: $textColor$blockBreakStreak") + streakRenderable = Renderable.string("Streak: $textColor$blockBreakStreak") + return streakRenderable + } + + private fun createDisplaySpeed(): Renderable { + speedRenderable = Renderable.string("§6+${getSpeedBonus()}⸕") + return speedRenderable } private fun getSpeedBonus(): Int { @@ -115,6 +148,11 @@ object FlowstateHelper { return blockBreakStreak * flowstateLevel } + @SubscribeEvent + fun itemInHand(event: ItemInHandChangeEvent) { + + } + private fun hasFlowstate(): Int? { val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null if ("ultimate_flowstate" !in enchantList) return null From 71709481ed636a1a49f1b31af27a38db7fd98f8e Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 12:55:14 +0100 Subject: [PATCH 07/25] fix list building, finish caching stuff --- .../features/mining/FlowstateHelper.kt | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 6d305dfdaa7e..5fb49ad9d282 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -33,6 +33,9 @@ object FlowstateHelper { private var streakRenderable = Renderable.string("") private var speedRenderable = Renderable.string("") + private var flowstateCache: Int? = null + private var hasChangedItem = true + private val pickobulusPattern by RepoPattern.pattern( "mining.pickobulus.blockdestroy", "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" @@ -59,8 +62,8 @@ object FlowstateHelper { streakEndTimer = SimpleTimeMark.now().plus(10.seconds) blockBreakStreak += group("amount").toInt() createDisplay() - displayDirty = true attemptClearDisplay() + displayDirty = true } } @@ -75,6 +78,7 @@ object FlowstateHelper { private fun attemptClearDisplay() { if (streakEndTimer.isInFuture()) return blockBreakStreak = 0 + displayDirty = true createDisplay() } @@ -98,17 +102,17 @@ object FlowstateHelper { if (displayDirty) { displayDirty = false display = buildList { - createDisplayTitle() - createDisplayTimer() - createDisplayBlock() - createDisplaySpeed() + add(createDisplayTitle()) + add(createDisplayTimer()) + add(createDisplayBlock()) + add(createDisplaySpeed()) } } else { display = buildList { - titleRenderable - createDisplayTimer() - streakRenderable - speedRenderable + add(titleRenderable) + add(createDisplayTimer()) + add(streakRenderable) + add(speedRenderable) } } } @@ -149,13 +153,17 @@ object FlowstateHelper { } @SubscribeEvent - fun itemInHand(event: ItemInHandChangeEvent) { - + fun onChangeItem(event: ItemInHandChangeEvent) { + hasChangedItem = true } private fun hasFlowstate(): Int? { - val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null - if ("ultimate_flowstate" !in enchantList) return null - return enchantList.getValue("ultimate_flowstate") + if (hasChangedItem) { + val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null + if ("ultimate_flowstate" !in enchantList) return null + flowstateCache = enchantList.getValue("ultimate_flowstate") + hasChangedItem = false + } + return flowstateCache } } From c47871a093d6b5b85ff86f684b47ed0f6c617cde Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 21:27:57 +0100 Subject: [PATCH 08/25] add pickobulus todo --- .../skyhanni/features/mining/FlowstateHelper.kt | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 5fb49ad9d282..0378fc13300e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -54,7 +54,7 @@ object FlowstateHelper { } @SubscribeEvent - fun onChat(event: LorenzChatEvent) { + fun onChat(event: LorenzChatEvent) { //TODO: Remove once #2540 is merged if (!MiningAPI.inCustomMiningIsland()) return if (hasFlowstate() == null) return @@ -126,13 +126,7 @@ object FlowstateHelper { var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()).inPartialSeconds if (timeRemaining < 0.0) timeRemaining = 0.0 - val timerColor = when (timeRemaining) { - in 0.0..3.0 -> "§c" - in 3.0..6.0 -> "§e" - in 6.0..10.0 -> "§a" - else -> "§c" - } - return Renderable.string("Time Remaining: $timerColor$timeRemaining") + return Renderable.string("Time Remaining: §b$timeRemaining") } private fun createDisplayBlock(): Renderable { From c36de069b18c6cc4c9119a9466071916884b0c73 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sat, 21 Sep 2024 23:34:52 +0100 Subject: [PATCH 09/25] turn gui into a draggablelist --- .../config/features/mining/MiningConfig.java | 10 ++++ .../features/mining/FlowstateHelper.kt | 54 ++++++++++++------- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java index d863e0415a91..0cea398b100d 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java @@ -2,13 +2,18 @@ import at.hannibal2.skyhanni.config.FeatureToggle; import at.hannibal2.skyhanni.config.core.config.Position; +import at.hannibal2.skyhanni.features.mining.FlowstateHelper; import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.Accordion; import io.github.notenoughupdates.moulconfig.annotations.Category; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; +import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; +import java.util.ArrayList; +import java.util.List; + public class MiningConfig { @Expose @@ -111,6 +116,11 @@ public class MiningConfig { @FeatureToggle public boolean flowstateHelper = false; + @Expose + @ConfigOption(name = "Flowstate Appearance", desc = "Drag text to change the appearance.") + @ConfigEditorDraggableList() + public List flowstateHelperAppearance = new ArrayList<>(FlowstateHelper.FlowstateElements.defaultOption); + @Expose @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") public Position flowstateHelperPosition = new Position(0 , 0); //TODO diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 0378fc13300e..80a01e6c40e2 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -29,10 +29,6 @@ object FlowstateHelper { private var display: List? = null private var displayDirty = false - private var titleRenderable = Renderable.string("") - private var streakRenderable = Renderable.string("") - private var speedRenderable = Renderable.string("") - private var flowstateCache: Int? = null private var hasChangedItem = true @@ -41,6 +37,22 @@ object FlowstateHelper { "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" ) + enum class FlowstateElements(val label: String, var renderable: Renderable) { + TITLE("§d§lFlowstate Helper", Renderable.string("")), + TIMER("Time Remaining: §b6.71", Renderable.string("")), + STREAK("Streak: §7234", Renderable.string("")), + SPEED("§6+600⸕", Renderable.string("")); + + override fun toString() = label + + companion object { + @JvmField + val defaultOption = listOf( + TITLE, TIMER, STREAK, SPEED + ) + } + } + @HandleEvent(onlyOnSkyblock = true) fun onBlockMined(event: OreMinedEvent) { if (!MiningAPI.inCustomMiningIsland()) return @@ -101,43 +113,47 @@ object FlowstateHelper { private fun createDisplay() { if (displayDirty) { displayDirty = false + createDisplayTitle() + createDisplayTimer() + createDisplayBlock() + createDisplaySpeed() display = buildList { - add(createDisplayTitle()) - add(createDisplayTimer()) - add(createDisplayBlock()) - add(createDisplaySpeed()) + config.flowstateHelperAppearance.forEach { + add(it.renderable) + } } } else { + createDisplayTimer() display = buildList { - add(titleRenderable) - add(createDisplayTimer()) - add(streakRenderable) - add(speedRenderable) + config.flowstateHelperAppearance.forEach { + add(it.renderable) + } } } } private fun createDisplayTitle(): Renderable { - titleRenderable = Renderable.string("§d§lFlowstate Helper") - return titleRenderable + FlowstateElements.TITLE.renderable = Renderable.string("§d§lFlowstate Helper") + return FlowstateElements.TITLE.renderable } private fun createDisplayTimer(): Renderable { var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()).inPartialSeconds if (timeRemaining < 0.0) timeRemaining = 0.0 - return Renderable.string("Time Remaining: §b$timeRemaining") + FlowstateElements.TIMER.renderable = Renderable.string("Time Remaining: §b$timeRemaining") + return FlowstateElements.TIMER.renderable } private fun createDisplayBlock(): Renderable { val textColor = if (blockBreakStreak < 200) "§7" else "§f" - streakRenderable = Renderable.string("Streak: $textColor$blockBreakStreak") - return streakRenderable + FlowstateElements.STREAK.renderable = Renderable.string("Streak: $textColor$blockBreakStreak") + return FlowstateElements.STREAK.renderable } private fun createDisplaySpeed(): Renderable { - speedRenderable = Renderable.string("§6+${getSpeedBonus()}⸕") - return speedRenderable + FlowstateElements.SPEED.renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + return FlowstateElements.SPEED.renderable } private fun getSpeedBonus(): Int { From 5ea502f6bff6122406cccd6356e7491506730c04 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 22 Sep 2024 01:43:31 +0100 Subject: [PATCH 10/25] misc fixes --- .../features/mining/FlowstateHelper.kt | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 80a01e6c40e2..c7cb8f701741 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -38,7 +38,7 @@ object FlowstateHelper { ) enum class FlowstateElements(val label: String, var renderable: Renderable) { - TITLE("§d§lFlowstate Helper", Renderable.string("")), + TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), TIMER("Time Remaining: §b6.71", Renderable.string("")), STREAK("Streak: §7234", Renderable.string("")), SPEED("§6+600⸕", Renderable.string("")); @@ -82,7 +82,6 @@ object FlowstateHelper { @SubscribeEvent fun onTick(event: LorenzTickEvent) { if (!MiningAPI.inCustomMiningIsland()) return - if (hasFlowstate() == null) return attemptClearDisplay() } @@ -103,9 +102,10 @@ object FlowstateHelper { if (display == null || streakEndTimer.isInFuture()) createDisplay() display?.let { config.flowstateHelperPosition.renderRenderables( - listOf(Renderable.verticalContainer(it, 1)), - posLabel = "Flowstate Helper", - addToGuiManager = true + it, + 1, + "Flowstate Helper", + true ) } } @@ -113,28 +113,13 @@ object FlowstateHelper { private fun createDisplay() { if (displayDirty) { displayDirty = false - createDisplayTitle() createDisplayTimer() createDisplayBlock() createDisplaySpeed() - display = buildList { - config.flowstateHelperAppearance.forEach { - add(it.renderable) - } - } } else { createDisplayTimer() - display = buildList { - config.flowstateHelperAppearance.forEach { - add(it.renderable) - } - } } - } - - private fun createDisplayTitle(): Renderable { - FlowstateElements.TITLE.renderable = Renderable.string("§d§lFlowstate Helper") - return FlowstateElements.TITLE.renderable + display = config.flowstateHelperAppearance.map { it.renderable } } private fun createDisplayTimer(): Renderable { From ff4b6fbc9ebabe62d8a5a87d63c0d59e1b0158c1 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 22 Sep 2024 02:19:56 +0100 Subject: [PATCH 11/25] add default location, reset on islandchange --- .../skyhanni/config/features/mining/MiningConfig.java | 2 +- .../skyhanni/features/mining/FlowstateHelper.kt | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java index d693eb3cbffc..737ee8d16291 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java @@ -117,5 +117,5 @@ public class MiningConfig { @Expose @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") - public Position flowstateHelperPosition = new Position(0 , 0); //TODO + public Position flowstateHelperPosition = new Position(-110 , 9); } diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index c7cb8f701741..d343e83e2f12 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -4,6 +4,7 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.api.event.HandleEvent import at.hannibal2.skyhanni.data.MiningAPI import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.IslandChangeEvent import at.hannibal2.skyhanni.events.ItemInHandChangeEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzTickEvent @@ -152,6 +153,14 @@ object FlowstateHelper { hasChangedItem = true } + @SubscribeEvent + fun onIslandChange(event: IslandChangeEvent) { + blockBreakStreak = 0 + displayDirty = true + streakEndTimer = SimpleTimeMark.now() + createDisplay() + } + private fun hasFlowstate(): Int? { if (hasChangedItem) { val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null From 36fee909f1cb0b453f0cb4788f89ad0b7c174899 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 22 Sep 2024 14:20:53 +0100 Subject: [PATCH 12/25] add cal's suggestions --- .../features/mining/FlowstateHelper.kt | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index d343e83e2f12..b22c0d309089 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -31,7 +31,6 @@ object FlowstateHelper { private var displayDirty = false private var flowstateCache: Int? = null - private var hasChangedItem = true private val pickobulusPattern by RepoPattern.pattern( "mining.pickobulus.blockdestroy", @@ -42,7 +41,8 @@ object FlowstateHelper { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), TIMER("Time Remaining: §b6.71", Renderable.string("")), STREAK("Streak: §7234", Renderable.string("")), - SPEED("§6+600⸕", Renderable.string("")); + SPEED("§6+600⸕", Renderable.string("")), + ; override fun toString() = label @@ -57,7 +57,7 @@ object FlowstateHelper { @HandleEvent(onlyOnSkyblock = true) fun onBlockMined(event: OreMinedEvent) { if (!MiningAPI.inCustomMiningIsland()) return - if (hasFlowstate() == null) return + if (flowstateCache == null) return streakEndTimer = SimpleTimeMark.now().plus(10.seconds) blockBreakStreak += event.extraBlocks.values.sum() @@ -69,7 +69,7 @@ object FlowstateHelper { @SubscribeEvent fun onChat(event: LorenzChatEvent) { //TODO: Remove once #2540 is merged if (!MiningAPI.inCustomMiningIsland()) return - if (hasFlowstate() == null) return + if (flowstateCache == null) return pickobulusPattern.matchMatcher(event.message) { streakEndTimer = SimpleTimeMark.now().plus(10.seconds) @@ -98,7 +98,7 @@ object FlowstateHelper { fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { if (!MiningAPI.inCustomMiningIsland()) return if (!config.flowstateHelper) return - if (hasFlowstate() == null) return + if (flowstateCache == null) return if (display == null || streakEndTimer.isInFuture()) createDisplay() display?.let { @@ -143,31 +143,26 @@ object FlowstateHelper { } private fun getSpeedBonus(): Int { - val flowstateLevel = hasFlowstate() ?: 0 + val flowstateLevel = flowstateCache ?: 0 if (blockBreakStreak >= 200) return 200 * flowstateLevel return blockBreakStreak * flowstateLevel } @SubscribeEvent fun onChangeItem(event: ItemInHandChangeEvent) { - hasChangedItem = true + hasFlowstate() } @SubscribeEvent fun onIslandChange(event: IslandChangeEvent) { - blockBreakStreak = 0 - displayDirty = true - streakEndTimer = SimpleTimeMark.now() - createDisplay() + streakEndTimer = SimpleTimeMark.farPast() + attemptClearDisplay() } private fun hasFlowstate(): Int? { - if (hasChangedItem) { - val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null - if ("ultimate_flowstate" !in enchantList) return null - flowstateCache = enchantList.getValue("ultimate_flowstate") - hasChangedItem = false - } + val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null + if ("ultimate_flowstate" !in enchantList) return null + flowstateCache = enchantList.getValue("ultimate_flowstate") return flowstateCache } } From 300b53b080d3922832765da3878fc9cb835621fd Mon Sep 17 00:00:00 2001 From: martimavocado Date: Mon, 23 Sep 2024 22:12:16 +0100 Subject: [PATCH 13/25] hanni's review --- .../mining/FlowstateHelperConfig.java | 29 +++++ .../config/features/mining/MiningConfig.java | 27 +---- .../features/mining/FlowstateHelper.kt | 108 +++++++++--------- 3 files changed, 85 insertions(+), 79 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java new file mode 100644 index 000000000000..daf6aaf354cc --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -0,0 +1,29 @@ +package at.hannibal2.skyhanni.config.features.mining; + +import at.hannibal2.skyhanni.config.FeatureToggle; +import at.hannibal2.skyhanni.config.core.config.Position; +import at.hannibal2.skyhanni.features.mining.FlowstateHelper; +import com.google.gson.annotations.Expose; +import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; +import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; +import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; +import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; + +import java.util.List; + +public class FlowstateHelperConfig { + @Expose + @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") + @ConfigEditorBoolean + @FeatureToggle + public boolean enabled = false; + + @Expose + @ConfigOption(name = "Flowstate Appearance", desc = "Drag text to change the appearance.") + @ConfigEditorDraggableList() + public List appearance = FlowstateHelper.GUIElements.defaultOption; + + @Expose + @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") + public Position position = new Position(-110 , 9); +} diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java index 737ee8d16291..0c73d59664ed 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java @@ -1,19 +1,12 @@ package at.hannibal2.skyhanni.config.features.mining; import at.hannibal2.skyhanni.config.FeatureToggle; -import at.hannibal2.skyhanni.config.core.config.Position; -import at.hannibal2.skyhanni.features.mining.FlowstateHelper; import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.Accordion; import io.github.notenoughupdates.moulconfig.annotations.Category; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; -import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; -import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; -import java.util.ArrayList; -import java.util.List; - public class MiningConfig { @Expose @@ -80,6 +73,11 @@ public class MiningConfig { @Accordion public MineshaftPityDisplayConfig mineshaftPityDisplay = new MineshaftPityDisplayConfig(); + @Expose + @ConfigOption(name = "Flowstate Helper", desc = "") + @Accordion + public FlowstateHelperConfig flowstateHelper = new FlowstateHelperConfig(); + @Expose @ConfigOption(name = "Highlight Commission Mobs", desc = "Highlight mobs that are part of active commissions.") @ConfigEditorBoolean @@ -103,19 +101,4 @@ public class MiningConfig { @ConfigEditorBoolean @FeatureToggle public boolean highlightYourGoldenGoblin = true; - - @Expose - @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") - @ConfigEditorBoolean - @FeatureToggle - public boolean flowstateHelper = false; - - @Expose - @ConfigOption(name = "Flowstate Appearance", desc = "Drag text to change the appearance.") - @ConfigEditorDraggableList() - public List flowstateHelperAppearance = new ArrayList<>(FlowstateHelper.FlowstateElements.defaultOption); - - @Expose - @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") - public Position flowstateHelperPosition = new Position(-110 , 9); } diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index b22c0d309089..8cb1916bbe90 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -6,16 +6,16 @@ import at.hannibal2.skyhanni.data.MiningAPI import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.IslandChangeEvent import at.hannibal2.skyhanni.events.ItemInHandChangeEvent -import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.InventoryUtils -import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark +import at.hannibal2.skyhanni.utils.SimpleTimeMark.Companion.fromNow import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getEnchantments -import at.hannibal2.skyhanni.utils.inPartialSeconds +import at.hannibal2.skyhanni.utils.TimeUnit +import at.hannibal2.skyhanni.utils.TimeUtils.format import at.hannibal2.skyhanni.utils.renderables.Renderable import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -23,12 +23,13 @@ import kotlin.time.Duration.Companion.seconds @SkyHanniModule object FlowstateHelper { - private val config get() = SkyHanniMod.feature.mining + private val config get() = SkyHanniMod.feature.mining.flowstateHelper private var streakEndTimer = SimpleTimeMark.farPast() private var blockBreakStreak = 0 private var display: List? = null private var displayDirty = false + private var displayHibernating = true private var flowstateCache: Int? = null @@ -37,15 +38,35 @@ object FlowstateHelper { "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" ) - enum class FlowstateElements(val label: String, var renderable: Renderable) { + private val emptyEnderable = Renderable.string("") + + enum class GUIElements(val label: String, var renderable: Renderable) { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), - TIMER("Time Remaining: §b6.71", Renderable.string("")), - STREAK("Streak: §7234", Renderable.string("")), - SPEED("§6+600⸕", Renderable.string("")), + TIMER("Time Remaining: §b6.71", emptyEnderable), + STREAK("Streak: §7234", emptyEnderable), + SPEED("§6+600⸕", emptyEnderable), ; override fun toString() = label + fun create() { + when (this) { + TIMER -> { + var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) + if (timeRemaining < 0.seconds) timeRemaining = 0.seconds + + renderable = Renderable + .string("Time Remaining: §b${timeRemaining.format(TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true)}") + } + STREAK -> { + val textColor = if (blockBreakStreak < 200) "§7" else "§f" + renderable = Renderable.string("Streak: $textColor$blockBreakStreak") + } + SPEED -> renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + else -> return + } + } + companion object { @JvmField val defaultOption = listOf( @@ -59,25 +80,11 @@ object FlowstateHelper { if (!MiningAPI.inCustomMiningIsland()) return if (flowstateCache == null) return - streakEndTimer = SimpleTimeMark.now().plus(10.seconds) + displayHibernating = false + streakEndTimer = 10.seconds.fromNow() blockBreakStreak += event.extraBlocks.values.sum() - createDisplay() displayDirty = true - attemptClearDisplay() - } - - @SubscribeEvent - fun onChat(event: LorenzChatEvent) { //TODO: Remove once #2540 is merged - if (!MiningAPI.inCustomMiningIsland()) return - if (flowstateCache == null) return - - pickobulusPattern.matchMatcher(event.message) { - streakEndTimer = SimpleTimeMark.now().plus(10.seconds) - blockBreakStreak += group("amount").toInt() - createDisplay() - attemptClearDisplay() - displayDirty = true - } + createDisplay() } @SubscribeEvent @@ -91,18 +98,21 @@ object FlowstateHelper { if (streakEndTimer.isInFuture()) return blockBreakStreak = 0 displayDirty = true + displayHibernating = true createDisplay() } @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { if (!MiningAPI.inCustomMiningIsland()) return - if (!config.flowstateHelper) return + if (!config.enabled) return if (flowstateCache == null) return - if (display == null || streakEndTimer.isInFuture()) createDisplay() + if (!displayHibernating) { + if (display == null || streakEndTimer.isInFuture()) createDisplay() + } display?.let { - config.flowstateHelperPosition.renderRenderables( + config.position.renderRenderables( it, 1, "Flowstate Helper", @@ -114,32 +124,11 @@ object FlowstateHelper { private fun createDisplay() { if (displayDirty) { displayDirty = false - createDisplayTimer() - createDisplayBlock() - createDisplaySpeed() - } else { - createDisplayTimer() + GUIElements.STREAK.create() + GUIElements.SPEED.create() } - display = config.flowstateHelperAppearance.map { it.renderable } - } - - private fun createDisplayTimer(): Renderable { - var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()).inPartialSeconds - if (timeRemaining < 0.0) timeRemaining = 0.0 - - FlowstateElements.TIMER.renderable = Renderable.string("Time Remaining: §b$timeRemaining") - return FlowstateElements.TIMER.renderable - } - - private fun createDisplayBlock(): Renderable { - val textColor = if (blockBreakStreak < 200) "§7" else "§f" - FlowstateElements.STREAK.renderable = Renderable.string("Streak: $textColor$blockBreakStreak") - return FlowstateElements.STREAK.renderable - } - - private fun createDisplaySpeed(): Renderable { - FlowstateElements.SPEED.renderable = Renderable.string("§6+${getSpeedBonus()}⸕") - return FlowstateElements.SPEED.renderable + GUIElements.TIMER.create() + display = config.appearance.map { it.renderable } } private fun getSpeedBonus(): Int { @@ -159,10 +148,15 @@ object FlowstateHelper { attemptClearDisplay() } - private fun hasFlowstate(): Int? { - val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: return null - if ("ultimate_flowstate" !in enchantList) return null + private fun hasFlowstate() { + val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: run { + flowstateCache = null + return + } + if ("ultimate_flowstate" !in enchantList) { + flowstateCache = null + return + } flowstateCache = enchantList.getValue("ultimate_flowstate") - return flowstateCache } } From 761ae63c6dc25ff46434cb69791d3369c5b0e83d Mon Sep 17 00:00:00 2001 From: martimavocado Date: Mon, 23 Sep 2024 22:21:18 +0100 Subject: [PATCH 14/25] add colorful timer --- .../mining/FlowstateHelperConfig.java | 21 ++++++++++++-- .../features/mining/FlowstateHelper.kt | 29 ++++++++++++++----- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index daf6aaf354cc..9a4c0d7030fd 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -6,6 +6,7 @@ import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; +import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorSlider; import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; @@ -13,17 +14,31 @@ public class FlowstateHelperConfig { @Expose - @ConfigOption(name = "Flowstate Helper", desc = "Shows stats for the Flowstate enchantment.") + @ConfigOption(name = "Enabled", desc = "Shows stats for the Flowstate enchantment.") @ConfigEditorBoolean @FeatureToggle public boolean enabled = false; @Expose - @ConfigOption(name = "Flowstate Appearance", desc = "Drag text to change the appearance.") + @ConfigOption(name = "Appearance", desc = "Drag text to change the appearance.") @ConfigEditorDraggableList() public List appearance = FlowstateHelper.GUIElements.defaultOption; @Expose - @ConfigLink(owner = MiningConfig.class, field = "flowstateHelper") + @ConfigOption(name = "Colorful Timer", desc = "Makes the timer's color dynamic.") + @ConfigEditorBoolean + public boolean colorfulTimer = false; + + @Expose + @ConfigOption(name = "Autohide", desc = "Automatically hides the GUI after a certain time idle, in seconds.") + @ConfigEditorSlider( + minValue = 0, + maxValue = 30, + minStep = 1 + ) + public int autoHide = 5; + + @Expose + @ConfigLink(owner = FlowstateHelperConfig.class, field = "enabled") public Position position = new Position(-110 , 9); } diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 8cb1916bbe90..7627e47f3874 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -19,6 +19,7 @@ import at.hannibal2.skyhanni.utils.TimeUtils.format import at.hannibal2.skyhanni.utils.renderables.Renderable import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds @SkyHanniModule @@ -38,13 +39,11 @@ object FlowstateHelper { "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" ) - private val emptyEnderable = Renderable.string("") - - enum class GUIElements(val label: String, var renderable: Renderable) { + enum class GUIElements(val label: String, var renderable: Renderable = Renderable.string("")) { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), - TIMER("Time Remaining: §b6.71", emptyEnderable), - STREAK("Streak: §7234", emptyEnderable), - SPEED("§6+600⸕", emptyEnderable), + TIMER("Time Remaining: §b6.71"), + STREAK("Streak: §7234"), + SPEED("§6+600⸕"), ; override fun toString() = label @@ -55,8 +54,12 @@ object FlowstateHelper { var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) if (timeRemaining < 0.seconds) timeRemaining = 0.seconds - renderable = Renderable - .string("Time Remaining: §b${timeRemaining.format(TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true)}") + renderable = Renderable.string( + "Time Remaining: ${getTimerColor(timeRemaining)}${ + timeRemaining.format( + TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true + ) + }") } STREAK -> { val textColor = if (blockBreakStreak < 200) "§7" else "§f" @@ -148,6 +151,16 @@ object FlowstateHelper { attemptClearDisplay() } + private fun getTimerColor(timeRemaining: Duration): String { + if (!config.colorfulTimer) return "§6" + return when (timeRemaining) { + in 0.seconds..3.seconds -> "§c" + in 3.seconds..6.seconds -> "§e" + in 6.seconds..10.seconds -> "§a" + else -> "§6" + } + } + private fun hasFlowstate() { val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: run { flowstateCache = null From dce3f4a65eaf87665a153737a2ef1010f1bb0102 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Mon, 23 Sep 2024 23:30:42 +0100 Subject: [PATCH 15/25] try adding autohide --- .../features/mining/FlowstateHelperConfig.java | 2 +- .../skyhanni/features/mining/FlowstateHelper.kt | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index 9a4c0d7030fd..7d19efa93fda 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -32,7 +32,7 @@ public class FlowstateHelperConfig { @Expose @ConfigOption(name = "Autohide", desc = "Automatically hides the GUI after a certain time idle, in seconds.") @ConfigEditorSlider( - minValue = 0, + minValue = -1, maxValue = 30, minStep = 1 ) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 7627e47f3874..4f226fc060f2 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -31,6 +31,7 @@ object FlowstateHelper { private var display: List? = null private var displayDirty = false private var displayHibernating = true + private var timeSinceHibernation = SimpleTimeMark.farPast() private var flowstateCache: Int? = null @@ -102,6 +103,7 @@ object FlowstateHelper { blockBreakStreak = 0 displayDirty = true displayHibernating = true + timeSinceHibernation = SimpleTimeMark.now() createDisplay() } @@ -111,9 +113,13 @@ object FlowstateHelper { if (!config.enabled) return if (flowstateCache == null) return - if (!displayHibernating) { - if (display == null || streakEndTimer.isInFuture()) createDisplay() + if (displayHibernating && config.autoHide > -1 && timeSinceHibernation.passedSince() > config.autoHide.seconds) { + return + } + if (display == null || streakEndTimer.isInFuture()) { + createDisplay() } + display?.let { config.position.renderRenderables( it, @@ -154,9 +160,10 @@ object FlowstateHelper { private fun getTimerColor(timeRemaining: Duration): String { if (!config.colorfulTimer) return "§6" return when (timeRemaining) { - in 0.seconds..3.seconds -> "§c" - in 3.seconds..6.seconds -> "§e" - in 6.seconds..10.seconds -> "§a" + in 0.seconds..2.seconds -> "§c" + in 2.seconds..5.seconds -> "§6§#§f§c§7§a§2§5§/" + in 5.seconds..7.seconds -> "§e" + in 7.seconds..10.seconds -> "§a" else -> "§6" } } From 9360865f46eb5eab2e4b2c45107830ec625b6858 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Tue, 24 Sep 2024 00:08:43 +0100 Subject: [PATCH 16/25] fix autohide --- .../hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 4f226fc060f2..ad1c584c2b01 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -102,8 +102,8 @@ object FlowstateHelper { if (streakEndTimer.isInFuture()) return blockBreakStreak = 0 displayDirty = true + if (!displayHibernating) timeSinceHibernation = SimpleTimeMark.now() displayHibernating = true - timeSinceHibernation = SimpleTimeMark.now() createDisplay() } @@ -113,9 +113,7 @@ object FlowstateHelper { if (!config.enabled) return if (flowstateCache == null) return - if (displayHibernating && config.autoHide > -1 && timeSinceHibernation.passedSince() > config.autoHide.seconds) { - return - } + if (displayHibernating && config.autoHide > -1 && timeSinceHibernation.passedSince() > config.autoHide.seconds) return if (display == null || streakEndTimer.isInFuture()) { createDisplay() } From d8bd59f1640443160612e16028072512f794a335 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Tue, 24 Sep 2024 14:30:57 +0100 Subject: [PATCH 17/25] move and rename enum --- .../mining/FlowstateHelperConfig.java | 4 +- .../features/mining/FlowstateHelper.kt | 98 ++++++++++--------- 2 files changed, 54 insertions(+), 48 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index 7d19efa93fda..f607b9908d0d 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -2,7 +2,7 @@ import at.hannibal2.skyhanni.config.FeatureToggle; import at.hannibal2.skyhanni.config.core.config.Position; -import at.hannibal2.skyhanni.features.mining.FlowstateHelper; +import at.hannibal2.skyhanni.features.mining.FlowstateElements; import com.google.gson.annotations.Expose; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean; import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList; @@ -22,7 +22,7 @@ public class FlowstateHelperConfig { @Expose @ConfigOption(name = "Appearance", desc = "Drag text to change the appearance.") @ConfigEditorDraggableList() - public List appearance = FlowstateHelper.GUIElements.defaultOption; + public List appearance = FlowstateElements.defaultOption; @Expose @ConfigOption(name = "Colorful Timer", desc = "Makes the timer's color dynamic.") diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index ad1c584c2b01..9a72e9c89a18 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -8,6 +8,10 @@ import at.hannibal2.skyhanni.events.IslandChangeEvent import at.hannibal2.skyhanni.events.ItemInHandChangeEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent +import at.hannibal2.skyhanni.features.mining.FlowstateHelper.blockBreakStreak +import at.hannibal2.skyhanni.features.mining.FlowstateHelper.getSpeedBonus +import at.hannibal2.skyhanni.features.mining.FlowstateHelper.getTimerColor +import at.hannibal2.skyhanni.features.mining.FlowstateHelper.streakEndTimer import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables @@ -25,8 +29,8 @@ import kotlin.time.Duration.Companion.seconds @SkyHanniModule object FlowstateHelper { private val config get() = SkyHanniMod.feature.mining.flowstateHelper - private var streakEndTimer = SimpleTimeMark.farPast() - private var blockBreakStreak = 0 + var streakEndTimer = SimpleTimeMark.farPast() + var blockBreakStreak = 0 private var display: List? = null private var displayDirty = false @@ -40,45 +44,6 @@ object FlowstateHelper { "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" ) - enum class GUIElements(val label: String, var renderable: Renderable = Renderable.string("")) { - TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), - TIMER("Time Remaining: §b6.71"), - STREAK("Streak: §7234"), - SPEED("§6+600⸕"), - ; - - override fun toString() = label - - fun create() { - when (this) { - TIMER -> { - var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) - if (timeRemaining < 0.seconds) timeRemaining = 0.seconds - - renderable = Renderable.string( - "Time Remaining: ${getTimerColor(timeRemaining)}${ - timeRemaining.format( - TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true - ) - }") - } - STREAK -> { - val textColor = if (blockBreakStreak < 200) "§7" else "§f" - renderable = Renderable.string("Streak: $textColor$blockBreakStreak") - } - SPEED -> renderable = Renderable.string("§6+${getSpeedBonus()}⸕") - else -> return - } - } - - companion object { - @JvmField - val defaultOption = listOf( - TITLE, TIMER, STREAK, SPEED - ) - } - } - @HandleEvent(onlyOnSkyblock = true) fun onBlockMined(event: OreMinedEvent) { if (!MiningAPI.inCustomMiningIsland()) return @@ -131,14 +96,14 @@ object FlowstateHelper { private fun createDisplay() { if (displayDirty) { displayDirty = false - GUIElements.STREAK.create() - GUIElements.SPEED.create() + FlowstateElements.STREAK.create() + FlowstateElements.SPEED.create() } - GUIElements.TIMER.create() + FlowstateElements.TIMER.create() display = config.appearance.map { it.renderable } } - private fun getSpeedBonus(): Int { + fun getSpeedBonus(): Int { val flowstateLevel = flowstateCache ?: 0 if (blockBreakStreak >= 200) return 200 * flowstateLevel return blockBreakStreak * flowstateLevel @@ -155,7 +120,7 @@ object FlowstateHelper { attemptClearDisplay() } - private fun getTimerColor(timeRemaining: Duration): String { + fun getTimerColor(timeRemaining: Duration): String { if (!config.colorfulTimer) return "§6" return when (timeRemaining) { in 0.seconds..2.seconds -> "§c" @@ -178,3 +143,44 @@ object FlowstateHelper { flowstateCache = enchantList.getValue("ultimate_flowstate") } } + + + +enum class FlowstateElements(val label: String, var renderable: Renderable = Renderable.string("")) { + TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), + TIMER("Time Remaining: §b6.71"), + STREAK("Streak: §7234"), + SPEED("§6+600⸕"), + ; + + override fun toString() = label + + fun create() { + when (this) { + TIMER -> { + var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) + if (timeRemaining < 0.seconds) timeRemaining = 0.seconds + + renderable = Renderable.string( + "Time Remaining: ${getTimerColor(timeRemaining)}${ + timeRemaining.format( + TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true + ) + }") + } + STREAK -> { + val textColor = if (blockBreakStreak < 200) "§7" else "§f" + renderable = Renderable.string("Streak: $textColor$blockBreakStreak") + } + SPEED -> renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + else -> return + } + } + + companion object { + @JvmField + val defaultOption = listOf( + TITLE, TIMER, STREAK, SPEED + ) + } +} From e246ec9521525f5953c5b744f2892cb23d860839 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Wed, 2 Oct 2024 19:09:51 +0100 Subject: [PATCH 18/25] add compact gui element --- .../features/mining/FlowstateHelper.kt | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 9a72e9c89a18..2924263da856 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -100,6 +100,7 @@ object FlowstateHelper { FlowstateElements.SPEED.create() } FlowstateElements.TIMER.create() + FlowstateElements.COMPACT.create() display = config.appearance.map { it.renderable } } @@ -124,7 +125,7 @@ object FlowstateHelper { if (!config.colorfulTimer) return "§6" return when (timeRemaining) { in 0.seconds..2.seconds -> "§c" - in 2.seconds..5.seconds -> "§6§#§f§c§7§a§2§5§/" + in 2.seconds..5.seconds -> "§#§e§c§7§b§3§6§/" in 5.seconds..7.seconds -> "§e" in 7.seconds..10.seconds -> "§a" else -> "§6" @@ -148,16 +149,21 @@ object FlowstateHelper { enum class FlowstateElements(val label: String, var renderable: Renderable = Renderable.string("")) { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), - TIMER("Time Remaining: §b6.71"), + TIMER("Time Remaining: §b9.71"), STREAK("Streak: §7234"), SPEED("§6+600⸕"), + COMPACT("§7x40 §6+120⸕ §b(9.71)"), ; override fun toString() = label + private val config get() = SkyHanniMod.feature.mining.flowstateHelper + fun create() { when (this) { TIMER -> { + if (this !in config.appearance) return + var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) if (timeRemaining < 0.seconds) timeRemaining = 0.seconds @@ -169,10 +175,32 @@ enum class FlowstateElements(val label: String, var renderable: Renderable = Ren }") } STREAK -> { + if (this !in config.appearance) return + val textColor = if (blockBreakStreak < 200) "§7" else "§f" renderable = Renderable.string("Streak: $textColor$blockBreakStreak") } - SPEED -> renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + SPEED -> { + if (this !in config.appearance) return + + renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + } + COMPACT -> { + if (this !in config.appearance) return + + var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) + if (timeRemaining < 0.seconds) timeRemaining = 0.seconds + + renderable = Renderable.string( + "§7x$blockBreakStreak " + + "§6+${getSpeedBonus()}⸕ " + + "${getTimerColor(timeRemaining)}${ + timeRemaining.format( + TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true + ) + }" + ) + } else -> return } } From 8b65b11f13a2129a36e099490ed9884cb80403b5 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Fri, 11 Oct 2024 22:31:32 +0100 Subject: [PATCH 19/25] hi empa --- .../at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 2924263da856..88da7058156d 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -30,7 +30,9 @@ import kotlin.time.Duration.Companion.seconds object FlowstateHelper { private val config get() = SkyHanniMod.feature.mining.flowstateHelper var streakEndTimer = SimpleTimeMark.farPast() + private set var blockBreakStreak = 0 + private set private var display: List? = null private var displayDirty = false From 6e21e55b7b652ecec61ee1f765d53a88b92a6ec4 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sun, 13 Oct 2024 12:18:26 +0200 Subject: [PATCH 20/25] code cleanup --- .../mining/FlowstateHelperConfig.java | 4 +- .../features/mining/FlowstateHelper.kt | 54 ++++++++----------- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index f607b9908d0d..1f730af6e481 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -14,7 +14,7 @@ public class FlowstateHelperConfig { @Expose - @ConfigOption(name = "Enabled", desc = "Shows stats for the Flowstate enchantment.") + @ConfigOption(name = "Enabled", desc = "Shows stats for the Flowstate enchantment on Mining Tools.") @ConfigEditorBoolean @FeatureToggle public boolean enabled = false; @@ -30,7 +30,7 @@ public class FlowstateHelperConfig { public boolean colorfulTimer = false; @Expose - @ConfigOption(name = "Autohide", desc = "Automatically hides the GUI after a certain time idle, in seconds.") + @ConfigOption(name = "Auto Hide", desc = "Automatically hides the GUI after a certain time idle, in seconds.") @ConfigEditorSlider( minValue = -1, maxValue = 30, diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 88da7058156d..b6f45ecb7d78 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -43,7 +43,7 @@ object FlowstateHelper { private val pickobulusPattern by RepoPattern.pattern( "mining.pickobulus.blockdestroy", - "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!" + "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!", ) @HandleEvent(onlyOnSkyblock = true) @@ -86,12 +86,7 @@ object FlowstateHelper { } display?.let { - config.position.renderRenderables( - it, - 1, - "Flowstate Helper", - true - ) + config.position.renderRenderables(it, extraSpace = 1, "Flowstate Helper") } } @@ -147,8 +142,6 @@ object FlowstateHelper { } } - - enum class FlowstateElements(val label: String, var renderable: Renderable = Renderable.string("")) { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), TIMER("Time Remaining: §b9.71"), @@ -162,47 +155,44 @@ enum class FlowstateElements(val label: String, var renderable: Renderable = Ren private val config get() = SkyHanniMod.feature.mining.flowstateHelper fun create() { - when (this) { - TIMER -> { - if (this !in config.appearance) return + if (this !in config.appearance) return + renderable = when (this) { + TIMER -> { var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) if (timeRemaining < 0.seconds) timeRemaining = 0.seconds - renderable = Renderable.string( + Renderable.string( "Time Remaining: ${getTimerColor(timeRemaining)}${ timeRemaining.format( - TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true + TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true, ) - }") + }", + ) } - STREAK -> { - if (this !in config.appearance) return + STREAK -> { val textColor = if (blockBreakStreak < 200) "§7" else "§f" - renderable = Renderable.string("Streak: $textColor$blockBreakStreak") + Renderable.string("Streak: $textColor$blockBreakStreak") } - SPEED -> { - if (this !in config.appearance) return - renderable = Renderable.string("§6+${getSpeedBonus()}⸕") + SPEED -> { + Renderable.string("§6+${getSpeedBonus()}⸕") } - COMPACT -> { - if (this !in config.appearance) return + COMPACT -> { var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) if (timeRemaining < 0.seconds) timeRemaining = 0.seconds - renderable = Renderable.string( - "§7x$blockBreakStreak " + - "§6+${getSpeedBonus()}⸕ " + - "${getTimerColor(timeRemaining)}${ - timeRemaining.format( - TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true - ) - }" + Renderable.string( + "§7x$blockBreakStreak " + "§6+${getSpeedBonus()}⸕ " + "${getTimerColor(timeRemaining)}${ + timeRemaining.format( + TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true, + ) + }", ) } + else -> return } } @@ -210,7 +200,7 @@ enum class FlowstateElements(val label: String, var renderable: Renderable = Ren companion object { @JvmField val defaultOption = listOf( - TITLE, TIMER, STREAK, SPEED + TITLE, TIMER, STREAK, SPEED, ) } } From 29773752a8d37716c7530b91b175138d62ba736a Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 13 Oct 2024 15:38:00 +0100 Subject: [PATCH 21/25] cleanup, show gui if active and not holding --- .../mining/FlowstateHelperConfig.java | 2 +- .../features/mining/FlowstateHelper.kt | 71 ++++++++----------- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index 1f730af6e481..634126cd3b6f 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -25,7 +25,7 @@ public class FlowstateHelperConfig { public List appearance = FlowstateElements.defaultOption; @Expose - @ConfigOption(name = "Colorful Timer", desc = "Makes the timer's color dynamic.") + @ConfigOption(name = "Dynamic Color", desc = "Makes the timer's color dynamic.") @ConfigEditorBoolean public boolean colorfulTimer = false; diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index b6f45ecb7d78..1d490d69ffd1 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -10,6 +10,7 @@ import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.mining.OreMinedEvent import at.hannibal2.skyhanni.features.mining.FlowstateHelper.blockBreakStreak import at.hannibal2.skyhanni.features.mining.FlowstateHelper.getSpeedBonus +import at.hannibal2.skyhanni.features.mining.FlowstateHelper.getStreakColor import at.hannibal2.skyhanni.features.mining.FlowstateHelper.getTimerColor import at.hannibal2.skyhanni.features.mining.FlowstateHelper.streakEndTimer import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule @@ -21,7 +22,6 @@ import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getEnchantments import at.hannibal2.skyhanni.utils.TimeUnit import at.hannibal2.skyhanni.utils.TimeUtils.format import at.hannibal2.skyhanni.utils.renderables.Renderable -import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds @@ -29,23 +29,19 @@ import kotlin.time.Duration.Companion.seconds @SkyHanniModule object FlowstateHelper { private val config get() = SkyHanniMod.feature.mining.flowstateHelper + var streakEndTimer = SimpleTimeMark.farPast() private set var blockBreakStreak = 0 private set - private var display: List? = null + private var display: List = emptyList() private var displayDirty = false private var displayHibernating = true private var timeSinceHibernation = SimpleTimeMark.farPast() private var flowstateCache: Int? = null - private val pickobulusPattern by RepoPattern.pattern( - "mining.pickobulus.blockdestroy", - "§7Your §r§aPickobulus §r§7destroyed §r§e(?\\d+) §r§7blocks!", - ) - @HandleEvent(onlyOnSkyblock = true) fun onBlockMined(event: OreMinedEvent) { if (!MiningAPI.inCustomMiningIsland()) return @@ -76,18 +72,15 @@ object FlowstateHelper { @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { - if (!MiningAPI.inCustomMiningIsland()) return - if (!config.enabled) return - if (flowstateCache == null) return + if (!MiningAPI.inCustomMiningIsland() || !config.enabled) return + if (flowstateCache == null || !streakEndTimer.isInFuture()) return if (displayHibernating && config.autoHide > -1 && timeSinceHibernation.passedSince() > config.autoHide.seconds) return - if (display == null || streakEndTimer.isInFuture()) { + if (display.isEmpty() || streakEndTimer.isInFuture()) { createDisplay() } - display?.let { - config.position.renderRenderables(it, extraSpace = 1, "Flowstate Helper") - } + config.position.renderRenderables(display, extraSpace = 1, "Flowstate Helper") } private fun createDisplay() { @@ -119,16 +112,19 @@ object FlowstateHelper { } fun getTimerColor(timeRemaining: Duration): String { - if (!config.colorfulTimer) return "§6" + if (!config.colorfulTimer) return "§b" return when (timeRemaining) { in 0.seconds..2.seconds -> "§c" - in 2.seconds..5.seconds -> "§#§e§c§7§b§3§6§/" - in 5.seconds..7.seconds -> "§e" - in 7.seconds..10.seconds -> "§a" + in 2.seconds..4.seconds -> "§#§e§c§7§b§3§6§/" + in 4.seconds..6.seconds -> "§e" + in 6.seconds..8.seconds -> "§a" + in 8.seconds..10.seconds -> "§2" else -> "§6" } } + fun getStreakColor(streak: Int = blockBreakStreak): String = if (streak < 200) "§e" else "§a" + private fun hasFlowstate() { val enchantList = InventoryUtils.getItemInHand()?.getEnchantments() ?: run { flowstateCache = null @@ -144,36 +140,28 @@ object FlowstateHelper { enum class FlowstateElements(val label: String, var renderable: Renderable = Renderable.string("")) { TITLE("§d§lFlowstate Helper", Renderable.string("§d§lFlowstate Helper")), - TIMER("Time Remaining: §b9.71"), - STREAK("Streak: §7234"), + TIMER("§fTime Remaining: §b9.71"), + STREAK("§7Streak: §f123/200"), SPEED("§6+600⸕"), COMPACT("§7x40 §6+120⸕ §b(9.71)"), ; override fun toString() = label - private val config get() = SkyHanniMod.feature.mining.flowstateHelper - fun create() { if (this !in config.appearance) return renderable = when (this) { TIMER -> { - var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) - if (timeRemaining < 0.seconds) timeRemaining = 0.seconds + val timeRemaining = streakEndTimer.timeUntil().coerceAtLeast(0.seconds) - Renderable.string( - "Time Remaining: ${getTimerColor(timeRemaining)}${ - timeRemaining.format( - TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true, - ) - }", - ) + Renderable.string("§7Time Remaining: ${timeRemaining.formatTime()}") } STREAK -> { - val textColor = if (blockBreakStreak < 200) "§7" else "§f" - Renderable.string("Streak: $textColor$blockBreakStreak") + val textColor = getStreakColor() + val string = "§7Streak: $textColor$blockBreakStreak" + Renderable.string(string + if (blockBreakStreak < 200) "§8/200" else "") } SPEED -> { @@ -181,15 +169,12 @@ enum class FlowstateElements(val label: String, var renderable: Renderable = Ren } COMPACT -> { - var timeRemaining = streakEndTimer.minus(SimpleTimeMark.now()) - if (timeRemaining < 0.seconds) timeRemaining = 0.seconds + val timeRemaining = streakEndTimer.timeUntil().coerceAtLeast(0.seconds) Renderable.string( - "§7x$blockBreakStreak " + "§6+${getSpeedBonus()}⸕ " + "${getTimerColor(timeRemaining)}${ - timeRemaining.format( - TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true, - ) - }", + "§7x${getStreakColor()}$blockBreakStreak " + + "§6+${getSpeedBonus()}⸕ " + + timeRemaining.formatTime(), ) } @@ -198,6 +183,12 @@ enum class FlowstateElements(val label: String, var renderable: Renderable = Ren } companion object { + private val config get() = SkyHanniMod.feature.mining.flowstateHelper + + private fun Duration.formatTime(): String { + return getTimerColor(this) + format(TimeUnit.SECOND, true, maxUnits = 2, showSmallerUnits = true) + } + @JvmField val defaultOption = listOf( TITLE, TIMER, STREAK, SPEED, From 5d6230b0d569d1c15b78fea2f933f4249033286e Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 13 Oct 2024 16:17:55 +0100 Subject: [PATCH 22/25] autohide improvements --- .../mining/FlowstateHelperConfig.java | 4 ++- .../features/mining/FlowstateHelper.kt | 32 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index 634126cd3b6f..e6996461109a 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -9,6 +9,7 @@ import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorSlider; import io.github.notenoughupdates.moulconfig.annotations.ConfigLink; import io.github.notenoughupdates.moulconfig.annotations.ConfigOption; +import io.github.notenoughupdates.moulconfig.annotations.SearchTag; import java.util.List; @@ -30,7 +31,8 @@ public class FlowstateHelperConfig { public boolean colorfulTimer = false; @Expose - @ConfigOption(name = "Auto Hide", desc = "Automatically hides the GUI after a certain time idle, in seconds.") + @ConfigOption(name = "Auto Hide", desc = "Automatically hides the GUI after being idle or having the max bonus, in seconds.") + @SearchTag("autohide") @ConfigEditorSlider( minValue = -1, maxValue = 30, diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 1d490d69ffd1..28fec6008eac 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -39,6 +39,8 @@ object FlowstateHelper { private var displayDirty = false private var displayHibernating = true private var timeSinceHibernation = SimpleTimeMark.farPast() + private var timeSinceMax = SimpleTimeMark.farPast() + private var displayMaxed = false private var flowstateCache: Int? = null @@ -64,6 +66,8 @@ object FlowstateHelper { private fun attemptClearDisplay() { if (streakEndTimer.isInFuture()) return blockBreakStreak = 0 + timeSinceMax = SimpleTimeMark.farPast() + displayMaxed = false displayDirty = true if (!displayHibernating) timeSinceHibernation = SimpleTimeMark.now() displayHibernating = true @@ -73,9 +77,9 @@ object FlowstateHelper { @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { if (!MiningAPI.inCustomMiningIsland() || !config.enabled) return - if (flowstateCache == null || !streakEndTimer.isInFuture()) return + if (flowstateCache == null && !streakEndTimer.isInFuture()) return - if (displayHibernating && config.autoHide > -1 && timeSinceHibernation.passedSince() > config.autoHide.seconds) return + if (shouldAutoHide()) return if (display.isEmpty() || streakEndTimer.isInFuture()) { createDisplay() } @@ -83,21 +87,37 @@ object FlowstateHelper { config.position.renderRenderables(display, extraSpace = 1, "Flowstate Helper") } + private fun shouldAutoHide(): Boolean { + if (config.autoHide < 0) return false + val autoHide = config.autoHide.seconds + if (streakEndTimer.minus(10.seconds - autoHide).isInPast()) return true + if (displayMaxed && timeSinceMax.passedSince() > autoHide) return true + return false + } + private fun createDisplay() { if (displayDirty) { displayDirty = false FlowstateElements.STREAK.create() FlowstateElements.SPEED.create() } - FlowstateElements.TIMER.create() - FlowstateElements.COMPACT.create() + if (!displayHibernating) { + FlowstateElements.TIMER.create() + FlowstateElements.COMPACT.create() + } display = config.appearance.map { it.renderable } } fun getSpeedBonus(): Int { val flowstateLevel = flowstateCache ?: 0 - if (blockBreakStreak >= 200) return 200 * flowstateLevel - return blockBreakStreak * flowstateLevel + + return if (blockBreakStreak >= 200) { + if (!displayMaxed) { + displayMaxed = true + timeSinceMax = SimpleTimeMark.now() + } + 200 * flowstateLevel + } else blockBreakStreak * flowstateLevel } @SubscribeEvent From c0fdbb491b2b432513b281ea75f2000c6e95bd0b Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 13 Oct 2024 19:58:55 +0100 Subject: [PATCH 23/25] remove autohide on max --- .../config/features/mining/FlowstateHelperConfig.java | 2 +- .../at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index e6996461109a..aa567838536b 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -31,7 +31,7 @@ public class FlowstateHelperConfig { public boolean colorfulTimer = false; @Expose - @ConfigOption(name = "Auto Hide", desc = "Automatically hides the GUI after being idle or having the max bonus, in seconds.") + @ConfigOption(name = "Auto Hide", desc = "Automatically hides the GUI after being idle, in seconds.") @SearchTag("autohide") @ConfigEditorSlider( minValue = -1, diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 28fec6008eac..8b66f2f8f725 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -90,9 +90,8 @@ object FlowstateHelper { private fun shouldAutoHide(): Boolean { if (config.autoHide < 0) return false val autoHide = config.autoHide.seconds - if (streakEndTimer.minus(10.seconds - autoHide).isInPast()) return true - if (displayMaxed && timeSinceMax.passedSince() > autoHide) return true - return false + return streakEndTimer.minus(10.seconds - autoHide).isInPast() +// if (displayMaxed && timeSinceMax.passedSince() > autoHide) return true } private fun createDisplay() { From 7dfabbd25a654c44eeb6ea4e141535337c4c2965 Mon Sep 17 00:00:00 2001 From: martimavocado Date: Sun, 13 Oct 2024 20:35:25 +0100 Subject: [PATCH 24/25] hi empa --- .../at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 8b66f2f8f725..178d527f1b7e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -89,8 +89,8 @@ object FlowstateHelper { private fun shouldAutoHide(): Boolean { if (config.autoHide < 0) return false - val autoHide = config.autoHide.seconds - return streakEndTimer.minus(10.seconds - autoHide).isInPast() + val time = 10.seconds - config.autoHide.seconds + return (streakEndTimer - time).isInPast() // if (displayMaxed && timeSinceMax.passedSince() > autoHide) return true } From f35b97c0bd31cd3d0c42440517776aa0bb8cfc9a Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:21:02 +0200 Subject: [PATCH 25/25] removed comment, changed default value --- .../skyhanni/config/features/mining/FlowstateHelperConfig.java | 2 +- .../at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java index aa567838536b..37a0f08aadd4 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/FlowstateHelperConfig.java @@ -38,7 +38,7 @@ public class FlowstateHelperConfig { maxValue = 30, minStep = 1 ) - public int autoHide = 5; + public int autoHide = 10; @Expose @ConfigLink(owner = FlowstateHelperConfig.class, field = "enabled") diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt index 178d527f1b7e..3ef46c5b6437 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/FlowstateHelper.kt @@ -91,7 +91,6 @@ object FlowstateHelper { if (config.autoHide < 0) return false val time = 10.seconds - config.autoHide.seconds return (streakEndTimer - time).isInPast() -// if (displayMaxed && timeSinceMax.passedSince() > autoHide) return true } private fun createDisplay() {