aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-05-29 15:19:52 +0200
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-05-29 15:19:52 +0200
commitcd03dcaacb864b0d181040c48dcd23f7e7ccdd68 (patch)
treecd479d871b7d328ec8d964eb2b18cb1732c2c8bc /src/main/java/at/hannibal2/skyhanni/utils
parent9ed54102a74dd983faccd920cd0f3415f7d24425 (diff)
downloadSkyHanni-cd03dcaacb864b0d181040c48dcd23f7e7ccdd68.tar.gz
SkyHanni-cd03dcaacb864b0d181040c48dcd23f7e7ccdd68.tar.bz2
SkyHanni-cd03dcaacb864b0d181040c48dcd23f7e7ccdd68.zip
Added ItemStack.cachedData to store candyUsed and heldItem
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/CachedItemData.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt20
2 files changed, 24 insertions, 2 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/CachedItemData.kt b/src/main/java/at/hannibal2/skyhanni/utils/CachedItemData.kt
new file mode 100644
index 000000000..01cc55006
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/CachedItemData.kt
@@ -0,0 +1,6 @@
+package at.hannibal2.skyhanni.utils
+
+data class CachedItemData(
+ /** -1 = not loaded */ var petCandies: Int? = -1,
+ /** "" = not loaded */ var heldItem: String? = null,
+) \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt
index 83c28c099..d9f121951 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.utils
import at.hannibal2.skyhanni.config.ConfigManager
+import at.hannibal2.skyhanni.mixins.hooks.ItemStackCachedData
import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
@@ -34,13 +35,28 @@ object SkyBlockItemModifierUtils {
fun ItemStack.getManaDisintegrators() = getAttributeInt("mana_disintegrator_count")
- fun ItemStack.getPetCandyUsed() = getPetInfo()?.get("candyUsed")?.asInt
+ fun ItemStack.getPetCandyUsed(): Int? {
+ val data = cachedData
+ if (data.petCandies == -1) {
+ data.petCandies = getPetInfo()?.get("candyUsed")?.asInt
+ }
+ return data.petCandies
+ }
- fun ItemStack.getPetItem() = getPetInfo()?.get("heldItem")?.asString
+ fun ItemStack.getPetItem(): String? {
+ val data = cachedData
+ if (data.heldItem == "") {
+ data.heldItem = getPetInfo()?.get("heldItem")?.asString
+ }
+ return data.heldItem
+ }
private fun ItemStack.getPetInfo() =
ConfigManager.gson.fromJson(getExtraAttributes()?.getString("petInfo"), JsonObject::class.java)
+ @Suppress("CAST_NEVER_SUCCEEDS")
+ inline val ItemStack.cachedData get() = (this as ItemStackCachedData).skyhanni_cachedData
+
fun ItemStack.getPetLevel(): Int {
petLevelPattern.matchMatcher(this.displayName) {
return group("level").toInt()