aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
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()