aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-03-16 09:59:05 +0100
committerGitHub <noreply@github.com>2024-03-16 09:59:05 +0100
commitbb9cef4d5b035a6722890018a27bb2502afa40bc (patch)
tree7d16956fa980c1c4520501abfeae92f840216d5c /src/main/java/at/hannibal2/skyhanni
parentfe51024f9a230f6408e69bd73293c71412bf9c0e (diff)
downloadskyhanni-bb9cef4d5b035a6722890018a27bb2502afa40bc.tar.gz
skyhanni-bb9cef4d5b035a6722890018a27bb2502afa40bc.tar.bz2
skyhanni-bb9cef4d5b035a6722890018a27bb2502afa40bc.zip
Backend: Chat History Search (#1187)
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/config/commands/Commands.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt20
2 files changed, 19 insertions, 3 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt
index d01a4a8c3..3b1c02bb0 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt
@@ -391,7 +391,7 @@ object Commands {
registerCommand("shtestwaypoint", "Set a waypoint on that location") { SkyHanniDebugsAndTests.waypoint(it) }
registerCommand("shtesttablist", "Set your clipboard as a fake tab list.") { TabListData.toggleDebugCommand() }
registerCommand("shreloadlocalrepo", "Reloading the local repo data") { SkyHanniMod.repo.reloadLocalRepo() }
- registerCommand("shchathistory", "Show the unfiltered chat history") { ChatManager.openChatFilterGUI() }
+ registerCommand("shchathistory", "Show the unfiltered chat history") { ChatManager.openChatFilterGUI(it) }
registerCommand(
"shstoplisteners",
"Unregistering all loaded forge event listeners"
diff --git a/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt b/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
index 915acf214..8573a629f 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
@@ -5,12 +5,14 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.MessageSendToServerEvent
import at.hannibal2.skyhanni.events.PacketEvent
import at.hannibal2.skyhanni.features.chat.ChatFilterGui
+import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.IdentityCharacteristics
import at.hannibal2.skyhanni.utils.LorenzLogger
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.ReflectionUtils.getClassInstance
import at.hannibal2.skyhanni.utils.ReflectionUtils.getModContainer
import at.hannibal2.skyhanni.utils.ReflectionUtils.makeAccessible
+import at.hannibal2.skyhanni.utils.StringUtils.removeColor
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.ChatLine
import net.minecraft.client.gui.GuiNewChat
@@ -40,6 +42,10 @@ object ChatManager {
private fun getRecentMessageHistory(): List<MessageFilteringResult> = messageHistory.toList().map { it.second }
+ private fun getRecentMessageHistoryWithSearch(searchTerm: String): List<MessageFilteringResult> =
+ messageHistory.toList().map { it.second }
+ .filter { it.message.formattedText.removeColor().contains(searchTerm, ignoreCase = true) }
+
enum class ActionKind(format: Any) {
BLOCKED(EnumChatFormatting.RED.toString() + EnumChatFormatting.BOLD),
RETRACTED(EnumChatFormatting.DARK_PURPLE.toString() + EnumChatFormatting.BOLD),
@@ -182,8 +188,18 @@ object ChatManager {
return false
}
- fun openChatFilterGUI() {
- SkyHanniMod.screenToOpen = ChatFilterGui(getRecentMessageHistory())
+ fun openChatFilterGUI(args: Array<String>) {
+ SkyHanniMod.screenToOpen = if (args.isEmpty()) {
+ ChatFilterGui(getRecentMessageHistory())
+ } else {
+ val searchTerm = args.joinToString(" ")
+ val history = getRecentMessageHistoryWithSearch(searchTerm)
+ if (history.isEmpty()) {
+ ChatUtils.chat("§eNot found in chat history! ($searchTerm)")
+ return
+ }
+ ChatFilterGui(history)
+ }
}
private val chatLinesField by lazy {