From 38abef2c4409cf32b2087918ac587e8bf370c091 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:23:57 +0100 Subject: Added Sea Creature Tracker. --- .../event/diana/MythologicalCreatureTracker.kt | 104 +++++++++++++++++++++ .../features/event/diana/MythologicalMobTracker.kt | 104 --------------------- 2 files changed, 104 insertions(+), 104 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt delete mode 100644 src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt (limited to 'src/main/java/at/hannibal2/skyhanni/features/event') diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt new file mode 100644 index 000000000..f924cefb1 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt @@ -0,0 +1,104 @@ +package at.hannibal2.skyhanni.features.event.diana + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.ConfigLoadEvent +import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList +import at.hannibal2.skyhanni.utils.LorenzUtils.addOrPut +import at.hannibal2.skyhanni.utils.LorenzUtils.sumAllValues +import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators +import at.hannibal2.skyhanni.utils.StringUtils.matches +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern +import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker +import at.hannibal2.skyhanni.utils.tracker.TrackerData +import com.google.gson.annotations.Expose +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.util.regex.Pattern + +object MythologicalCreatureTracker { + + private val group = RepoPattern.group("event.diana.mythological.tracker") + + private val minotaurPattern by group.pattern("minotaur", ".* §r§eYou dug out a §r§2Minotaur§r§e!") + private val gaiaConstructPattern by group.pattern("gaiaconstruct", ".* §r§eYou dug out a §r§2Gaia Construct§r§e!") + private val minosChampionPattern by group.pattern("minoschampion", ".* §r§eYou dug out a §r§2Minos Champion§r§e!") + private val siameseLynxesPattern by group.pattern("siameselynxes", ".* §r§eYou dug out §r§2Siamese Lynxes§r§e!") + private val minosHunterPattern by group.pattern("minoshunter", ".* §r§eYou dug out a §r§2Minos Hunter§r§e!") + private val minosInquisitorPattern by group.pattern( + "minosinquisitor", + ".* §r§eYou dug out a §r§2Minos Inquisitor§r§e!" + ) + + private val config get() = SkyHanniMod.feature.event.diana.mythologicalMobtracker + + private val tracker = SkyHanniTracker("Mythological Creature Tracker", { Data() }, { it.diana.mythologicalMobTracker }) + { drawDisplay(it) } + + class Data : TrackerData() { + override fun reset() { + count.clear() + } + + @Expose + var count: MutableMap = mutableMapOf() + } + + enum class MythologicalCreatureType(val displayName: String, val pattern: Pattern) { + MINOTAUR("§2Minotaur", minotaurPattern), + GAIA_CONSTRUCT("§2Gaia Construct", gaiaConstructPattern), + MINOS_CHAMPION("§2Minos Champion", minosChampionPattern), + SIAMESE_LYNXES("§2Siamese Lynxes", siameseLynxesPattern), + MINOS_HUNTER("§2Minos Hunter", minosHunterPattern), + MINOS_INQUISITOR("§cMinos Inquisitor", minosInquisitorPattern), + } + + @SubscribeEvent + fun onChat(event: LorenzChatEvent) { + MythologicalCreatureType.entries.forEach { creatureType -> + if (creatureType.pattern.matches(event.message)) { + tracker.modify { it.count.addOrPut(creatureType, 1) } + + if (config.hideChat) { + event.blockedReason = "mythological_creature_dug" + } + } + } + } + + private fun drawDisplay(data: Data): List> = buildList { + addAsSingletonList("§7Mythological Creature Tracker:") + val total = data.count.sumAllValues() + data.count.entries.sortedByDescending { it.value }.forEach { (creatureType, amount) -> + + val percentageSuffix = if (config.showPercentage.get()) { + val percentage = LorenzUtils.formatPercentage(amount.toDouble() / total) + " §7$percentage" + } else "" + + addAsSingletonList(" §7- §e${amount.addSeparators()} ${creatureType.displayName}$percentageSuffix") + } + addAsSingletonList(" §7- §e${total.addSeparators()} §7Total Mythological Creatures") + } + + @SubscribeEvent + fun onConfigLoad(event: ConfigLoadEvent) { + LorenzUtils.onToggle(config.showPercentage) { + tracker.update() + } + } + + @SubscribeEvent + fun onRenderOverlay(event: GuiRenderEvent) { + if (!isEnabled()) return + + tracker.renderDisplay(config.position) + } + + fun resetCommand(args: Array) { + tracker.resetCommand(args, "shresetmythologicalcreatureracker") + } + + private fun isEnabled() = DianaAPI.isDoingDiana() && config.enabled +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt deleted file mode 100644 index dfb0de36a..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt +++ /dev/null @@ -1,104 +0,0 @@ -package at.hannibal2.skyhanni.features.event.diana - -import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.events.ConfigLoadEvent -import at.hannibal2.skyhanni.events.GuiRenderEvent -import at.hannibal2.skyhanni.events.LorenzChatEvent -import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList -import at.hannibal2.skyhanni.utils.LorenzUtils.addOrPut -import at.hannibal2.skyhanni.utils.LorenzUtils.sumAllValues -import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators -import at.hannibal2.skyhanni.utils.StringUtils.matches -import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern -import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker -import at.hannibal2.skyhanni.utils.tracker.TrackerData -import com.google.gson.annotations.Expose -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import java.util.regex.Pattern - -object MythologicalMobTracker { - - private val group = RepoPattern.group("event.diana.mythological.tracker") - - private val minotaurPattern by group.pattern("minotaur", ".* §r§eYou dug out a §r§2Minotaur§r§e!") - private val gaiaConstructPattern by group.pattern("gaiaconstruct", ".* §r§eYou dug out a §r§2Gaia Construct§r§e!") - private val minosChampionPattern by group.pattern("minoschampion", ".* §r§eYou dug out a §r§2Minos Champion§r§e!") - private val siameseLynxesPattern by group.pattern("siameselynxes", ".* §r§eYou dug out §r§2Siamese Lynxes§r§e!") - private val minosHunterPattern by group.pattern("minoshunter", ".* §r§eYou dug out a §r§2Minos Hunter§r§e!") - private val minosInquisitorPattern by group.pattern( - "minosinquisitor", - ".* §r§eYou dug out a §r§2Minos Inquisitor§r§e!" - ) - - private val config get() = SkyHanniMod.feature.event.diana.mythologicalMobtracker - - private val tracker = SkyHanniTracker("Mythological Mob Tracker", { Data() }, { it.diana.mythologicalMobTracker }) - { drawDisplay(it) } - - class Data : TrackerData() { - override fun reset() { - count.clear() - } - - @Expose - var count: MutableMap = mutableMapOf() - } - - enum class MythologicalMobType(val displayName: String, val pattern: Pattern) { - MINOTAUR("§2Minotaur", minotaurPattern), - GAIA_CONSTRUCT("§2Gaia Construct", gaiaConstructPattern), - MINOS_CHAMPION("§2Minos Champion", minosChampionPattern), - SIAMESE_LYNXES("§2Siamese Lynxes", siameseLynxesPattern), - MINOS_HUNTER("§2Minos Hunter", minosHunterPattern), - MINOS_INQUISITOR("§cMinos Inquisitor", minosInquisitorPattern), - } - - @SubscribeEvent - fun onChat(event: LorenzChatEvent) { - MythologicalMobType.entries.forEach { mobType -> - if (mobType.pattern.matches(event.message)) { - tracker.modify { it.count.addOrPut(mobType, 1) } - - if (config.hideChat) { - event.blockedReason = "mythological_mob_dug" - } - } - } - } - - private fun drawDisplay(data: Data): List> = buildList { - addAsSingletonList("§7Mythological Mob Tracker:") - val total = data.count.sumAllValues() - data.count.entries.sortedByDescending { it.value }.forEach { (mobType, amount) -> - - val percentageSuffix = if (config.showPercentage.get()) { - val percentage = LorenzUtils.formatPercentage(amount.toDouble() / total) - " §7$percentage" - } else "" - - addAsSingletonList(" §7- §e${amount.addSeparators()} ${mobType.displayName}$percentageSuffix") - } - addAsSingletonList(" §7- §e${total.addSeparators()} §bTotal Mobs") - } - - @SubscribeEvent - fun onConfigLoad(event: ConfigLoadEvent) { - LorenzUtils.onToggle(config.showPercentage) { - tracker.update() - } - } - - @SubscribeEvent - fun onRenderOverlay(event: GuiRenderEvent) { - if (!isEnabled()) return - - tracker.renderDisplay(config.position) - } - - fun resetCommand(args: Array) { - tracker.resetCommand(args, "shresetmythologicalmobtracker") - } - - private fun isEnabled() = DianaAPI.isDoingDiana() && config.enabled -} -- cgit