summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/mining
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-09-09 15:26:16 +0200
committerGitHub <noreply@github.com>2024-09-09 15:26:16 +0200
commit18da4a7c13d215fb6cd7969654986d9072dd24fa (patch)
tree493b5f4aed0e6511cac67cfdd7815d4eb7852b31 /src/main/java/at/hannibal2/skyhanni/features/mining
parente17e70b6933982ca417577f441928f77cbbf9ef1 (diff)
downloadskyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.tar.gz
skyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.tar.bz2
skyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.zip
Improvement: SH Tracker Search (#2477)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/mining')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/mining/fossilexcavator/ExcavatorProfitTracker.kt22
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt63
2 files changed, 36 insertions, 49 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/fossilexcavator/ExcavatorProfitTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/fossilexcavator/ExcavatorProfitTracker.kt
index 655b885e0..ef3f922fb 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/mining/fossilexcavator/ExcavatorProfitTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/mining/fossilexcavator/ExcavatorProfitTracker.kt
@@ -9,7 +9,7 @@ import at.hannibal2.skyhanni.events.ItemAddEvent
import at.hannibal2.skyhanni.events.mining.FossilExcavationEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.ChatUtils
-import at.hannibal2.skyhanni.utils.CollectionUtils.addString
+import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.ItemUtils.itemName
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
@@ -19,6 +19,8 @@ import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.StringUtils
import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.Searchable
+import at.hannibal2.skyhanni.utils.renderables.toSearchable
import at.hannibal2.skyhanni.utils.tracker.ItemTrackerData
import at.hannibal2.skyhanni.utils.tracker.SkyHanniItemTracker
import com.google.gson.annotations.Expose
@@ -73,8 +75,8 @@ object ExcavatorProfitTracker {
private val scrapItem get() = FossilExcavatorAPI.scrapItem
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§e§lFossil Excavation Profit Tracker")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§e§lFossil Excavation Profit Tracker")
var profit = tracker.drawItems(data, { true }, this)
val timesExcavated = data.timesExcavated
@@ -82,7 +84,7 @@ object ExcavatorProfitTracker {
Renderable.hoverTips(
"§7Times excavated: §e${timesExcavated.addSeparators()}",
listOf("§7You excavated §e${timesExcavated.addSeparators()} §7times."),
- ),
+ ).toSearchable(),
)
profit = addScrap(timesExcavated, profit)
@@ -98,7 +100,7 @@ object ExcavatorProfitTracker {
tracker.addPriceFromButton(this)
}
- private fun MutableList<Renderable>.addFossilDust(
+ private fun MutableList<Searchable>.addFossilDust(
fossilDustGained: Long,
profit: Double,
): Double {
@@ -116,12 +118,12 @@ object ExcavatorProfitTracker {
"",
"§7Price Per Fossil Dust: §6${pricePer.shortFormat()}",
),
- ),
+ ).toSearchable("Fossil Dust"),
)
return profit + fossilDustPrice
}
- private fun MutableList<Renderable>.addGlacitePowder(data: Data) {
+ private fun MutableList<Searchable>.addGlacitePowder(data: Data) {
val glacitePowderGained = data.glacitePowderGained
if (glacitePowderGained <= 0) return
add(
@@ -131,11 +133,11 @@ object ExcavatorProfitTracker {
"§7No real profit,",
"§7but still nice to see! Right?",
),
- ),
+ ).toSearchable("Glacite Powder"),
)
}
- private fun MutableList<Renderable>.addScrap(
+ private fun MutableList<Searchable>.addScrap(
timesExcavated: Long,
profit: Double,
): Double {
@@ -151,7 +153,7 @@ object ExcavatorProfitTracker {
"§7for all §e$timesExcavated $name",
"§7you have used.",
),
- ),
+ ).toSearchable("Scrap"),
)
return profit - scrapPrice
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt
index a8c81edab..a90b980d9 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt
@@ -1,8 +1,6 @@
package at.hannibal2.skyhanni.features.mining.powdertracker
import at.hannibal2.skyhanni.SkyHanniMod
-import at.hannibal2.skyhanni.api.HotmAPI
-import at.hannibal2.skyhanni.api.event.HandleEvent
import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.config.features.mining.PowderTrackerConfig.PowderDisplayEntry
import at.hannibal2.skyhanni.data.BossbarData
@@ -14,10 +12,8 @@ import at.hannibal2.skyhanni.events.IslandChangeEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.SecondPassedEvent
-import at.hannibal2.skyhanni.events.mining.PowderGainEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
-import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut
-import at.hannibal2.skyhanni.utils.CollectionUtils.addString
+import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.ConditionalUtils.afterChange
import at.hannibal2.skyhanni.utils.ConfigUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
@@ -27,7 +23,7 @@ import at.hannibal2.skyhanni.utils.RegexUtils.groupOrNull
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.SimpleTimeMark
import at.hannibal2.skyhanni.utils.TimeUtils
-import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.Searchable
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker
import at.hannibal2.skyhanni.utils.tracker.TrackerData
@@ -37,7 +33,6 @@ import com.google.gson.annotations.Expose
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
-import kotlin.time.Duration.Companion.seconds
@SkyHanniModule
object PowderTracker {
@@ -198,11 +193,13 @@ object PowderTracker {
}
for (reward in PowderChestReward.entries) {
- if (reward == PowderChestReward.MITHRIL_POWDER || reward == PowderChestReward.GEMSTONE_POWDER) return
reward.chatPattern.matchMatcher(msg) {
tracker.modify {
val count = it.rewards[reward] ?: 0
- val amount = groupOrNull("amount")?.formatLong() ?: 1
+ var amount = groupOrNull("amount")?.formatLong() ?: 1
+ if ((reward == PowderChestReward.MITHRIL_POWDER || reward == PowderChestReward.GEMSTONE_POWDER) && doublePowder) {
+ amount *= 2
+ }
it.rewards[reward] = count + amount
}
}
@@ -210,20 +207,6 @@ object PowderTracker {
tracker.update()
}
- @HandleEvent(onlyOnIsland = IslandType.CRYSTAL_HOLLOWS)
- fun onPowderGain(event: PowderGainEvent) {
- if (lastChestPicked.passedSince() > 5.seconds) return
- tracker.modify {
- val reward = when (event.powder) {
- HotmAPI.PowderType.GEMSTONE -> PowderChestReward.GEMSTONE_POWDER
- HotmAPI.PowderType.MITHRIL -> PowderChestReward.MITHRIL_POWDER
- else -> return@modify
- }
- it.rewards.addOrPut(reward, event.amount)
- }
- tracker.update()
- }
-
@SubscribeEvent
fun onConfigLoad(event: ConfigLoadEvent) {
config.textFormat.afterChange {
@@ -284,10 +267,10 @@ object PowderTracker {
}
}
- private fun formatDisplay(map: List<Renderable>) = buildList<Renderable> {
+ private fun formatDisplay(map: List<Searchable>) = buildList<Searchable> {
if (map.isEmpty()) return@buildList
- addString("§b§lPowder Tracker")
+ addSearchString("§b§lPowder Tracker")
for (index in config.textFormat.get()) {
// TODO, change functionality to use enum rather than ordinals
@@ -295,7 +278,7 @@ object PowderTracker {
}
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
calculate(data, gemstoneInfo, PowderChestReward.GEMSTONE_POWDER)
calculate(data, mithrilInfo, PowderChestReward.MITHRIL_POWDER)
calculate(data, diamondEssenceInfo, PowderChestReward.DIAMOND_ESSENCE)
@@ -304,20 +287,20 @@ object PowderTracker {
calculateHardStone(data)
val chestPerHour = format(chestInfo.perHour)
- addString("§d${data.totalChestPicked.addSeparators()} Total Chests Picked §7($chestPerHour/h)")
- addString("§bDouble Powder: ${if (doublePowder) "§aActive! §7($powderTimer)" else "§cInactive!"}")
+ addSearchString("§d${data.totalChestPicked.addSeparators()} Total Chests Picked §7($chestPerHour/h)")
+ addSearchString("§bDouble Powder: ${if (doublePowder) "§aActive! §7($powderTimer)" else "§cInactive!"}")
val entries = PowderChestReward.entries
val rewards = data.rewards
addPerHour(rewards, entries[0], mithrilInfo)
addPerHour(rewards, entries[1], gemstoneInfo)
- addString("")
+ addSearchString("")
addPerHour(rewards, entries[46], diamondEssenceInfo)
addPerHour(rewards, entries[47], goldEssenceInfo)
- addString("")
+ addSearchString("")
val hardStonePerHour = format(hardStoneInfo.perHour)
- addString("§b${data.totalHardStoneCompacted.addSeparators()} §fHard Stone §bCompacted §7($hardStonePerHour/h)")
- addString("")
+ addSearchString("§b${data.totalHardStoneCompacted.addSeparators()} §fHard Stone §bCompacted §7($hardStonePerHour/h)", "Hard Stone")
+ addSearchString("")
for ((gem, color) in gemstones) {
var totalGemstone = 0L
@@ -334,38 +317,40 @@ object PowderTracker {
}
val (flawless, fine, flawed, rough) = convert(totalGemstone)
- addString("§5${flawless}§7-§9${fine}§7-§a${flawed}§f-${rough} $color$gem Gemstone")
+ addSearchString("§5${flawless}§7-§9${fine}§7-§a${flawed}§f-${rough} $color$gem Gemstone", "Gemstone")
}
var totalParts = 0L
for (reward in entries.subList(26, 32)) { // robots part
val count = rewards.getOrDefault(reward, 0)
totalParts += count
- addString("§b${count.addSeparators()} ${reward.displayName}")
+ val name = reward.displayName
+ addSearchString("§b${count.addSeparators()} $name", name)
}
- addString("§b${totalParts.addSeparators()} §9Total Robot Parts")
+ addSearchString("§b${totalParts.addSeparators()} §9Total Robot Parts")
val goblinEgg = rewards.getOrDefault(PowderChestReward.GOBLIN_EGG, 0)
val greenEgg = rewards.getOrDefault(PowderChestReward.GREEN_GOBLIN_EGG, 0)
val redEgg = rewards.getOrDefault(PowderChestReward.RED_GOBLIN_EGG, 0)
val yellowEgg = rewards.getOrDefault(PowderChestReward.YELLOW_GOBLIN_EGG, 0)
val blueEgg = rewards.getOrDefault(PowderChestReward.BLUE_GOBLIN_EGG, 0)
- addString("§3$blueEgg§7-§c$redEgg§7-§e$yellowEgg§f-§a$greenEgg§f-§9$goblinEgg §fGoblin Egg")
+ addSearchString("§3$blueEgg§7-§c$redEgg§7-§e$yellowEgg§f-§a$greenEgg§f-§9$goblinEgg §fGoblin Egg")
for (reward in entries.subList(37, 46)) {
val count = rewards.getOrDefault(reward, 0).addSeparators()
- addString("§b$count ${reward.displayName}")
+ val name = reward.displayName
+ addSearchString("§b$count $name", name)
}
}
- private fun MutableList<Renderable>.addPerHour(
+ private fun MutableList<Searchable>.addPerHour(
map: Map<PowderChestReward, Long>,
reward: PowderChestReward,
info: ResourceInfo,
) {
val mithrilCount = map.getOrDefault(reward, 0).addSeparators()
val mithrilPerHour = format(info.perHour)
- addString("§b$mithrilCount ${reward.displayName} §7($mithrilPerHour/h)")
+ addSearchString("§b$mithrilCount ${reward.displayName} §7($mithrilPerHour/h)")
}
private fun format(e: Double): String = if (e < 0) "0" else e.toInt().addSeparators()