summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni
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
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')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt33
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaProfitTracker.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt35
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/jerry/frozentreasure/FrozenTreasureTracker.kt26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/FishingProfitTracker.kt14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/SeaCreatureTracker.kt16
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/ArmorDropTracker.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/DicerRngDropTracker.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestProfitTracker.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryStrayTracker.kt13
-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
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminTracker.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerProfitTracker.kt12
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/GraphEditor.kt67
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt237
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/RenderableUtils.kt33
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/Searchable.kt58
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt20
22 files changed, 513 insertions, 261 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt
index 931f3b622..51deea2b8 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt
@@ -13,7 +13,7 @@ import at.hannibal2.skyhanni.events.OwnInventoryItemUpdateEvent
import at.hannibal2.skyhanni.events.SackChangeEvent
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.InventoryUtils
@@ -26,7 +26,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
import at.hannibal2.skyhanni.utils.NEUItems.getPriceOrNull
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
-import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.Searchable
import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker
import at.hannibal2.skyhanni.utils.tracker.TrackerData
import com.google.gson.annotations.Expose
@@ -212,36 +212,35 @@ object EnderNodeTracker {
else -> null
}
- private fun drawDisplay(data: Data) = buildList<Renderable> {
+ private fun drawDisplay(data: Data) = buildList<Searchable> {
val lootProfit = getLootProfit(data)
- addString("§5§lEnder Node Tracker")
- addString("§d${data.totalNodesMined.addSeparators()} Ender Nodes mined")
- addString("§6${lootProfit.values.sum().shortFormat()} Coins made")
- addString(" ")
- addString("§b${data.totalEndermiteNests.addSeparators()} §cEndermite Nest")
+ addSearchString("§5§lEnder Node Tracker")
+ addSearchString("§d${data.totalNodesMined.addSeparators()} Ender Nodes mined")
+ addSearchString("§6${lootProfit.values.sum().shortFormat()} Coins made")
+ addSearchString(" ")
+ addSearchString("§b${data.totalEndermiteNests.addSeparators()} §cEndermite Nest", "Endermite Nest")
for (item in EnderNode.entries.subList(0, 11)) {
val count = (data.lootCount[item] ?: 0).addSeparators()
val profit = (lootProfit[item] ?: 0.0).shortFormat()
- addString("§b$count ${item.displayName} §7(§6$profit§7)")
+ addSearchString("§b$count ${item.displayName} §7(§6$profit§7)", item.displayName)
}
- addString(" ")
+ addSearchString(" ")
val totalEnderArmor = calculateEnderArmor(data)
- addString(
- "§b${totalEnderArmor.addSeparators()} §5Ender Armor " +
- "§7(§6${(totalEnderArmor * 10_000).shortFormat()}§7)"
+ addSearchString(
+ "§b${totalEnderArmor.addSeparators()} §5Ender Armor " + "§7(§6${(totalEnderArmor * 10_000).shortFormat()}§7)"
)
for (item in EnderNode.entries.subList(11, 16)) {
val count = (data.lootCount[item] ?: 0).addSeparators()
val profit = (lootProfit[item] ?: 0.0).shortFormat()
- addString("§b$count ${item.displayName} §7(§6$profit§7)")
+ addSearchString("§b$count ${item.displayName} §7(§6$profit§7)")
}
// enderman pet rarities
val (c, u, r, e, l) = EnderNode.entries.subList(16, 21).map { (data.lootCount[it] ?: 0).addSeparators() }
val profit = EnderNode.entries.subList(16, 21).sumOf { lootProfit[it] ?: 0.0 }.shortFormat()
- addString("§f$c§7-§a$u§7-§9$r§7-§5$e§7-§6$l §fEnderman Pet §7(§6$profit§7)")
+ addSearchString("§f$c§7-§a$u§7-§9$r§7-§5$e§7-§6$l §fEnderman Pet §7(§6$profit§7)")
}
private fun calculateEnderArmor(storage: Data) =
@@ -249,10 +248,10 @@ object EnderNodeTracker {
.map { it.value }
.sum()
- private fun formatDisplay(map: List<Renderable>): List<Renderable> {
+ private fun formatDisplay(map: List<Searchable>): List<Searchable> {
if (!ProfileStorageData.loaded) return emptyList()
- val newList = mutableListOf<Renderable>()
+ val newList = mutableListOf<Searchable>()
for (index in config.textFormat.get()) {
// TODO, change functionality to use enum rather than ordinals
newList.add(map[index.ordinal])
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 f8ae6165b..ade5966ea 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
@@ -9,7 +9,7 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
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.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
@@ -19,6 +19,8 @@ import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.SimpleTimeMark
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.repopatterns.RepoPattern
import at.hannibal2.skyhanni.utils.tracker.ItemTrackerData
import at.hannibal2.skyhanni.utils.tracker.SkyHanniItemTracker
@@ -77,8 +79,8 @@ object DianaProfitTracker {
}
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§e§lDiana Profit Tracker")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§e§lDiana Profit Tracker")
val profit = tracker.drawItems(data, { true }, this)
@@ -87,7 +89,7 @@ object DianaProfitTracker {
Renderable.hoverTips(
"§7Burrows dug: §e${treasureCoins.addSeparators()}",
listOf("§7You dug out griffin burrows §e${treasureCoins.addSeparators()} §7times."),
- ),
+ ).toSearchable(),
)
add(tracker.addTotalProfit(profit, data.burrowsDug, "burrow"))
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
index fc7442faf..ec882d6ec 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/MythologicalCreatureTracker.kt
@@ -6,14 +6,14 @@ import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
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.CollectionUtils.sumAllValues
import at.hannibal2.skyhanni.utils.ConditionalUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.SimpleTimeMark
-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
@@ -30,32 +30,31 @@ object MythologicalCreatureTracker {
private val patternGroup = RepoPattern.group("event.diana.mythological.tracker")
private val minotaurPattern by patternGroup.pattern(
"minotaur",
- ".* §r§eYou dug out a §r§2Minotaur§r§e!"
+ ".* §r§eYou dug out a §r§2Minotaur§r§e!",
)
private val gaiaConstructPattern by patternGroup.pattern(
"gaiaconstruct",
- ".* §r§eYou dug out a §r§2Gaia Construct§r§e!"
+ ".* §r§eYou dug out a §r§2Gaia Construct§r§e!",
)
private val minosChampionPattern by patternGroup.pattern(
"minoschampion",
- ".* §r§eYou dug out a §r§2Minos Champion§r§e!"
+ ".* §r§eYou dug out a §r§2Minos Champion§r§e!",
)
private val siameseLynxesPattern by patternGroup.pattern(
"siameselynxes",
- ".* §r§eYou dug out §r§2Siamese Lynxes§r§e!"
+ ".* §r§eYou dug out §r§2Siamese Lynxes§r§e!",
)
private val minosHunterPattern by patternGroup.pattern(
"minoshunter",
- ".* §r§eYou dug out a §r§2Minos Hunter§r§e!"
+ ".* §r§eYou dug out a §r§2Minos Hunter§r§e!",
)
private val minosInquisitorPattern by patternGroup.pattern(
"minosinquisitor",
- ".* §r§eYou dug out a §r§2Minos Inquisitor§r§e!"
+ ".* §r§eYou dug out a §r§2Minos Inquisitor§r§e!",
)
private val tracker =
- SkyHanniTracker("Mythological Creature Tracker", { Data() }, { it.diana.mythologicalMobTracker })
- { drawDisplay(it) }
+ SkyHanniTracker("Mythological Creature Tracker", { Data() }, { it.diana.mythologicalMobTracker }) { drawDisplay(it) }
class Data : TrackerData() {
@@ -90,8 +89,7 @@ object MythologicalCreatureTracker {
// TODO migrate to abstract feature in the future
if (creatureType == MythologicalCreatureType.MINOS_INQUISITOR) {
- event.chatComponent =
- ChatComponentText(event.message + " §e(${it.creaturesSinceLastInquisitor})")
+ event.chatComponent = ChatComponentText(event.message + " §e(${it.creaturesSinceLastInquisitor})")
it.creaturesSinceLastInquisitor = 0
} else it.creaturesSinceLastInquisitor++
}
@@ -100,8 +98,8 @@ object MythologicalCreatureTracker {
}
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§7Mythological Creature Tracker:")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§7Mythological Creature Tracker:")
val total = data.count.sumAllValues()
for ((creatureType, amount) in data.count.entries.sortedByDescending { it.value }) {
val percentageSuffix = if (config.showPercentage.get()) {
@@ -109,10 +107,13 @@ object MythologicalCreatureTracker {
" §7$percentage"
} else ""
- addString(" §7- §e${amount.addSeparators()} ${creatureType.displayName}$percentageSuffix")
+ addSearchString(
+ " §7- §e${amount.addSeparators()} ${creatureType.displayName}$percentageSuffix",
+ searchText = creatureType.displayName,
+ )
}
- addString(" §7- §e${total.addSeparators()} §7Total Mythological Creatures")
- addString(" §7- §e${data.creaturesSinceLastInquisitor.addSeparators()} §7Creatures since last Minos Inquisitor")
+ addSearchString(" §7- §e${total.addSeparators()} §7Total Mythological Creatures")
+ addSearchString(" §7- §e${data.creaturesSinceLastInquisitor.addSeparators()} §7Creatures since last Minos Inquisitor")
}
@SubscribeEvent
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/jerry/frozentreasure/FrozenTreasureTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/event/jerry/frozentreasure/FrozenTreasureTracker.kt
index 4fc5b824b..80812c4c5 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/jerry/frozentreasure/FrozenTreasureTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/jerry/frozentreasure/FrozenTreasureTracker.kt
@@ -12,7 +12,7 @@ import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.SecondPassedEvent
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.ConfigUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
@@ -20,7 +20,7 @@ import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
-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
@@ -105,8 +105,8 @@ object FrozenTreasureTracker {
icePerHour = (icePerSecond.average() * 3600).toInt()
}
- private fun formatDisplay(map: List<Renderable>): List<Renderable> {
- val newList = mutableListOf<Renderable>()
+ private fun formatDisplay(map: List<Searchable>): List<Searchable> {
+ val newList = mutableListOf<Searchable>()
for (index in config.textFormat) {
// TODO, change functionality to use enum rather than ordinals
newList.add(map[index.ordinal])
@@ -137,20 +137,20 @@ object FrozenTreasureTracker {
}
}
- private fun drawDisplay(data: Data) = buildList {
+ private fun drawDisplay(data: Data) = buildList<Searchable> {
calculateIce(data)
- addString("§e§lFrozen Treasure Tracker")
- addString("§6${formatNumber(data.treasuresMined)} Treasures Mined")
- addString("§3${formatNumber(estimatedIce)} Total Ice")
- addString("§3${formatNumber(icePerHour)} Ice/hr")
- addString("§8${formatNumber(data.compactProcs)} Compact Procs")
- addString("")
+ addSearchString("§e§lFrozen Treasure Tracker")
+ addSearchString("§6${formatNumber(data.treasuresMined)} Treasures Mined")
+ addSearchString("§3${formatNumber(estimatedIce)} Total Ice")
+ addSearchString("§3${formatNumber(icePerHour)} Ice/hr")
+ addSearchString("§8${formatNumber(data.compactProcs)} Compact Procs")
+ addSearchString("")
for (treasure in FrozenTreasure.entries) {
val count = (data.treasureCount[treasure] ?: 0) * if (config.showAsDrops) treasure.defaultAmount else 1
- addString("§b${formatNumber(count)} ${treasure.displayName}")
+ addSearchString("§b${formatNumber(count)} ${treasure.displayName}", treasure.displayName)
}
- addString("")
+ addSearchString("")
}
fun formatNumber(amount: Number): String {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/FishingProfitTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/FishingProfitTracker.kt
index 619334a98..12f3accd1 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/FishingProfitTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/FishingProfitTracker.kt
@@ -13,8 +13,7 @@ import at.hannibal2.skyhanni.features.fishing.FishingAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.test.command.ErrorManager
import at.hannibal2.skyhanni.utils.ChatUtils
-import at.hannibal2.skyhanni.utils.CollectionUtils.addButton
-import at.hannibal2.skyhanni.utils.CollectionUtils.addString
+import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.DelayedRun
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName
@@ -26,6 +25,9 @@ import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.SimpleTimeMark
import at.hannibal2.skyhanni.utils.StringUtils
import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.addButton
+import at.hannibal2.skyhanni.utils.renderables.Searchable
+import at.hannibal2.skyhanni.utils.renderables.toSearchable
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import at.hannibal2.skyhanni.utils.tracker.ItemTrackerData
import at.hannibal2.skyhanni.utils.tracker.SkyHanniItemTracker
@@ -119,8 +121,8 @@ object FishingProfitTracker {
return map
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§e§lFishing Profit Tracker")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§e§lFishing Profit Tracker")
val filter: (NEUInternalName) -> Boolean = addCategories(data)
val profit = tracker.drawItems(data, filter, this)
@@ -130,7 +132,7 @@ object FishingProfitTracker {
Renderable.hoverTips(
"§7Times fished: §e${fishedCount.addSeparators()}",
listOf("§7You've reeled in §e${fishedCount.addSeparators()} §7catches."),
- ),
+ ).toSearchable(),
)
add(tracker.addTotalProfit(profit, data.totalCatchAmount, "catch"))
@@ -138,7 +140,7 @@ object FishingProfitTracker {
tracker.addPriceFromButton(this)
}
- private fun MutableList<Renderable>.addCategories(data: Data): (NEUInternalName) -> Boolean {
+ private fun MutableList<Searchable>.addCategories(data: Data): (NEUInternalName) -> Boolean {
val amounts = getCurrentCategories(data)
checkMissingItems(data)
val list = amounts.keys.toList()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/SeaCreatureTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/SeaCreatureTracker.kt
index fd41883ef..b293c2736 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/SeaCreatureTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/tracker/SeaCreatureTracker.kt
@@ -9,15 +9,15 @@ import at.hannibal2.skyhanni.features.fishing.FishingAPI
import at.hannibal2.skyhanni.features.fishing.SeaCreatureManager
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.test.command.ErrorManager
-import at.hannibal2.skyhanni.utils.CollectionUtils.addButton
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.CollectionUtils.sumAllValues
import at.hannibal2.skyhanni.utils.ConditionalUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.StringUtils.allLettersFirstUppercase
-import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.addButton
+import at.hannibal2.skyhanni.utils.renderables.Searchable
import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker
import at.hannibal2.skyhanni.utils.tracker.TrackerData
import com.google.gson.annotations.Expose
@@ -71,8 +71,8 @@ object SeaCreatureTracker {
return map
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§7Sea Creature Tracker:")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§7Sea Creature Tracker:")
val filter: (String) -> Boolean = addCategories(data)
val realAmount = data.amount.filter { filter(it.key) }
@@ -94,12 +94,12 @@ object SeaCreatureTracker {
" §7$percentage"
} else ""
- addString(" §7- §e${amount.addSeparators()} $displayName$percentageSuffix")
+ addSearchString(" §7- §e${amount.addSeparators()} $displayName$percentageSuffix", displayName)
}
- addString(" §7- §e${total.addSeparators()} §7Total Sea Creatures")
+ addSearchString(" §7- §e${total.addSeparators()} §7Total Sea Creatures")
}
- private fun MutableList<Renderable>.addCategories(data: Data): (String) -> Boolean {
+ private fun MutableList<Searchable>.addCategories(data: Data): (String) -> Boolean {
val amounts = getCurrentCategories(data)
val list = amounts.keys.toList()
if (currentCategory !in list) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/ArmorDropTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/ArmorDropTracker.kt
index 1e9397d5f..90c68a046 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/ArmorDropTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/ArmorDropTracker.kt
@@ -14,13 +14,13 @@ import at.hannibal2.skyhanni.features.garden.CropType
import at.hannibal2.skyhanni.features.garden.GardenAPI
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.CollectionUtils.sortedDesc
import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.SimpleTimeMark
-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
@@ -84,11 +84,11 @@ object ArmorDropTracker {
}
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§7Armor Drop Tracker:")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§7Armor Drop Tracker:")
for ((drop, amount) in data.drops.sortedDesc()) {
val dropName = drop.dropName
- addString(" §7- §e${amount.addSeparators()}x $dropName")
+ addSearchString(" §7- §e${amount.addSeparators()}x $dropName", dropName)
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/DicerRngDropTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/DicerRngDropTracker.kt
index 34d3fe53d..8cc8c55cb 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/DicerRngDropTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/DicerRngDropTracker.kt
@@ -10,12 +10,15 @@ import at.hannibal2.skyhanni.features.garden.CropType
import at.hannibal2.skyhanni.features.garden.GardenAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut
+import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.CollectionUtils.sortedDesc
import at.hannibal2.skyhanni.utils.ConditionalUtils
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
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.repopatterns.RepoPattern
import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker
import at.hannibal2.skyhanni.utils.tracker.TrackerData
@@ -120,30 +123,28 @@ object DicerRngDropTracker {
}
}
- private fun drawDisplay(data: Data) = buildList<Renderable> {
+ private fun drawDisplay(data: Data) = buildList<Searchable> {
val cropInHand = cropInHand ?: return@buildList
val topLine = mutableListOf<Renderable>()
topLine.add(Renderable.itemStack(cropInHand.icon))
topLine.add(Renderable.string("§7Dicer Tracker:"))
- add(Renderable.horizontalContainer(topLine))
+ add(Renderable.horizontalContainer(topLine).toSearchable())
val items = data.drops[cropInHand] ?: return@buildList
- val list = mutableListOf<Renderable>()
if (config.compact.get()) {
val compactLine = items.sortedDesc().map { (rarity, amount) ->
"§${rarity.colorCode}${amount.addSeparators()}"
}.joinToString("§7/")
- list.add(Renderable.string(compactLine))
+ addSearchString(compactLine)
} else {
for ((rarity, amount) in items.sortedDesc()) {
val colorCode = rarity.colorCode
val displayName = rarity.displayName
- list.add(Renderable.string(" §7- §e${amount.addSeparators()}x §$colorCode$displayName"))
+ addSearchString(" §7- §e${amount.addSeparators()}x §$colorCode$displayName", displayName)
}
}
- add(Renderable.verticalContainer(list))
}
private var cropInHand: CropType? = null
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestProfitTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestProfitTracker.kt
index 7dcd07861..19506109e 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestProfitTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestProfitTracker.kt
@@ -11,7 +11,7 @@ import at.hannibal2.skyhanni.events.PurseChangeCause
import at.hannibal2.skyhanni.events.PurseChangeEvent
import at.hannibal2.skyhanni.features.garden.GardenAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
-import at.hannibal2.skyhanni.utils.CollectionUtils.addString
+import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
@@ -19,6 +19,8 @@ import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.SimpleTimeMark
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.repopatterns.RepoPattern
import at.hannibal2.skyhanni.utils.tracker.ItemTrackerData
import at.hannibal2.skyhanni.utils.tracker.SkyHanniItemTracker
@@ -117,8 +119,8 @@ object PestProfitTracker {
lastPestKillTime = SimpleTimeMark.now()
}
- private fun drawDisplay(data: Data): List<Renderable> = buildList {
- addString("§e§lPest Profit Tracker")
+ private fun drawDisplay(data: Data): List<Searchable> = buildList {
+ addSearchString("§e§lPest Profit Tracker")
val profit = tracker.drawItems(data, { true }, this)
val pestsKilled = data.totalPestsKills
@@ -126,7 +128,7 @@ object PestProfitTracker {
Renderable.hoverTips(
"§7Pests killed: §e${pestsKilled.addSeparators()}",
listOf("§7You killed pests §e${pestsKilled.addSeparators()} §7times."),
- ),
+ ).toSearchable(),
)
add(tracker.addTotalProfit(profit, data.totalPestsKills, "kill"))
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt
index 697947e3f..eb15f6165 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt
@@ -27,6 +27,7 @@ import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.RenderUtils.highlight
import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables
import at.hannibal2.skyhanni.utils.renderables.Renderable
+import at.hannibal2.skyhanni.utils.renderables.buildSearchableTable
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@SkyHanniModule
@@ -82,7 +83,7 @@ object SackDisplay {
val sortedPairs = sort(sackItems)
val amountShowing = if (config.itemToShow > sortedPairs.size) sortedPairs.size else config.itemToShow
list.addString("§7Items in Sacks: §o(Rendering $amountShowing of ${sortedPairs.size} items)")
- val table = mutableListOf<List<Renderable>>()
+ va