summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-12-16 16:32:07 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-12-16 16:32:07 +0100
commit5d027819967ad664dd6b79f2e3c90c752df55e84 (patch)
tree1542a67f137999c57ca1daa08b0c237b96e0c9d7 /src/main/java/at/hannibal2/skyhanni/features
parent6a9599fa9820b3efe0e5fdbb1d546ad8a0aa4de7 (diff)
downloadskyhanni-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.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalMobTracker.kt104
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
+}