diff options
| author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-09-16 12:34:18 +0200 |
|---|---|---|
| committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-09-16 12:34:18 +0200 |
| commit | 4293cfd919c3c93d4532534f722c407d7ad1370d (patch) | |
| tree | f9f612f021ef7f4283d74312edfaca30badc6749 /src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt | |
| parent | 538e3ceb76f8e0b590291ce9aa90aa94896cdcb6 (diff) | |
| parent | 024ba52fb69b6cd44b4e31542867f802de656f15 (diff) | |
| download | SkyHanni-cum.tar.gz SkyHanni-cum.tar.bz2 SkyHanni-cum.zip | |
Merge branch 'beta' into cumcum
# Conflicts:
# src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
# src/main/java/at/hannibal2/skyhanni/config/features/AshfangConfig.java
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt new file mode 100644 index 000000000..c8882a1b8 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/SuperpairsClicksAlert.kt @@ -0,0 +1,60 @@ +package at.hannibal2.skyhanni.features.misc + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.InventoryOpenEvent +import at.hannibal2.skyhanni.events.InventoryUpdatedEvent +import at.hannibal2.skyhanni.utils.ItemUtils.getLore +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.SoundUtils +import at.hannibal2.skyhanni.utils.StringUtils.removeColor +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class SuperpairsClicksAlert { + private val config get() = SkyHanniMod.feature.misc + + private var roundsNeeded = -1 + private val roundsNeededRegex = Regex("""(?:Chain|Series) of (\d+):""") + private val currentRoundRegex = Regex("""Round: (\d+)""") + private val targetInventoryNames = arrayOf("Chronomatron", "Ultrasequencer") + + @SubscribeEvent + fun onInventoryOpen(event: InventoryOpenEvent) { + if (!config.superpairsClicksAlert) return + if (!targetInventoryNames.any { event.inventoryName.contains(it) }) return + + // player may have drank Metaphysical Serum which reduces clicks needed by up to 3, so need to parse it + for (i in 24 downTo 20) { + val lore = event.inventoryItems[i]?.getLore() ?: continue + if (lore.any { it.contains("Practice mode has no rewards") }) { + roundsNeeded = -1 + break + } + val match = lore.asReversed().firstNotNullOfOrNull { roundsNeededRegex.find(it.removeColor()) } ?: continue + roundsNeeded = match.groups[1]!!.value.toInt() + break + } + } + + @SubscribeEvent + fun onInventoryUpdate(event: InventoryUpdatedEvent) { + if (!config.superpairsClicksAlert) return + if (roundsNeeded == -1) return + if (!targetInventoryNames.any { event.inventoryName.contains(it) }) return + + if ( // checks if we have succeeded in either minigame + (event.inventoryName.contains("Chronomatron") + && ((event.inventoryItems[4]?.displayName?.removeColor() + ?.let { currentRoundRegex.find(it) } + ?.groups?.get(1)?.value?.toInt() ?: -1) > roundsNeeded)) + + || (event.inventoryName.contains("Ultrasequencer") + && event.inventoryItems.entries + .filter { it.key < 45 } + .any { it.value.stackSize > roundsNeeded }) + ) { + SoundUtils.playBeepSound() + LorenzUtils.chat("§e[SkyHanni] You have reached the maximum possible clicks!") + roundsNeeded = -1 + } + } +} |
