diff options
| author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-12-16 16:32:07 +0100 |
|---|---|---|
| committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-12-16 16:32:07 +0100 |
| commit | 5d027819967ad664dd6b79f2e3c90c752df55e84 (patch) | |
| tree | 1542a67f137999c57ca1daa08b0c237b96e0c9d7 /src/main/java/at/hannibal2/skyhanni/features | |
| parent | 6a9599fa9820b3efe0e5fdbb1d546ad8a0aa4de7 (diff) | |
| download | skyhanni-5d027819967ad664dd6b79f2e3c90c752df55e84.tar.gz skyhanni-5d027819967ad664dd6b79f2e3c90c752df55e84.tar.bz2 skyhanni-5d027819967ad664dd6b79f2e3c90c752df55e84.zip | |
Added Mythological Mob Tracker.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt | 6 | ||||
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt | 104 |
2 files changed, 109 insertions, 1 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt index b65f4e510..d6849e9aa 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt @@ -21,7 +21,7 @@ import at.hannibal2.skyhanni.utils.tracker.SkyHanniItemTracker import com.google.gson.annotations.Expose import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -class DianaProfitTracker { +object DianaProfitTracker { private val config get() = SkyHanniMod.feature.event.diana.dianaProfitTracker private var allowedDrops = listOf<NEUInternalName>() @@ -139,5 +139,9 @@ class DianaProfitTracker { allowedDrops = event.getConstant<DianaDrops>("DianaDrops").diana_drops } + fun resetCommand(args: Array<String>) { + tracker.resetCommand(args, "shresetdianaprofittracker") + } + 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 new file mode 100644 index 000000000..dfb0de36a --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.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 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<MythologicalMobType, Int> = 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<List<Any>> = 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<String>) { + tracker.resetCommand(args, "shresetmythologicalmobtracker") + } + + private fun isEnabled() = DianaAPI.isDoingDiana() && config.enabled +} |
