summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/itemabilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/itemabilities')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/itemabilities/abilitycooldown/ItemAbilityCooldown.kt45
1 files changed, 33 insertions, 12 deletions
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 998e25e35..c48a28eff 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
@@ -2,18 +2,19 @@ package at.hannibal2.skyhanni.features.itemabilities.abilitycooldown
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
-import at.hannibal2.skyhanni.data.ItemRenderBackground.Companion.background
import at.hannibal2.skyhanni.events.ActionBarUpdateEvent
import at.hannibal2.skyhanni.events.ItemClickEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.PlaySoundEvent
+import at.hannibal2.skyhanni.events.RenderGuiItemOverlayEvent
import at.hannibal2.skyhanni.events.RenderItemTipEvent
import at.hannibal2.skyhanni.events.RenderObject
import at.hannibal2.skyhanni.features.itemabilities.abilitycooldown.ItemAbility.Companion.getMultiplier
import at.hannibal2.skyhanni.features.nether.ashfang.AshfangFreezeCooldown
import at.hannibal2.skyhanni.utils.CollectionUtils.equalsOneOf
+import at.hannibal2.skyhanni.utils.CollectionUtils.mapKeysNotNull
import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.ItemUtils
import at.hannibal2.skyhanni.utils.ItemUtils.cleanName
@@ -23,6 +24,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.between
import at.hannibal2.skyhanni.utils.LorenzUtils.round
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
+import at.hannibal2.skyhanni.utils.RenderUtils.highlight
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getAbilityScrolls
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getItemId
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getItemUuid
@@ -48,7 +50,7 @@ class ItemAbilityCooldown {
)
private var lastAbility = ""
- private var items = mapOf<ItemStack, List<ItemText>>()
+ private var items = mapOf<String, List<ItemText>>()
private var abilityItems = mapOf<ItemStack, MutableList<ItemAbility>>()
private val WEIRD_TUBA = "WEIRD_TUBA".asInternalName()
private val WEIRDER_TUBA = "WEIRDER_TUBA".asInternalName()
@@ -254,7 +256,12 @@ class ItemAbilityCooldown {
abilityItems = ItemUtils.getItemsInInventory(true).associateWith { hasAbility(it) }
}
- items = abilityItems.mapValues { kp -> kp.value.map { createItemText(it) } }
+ items = abilityItems.entries.associateByTo(
+ mutableMapOf(),
+ { it.key.getIdentifier() },
+ { kp -> kp.value.map { createItemText(it) } }
+ ).mapKeysNotNull { it.key }
+
}
private fun createItemText(ability: ItemAbility): ItemText {
@@ -291,8 +298,7 @@ class ItemAbilityCooldown {
val guiOpen = Minecraft.getMinecraft().currentScreen != null
val uuid = stack.getIdentifier() ?: return
- val list = items.filter { (it.key.getIdentifier()) == uuid }
- .firstNotNullOfOrNull { it.value } ?: return
+ val list = items[uuid] ?: return
for (itemText in list) {
if (guiOpen && !itemText.onCooldown) continue
@@ -303,16 +309,31 @@ class ItemAbilityCooldown {
renderObject.offsetY = -10
}
event.renderObjects.add(renderObject)
+ }
+ }
+
+ @SubscribeEvent
+ fun onRenderItem(event: RenderGuiItemOverlayEvent) {
+ if (!isEnabled()) return
+ if (!config.itemAbilityCooldownBackground) return
+
+ val guiOpen = Minecraft.getMinecraft().currentScreen != null
+ val stack = event.stack
+
+ val uuid = stack?.getIdentifier() ?: return
+ val list = items[uuid] ?: return
+
+ for (itemText in list) {
+ if (guiOpen && !itemText.onCooldown) continue
+ val color = itemText.color
// fix multiple problems when having multiple abilities
- if (config.itemAbilityCooldownBackground) {
- var opacity = 130
- if (color == LorenzColor.GREEN) {
- opacity = 80
- if (!config.itemAbilityShowWhenReady) return
- }
- stack.background = color.addOpacity(opacity).rgb
+ var opacity = 130
+ if (color == LorenzColor.GREEN) {
+ opacity = 80
+ if (!config.itemAbilityShowWhenReady) return
}
+ event highlight color.addOpacity(opacity)
}
}