diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-03-06 02:26:03 +0100 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-03-06 02:26:03 +0100 |
commit | 1e24f52201a7ced89c1298c466824dcc0eb13096 (patch) | |
tree | 9a17905ae9b45216254809a288dd52df2c55d42a /src/main/java/at/hannibal2/skyhanni/features | |
parent | ac3a1ccc0e77da14870a9be8fa041ae083284ac1 (diff) | |
download | skyhanni-1e24f52201a7ced89c1298c466824dcc0eb13096.tar.gz skyhanni-1e24f52201a7ced89c1298c466824dcc0eb13096.tar.bz2 skyhanni-1e24f52201a7ced89c1298c466824dcc0eb13096.zip |
Added collection data to the bingo step helper.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
5 files changed, 40 insertions, 75 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/bazaar/BazaarApi.kt b/src/main/java/at/hannibal2/skyhanni/features/bazaar/BazaarApi.kt index f8139e3b9..28ac37849 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/bazaar/BazaarApi.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/bazaar/BazaarApi.kt @@ -34,6 +34,9 @@ class BazaarApi { return null } + fun getBazaarDataForInternalName(internalName: String) = + bazaarMap.values.firstOrNull { it.apiName == internalName } + fun isBazaarItem(stack: ItemStack): Boolean { val internalName = stack.getInternalName() return bazaarMap.any { it.value.apiName == internalName } diff --git a/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoNextStepHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoNextStepHelper.kt index 35d318652..75c755de3 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoNextStepHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoNextStepHelper.kt @@ -1,6 +1,7 @@ package at.hannibal2.skyhanni.features.bingo import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.api.CollectionAPI import at.hannibal2.skyhanni.data.IslandType import at.hannibal2.skyhanni.data.SkillExperience import at.hannibal2.skyhanni.events.LorenzChatEvent @@ -149,6 +150,16 @@ class BingoNextStepHelper { updateResult() } } + if (step is CollectionStep) { + val counter = CollectionAPI.getCollectionCounter(step.collectionName)?.second ?: 0 + if (step.amountHaving != counter) { + step.amountHaving = counter + if (counter >= step.amountNeeded) { + step.done() + } + updateResult() + } + } } } @@ -288,7 +299,10 @@ class BingoNextStepHelper { ).apply { createItemIslandRequirement(itemName, this) } redstoneForThys requires IslandType.DEEP_CAVERNS.getStep() IslandType.DWARVEN_MINES.getStep() requires redstoneForThys - IslandType.DWARVEN_MINES.getStep() requires SkillLevelStep("Mining", 12).also { it requires IslandType.THE_FARMING_ISLANDS.getStep() } + IslandType.DWARVEN_MINES.getStep() requires SkillLevelStep( + "Mining", + 12 + ).also { it requires IslandType.THE_FARMING_ISLANDS.getStep() } IslandType.CRYSTAL_HOLLOWS.getStep() requires IslandType.DWARVEN_MINES.getStep() // TODO add skyblock level requirement @@ -301,7 +315,10 @@ class BingoNextStepHelper { IslandType.DWARVEN_MINES.getStep().also { finalSteps.add(it) } ChatMessageStep("Get Ender Armor").also { finalSteps.add(it) } requires IslandType.THE_END.getStep() - IslandType.THE_END.getStep() requires SkillLevelStep("Combat", 12).also { it requires IslandType.DEEP_CAVERNS.getStep() } + IslandType.THE_END.getStep() requires SkillLevelStep( + "Combat", + 12 + ).also { it requires IslandType.DEEP_CAVERNS.getStep() } // enchantedCharcoal(7) // compactor(7) diff --git a/src/main/java/at/hannibal2/skyhanni/features/bingo/nextstep/CollectionStep.kt b/src/main/java/at/hannibal2/skyhanni/features/bingo/nextstep/CollectionStep.kt index 0ba7dbe8e..065f92f9b 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/bingo/nextstep/CollectionStep.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/bingo/nextstep/CollectionStep.kt @@ -2,5 +2,5 @@ package at.hannibal2.skyhanni.features.bingo.nextstep import at.hannibal2.skyhanni.utils.NumberUtil -class CollectionStep(val itemName: String, amountNeeded: Int) : - NextStep(NumberUtil.format(amountNeeded) + " $itemName Collection")
\ No newline at end of file +class CollectionStep(val collectionName: String, amountNeeded: Int) : + ProgressionStep(NumberUtil.format(amountNeeded) + " $collectionName Collection", amountNeeded.toLong())
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemDisplayOverlayFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemDisplayOverlayFeatures.kt index 4bbd64276..e77865a35 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemDisplayOverlayFeatures.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemDisplayOverlayFeatures.kt @@ -1,6 +1,7 @@ package at.hannibal2.skyhanni.features.inventory import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.api.CollectionAPI import at.hannibal2.skyhanni.events.RenderItemTipEvent import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.ItemUtils @@ -18,7 +19,6 @@ import java.util.regex.Pattern class ItemDisplayOverlayFeatures { private val wishingCompassPattern = Pattern.compile("§7Remaining Uses: §e(.*)§8/§e3") - private val collectionTier0Pattern = Pattern.compile("§7Progress to .* I: .*") @SubscribeEvent fun onRenderItemTip(event: RenderItemTipEvent) { @@ -138,7 +138,7 @@ class ItemDisplayOverlayFeatures { val lore = item.getLore() if (lore.any { it.contains("Click to view!") }) { item.name?.let { - if (isCollectionTier0(lore)) return "0" + if (CollectionAPI.isCollectionTier0(lore)) return "0" if (it.startsWith("§e")) { val text = it.split(" ").last() return "" + text.romanToDecimalIfNeeded() @@ -150,8 +150,6 @@ class ItemDisplayOverlayFeatures { return "" } - private fun isCollectionTier0(lore: List<String>) = lore.map { collectionTier0Pattern.matcher(it) }.any { it.matches() } - private fun grabSackName(name: String): String { val split = name.split(" ") val text = split[0] diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/CollectionCounter.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/CollectionCounter.kt index 9da10beeb..95289ac0e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/CollectionCounter.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/CollectionCounter.kt @@ -1,14 +1,12 @@ package at.hannibal2.skyhanni.features.misc import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.api.CollectionAPI import at.hannibal2.skyhanni.events.GuiRenderEvent -import at.hannibal2.skyhanni.events.ProfileApiDataLoadedEvent -import at.hannibal2.skyhanni.events.ProfileJoinEvent -import at.hannibal2.skyhanni.features.bazaar.BazaarApi -import at.hannibal2.skyhanni.features.bazaar.BazaarData import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.NEUItems import at.hannibal2.skyhanni.utils.RenderUtils.renderString import net.minecraft.client.Minecraft import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -24,15 +22,13 @@ class CollectionCounter { private var itemName = "" private var itemApiName = "" - private var itemAmount = -1 + private var itemAmount = -1L private var lastAmountInInventory = -1 private var recentGain = 0 private var lastGainTime = -1L - private val apiCollectionData = mutableMapOf<String, Int>() - fun command(args: Array<String>) { if (args.isEmpty()) { if (itemName == "") { @@ -40,44 +36,26 @@ class CollectionCounter { return } LorenzUtils.chat("§e[SkyHanni] Stopped collection tracker.") - apiCollectionData[itemApiName] = itemAmount resetData() return } - var name = args.joinToString(" ") - - var data: BazaarData? = null - for (bazaarData in BazaarApi.bazaarMap.values) { - if (bazaarData.itemName.equals(name, ignoreCase = true)) { - data = bazaarData - break - } - } - - if (data == null) { - LorenzUtils.chat("§c[SkyHanni] Item '$name' not found!") - return - } - name = data.itemName - - val apiName = data.apiName - if (!apiCollectionData.contains(apiName)) { - if (apiCollectionData.isEmpty()) { - LorenzUtils.chat("§c[SkyHanni] No Collection Data! Is the collection API disabled? Is the API down?") - } else { - LorenzUtils.chat("§c[SkyHanni] Item $name is not in the collection data!") - } + val name = args.joinToString(" ") + val pair = CollectionAPI.getCollectionCounter(name) + if (pair == null) { + LorenzUtils.chat("§c[SkyHanni] Item $name is not in the collection data! (API disabled or open the collection inventory)") return } - if (itemAmount != -1) { - resetData() + itemName = pair.first + itemApiName = if (itemName == "Mushroom" || itemName == "Gemstone") { + LorenzUtils.chat("§7Mushroom and Gemstone items are not fully supported for the counter!") + "" + } else { + NEUItems.getInternalName(itemName) } - itemName = name - itemApiName = apiName - itemAmount = apiCollectionData[apiName]!! + itemAmount = pair.second lastAmountInInventory = countCurrentlyInInventory() updateDisplay() @@ -128,8 +106,6 @@ class CollectionCounter { if (diff != 0) { if (diff > 0) { gainItems(diff) -// } else { -// LorenzUtils.debug("Collection counter! Negative collection change: $diff") } } @@ -158,35 +134,6 @@ class CollectionCounter { } @SubscribeEvent - fun onProfileJoin(event: ProfileJoinEvent) { - apiCollectionData.clear() - } - - @SubscribeEvent - fun onProfileDataLoad(event: ProfileApiDataLoadedEvent) { - val profileData = event.profileData - - //new profiles don't have any collections or collection api is disabled - val collection = profileData["collection"]?.asJsonObject ?: return - - apiCollectionData.clear() - for (entry in collection.entrySet()) { - val name = entry.key - val value = entry.value.asInt - apiCollectionData[name] = value - if (name == itemApiName) { - val diff = value - itemAmount - if (diff != 0) { - LorenzUtils.debug("Collection counter was wrong by $diff items. (Compared against API data)") - } - itemAmount = value - recentGain = 0 - updateDisplay() - } - } - } - - @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) { if (!LorenzUtils.inSkyBlock) return |