diff options
| author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-05-29 15:19:52 +0200 |
|---|---|---|
| committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-05-29 15:19:52 +0200 |
| commit | cd03dcaacb864b0d181040c48dcd23f7e7ccdd68 (patch) | |
| tree | cd479d871b7d328ec8d964eb2b18cb1732c2c8bc /src/main/java/at/hannibal2/skyhanni/utils | |
| parent | 9ed54102a74dd983faccd920cd0f3415f7d24425 (diff) | |
| download | SkyHanni-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.kt | 6 | ||||
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/SkyBlockItemModifierUtils.kt | 20 |
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() |
