From 5963a6555fff757a263e47f2cc8b2e49ae16c6ed Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 26 Sep 2023 05:44:34 -0300 Subject: item ability cooldown and ff display improvements #477 * Improve performance for tooltips and item ability cooldown feature --- .../abilitycooldown/ItemAbilityCooldown.kt | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/features/itemabilities') diff --git a/src/main/java/at/hannibal2/skyhanni/features/itemabilities/abilitycooldown/ItemAbilityCooldown.kt b/src/main/java/at/hannibal2/skyhanni/features/itemabilities/abilitycooldown/ItemAbilityCooldown.kt index f644cdd76..7aca21152 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/itemabilities/abilitycooldown/ItemAbilityCooldown.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/itemabilities/abilitycooldown/ItemAbilityCooldown.kt @@ -15,6 +15,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.equalsOneOf import at.hannibal2.skyhanni.utils.LorenzUtils.round import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getAbilityScrolls +import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getItemUuid import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import net.minecraft.client.Minecraft import net.minecraft.item.ItemStack @@ -24,6 +25,7 @@ import kotlin.math.max class ItemAbilityCooldown { private var lastAbility = "" private var items = mapOf>() + private var abilityItems = mapOf>() private val youAlignedOthersPattern = "§eYou aligned §r§a.* §r§eother player(s)?!".toPattern() private val WEIRD_TUBA = "WEIRD_TUBA".asInternalName() private val WEIRDER_TUBA = "WEIRDER_TUBA".asInternalName() @@ -234,19 +236,15 @@ class ItemAbilityCooldown { fun onTick(event: LorenzTickEvent) { if (!isEnabled()) return - if (event.isMod(2)) { - checkHotBar() - } + checkHotBar(event.isMod(10)) } - private fun checkHotBar() { - val items = mutableMapOf>() - for ((stack, _) in ItemUtils.getItemsInInventoryWithSlots(true)) { - for (ability in hasAbility(stack)) { - items.getOrPut(stack) { mutableListOf() }.add(createItemText(ability)) - } + private fun checkHotBar(recheckInventorySlots: Boolean = false) { + if (recheckInventorySlots || abilityItems.isEmpty()) { + abilityItems = ItemUtils.getItemsInInventory(true).associateWith { hasAbility(it) } } - this.items = items + + items = abilityItems.mapValues { kp -> kp.value.map { createItemText(it) } } } private fun createItemText(ability: ItemAbility): ItemText { @@ -287,7 +285,7 @@ class ItemAbilityCooldown { val stack = event.stack val guiOpen = Minecraft.getMinecraft().currentScreen != null - val list = items.filter { it.key == stack } + val list = items.filter { it.key.getItemUuid() == stack.getItemUuid() } .firstNotNullOfOrNull { it.value } ?: return for (itemText in list) { -- cgit