aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-02-14 20:46:25 +0100
committerGitHub <noreply@github.com>2024-02-14 20:46:25 +0100
commiteb4b815095666bd9d13074a052c4329ba9ac7da7 (patch)
tree8171cb34e221c2deacc5549d55d6b28fa1ea3d5b /src/main/java/at/hannibal2/skyhanni/data
parent029514e0324d8ae72ad181c06bcf081c5c2a6304 (diff)
downloadskyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.tar.gz
skyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.tar.bz2
skyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.zip
Add mod identification for outgoing mod calls and show this data in /shchathistory. #987
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt b/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
index d631e8e26..7d0bb6728 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/ChatManager.kt
@@ -9,6 +9,8 @@ import at.hannibal2.skyhanni.features.chat.ChatFilterGui
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 net.minecraft.client.Minecraft
import net.minecraft.client.gui.ChatLine
@@ -65,6 +67,8 @@ object ChatManager {
var actionKind: ActionKind,
var actionReason: String?,
val modified: IChatComponent?,
+ val hoverInfo: List<String> = listOf(),
+ val hoverExtraInfo: List<String> = listOf(),
)
@SubscribeEvent(priority = EventPriority.LOW, receiveCanceled = true)
@@ -85,12 +89,28 @@ object ChatManager {
val message = packet.message
val component = ChatComponentText(message)
- messageHistory[IdentityCharacteristics(component)] =
- MessageFilteringResult(component, ActionKind.OUTGOING, null, null)
+ val originatingModCall = event.findOriginatingModCall()
+ val originatingModContainer = originatingModCall?.getClassInstance()?.getModContainer()
+ val hoverInfo = listOf(
+ "§7Message created by §a${originatingModCall?.toString() ?: "§cprobably minecraft"}",
+ "§7Mod id: §a${originatingModContainer?.modId}",
+ "§7Mod name: §a${originatingModContainer?.name}"
+ )
+ val stackTrace =
+ Thread.currentThread().stackTrace.map {
+ "§7 §2${it.className}§7.§a${it.methodName}§7" +
+ if (it.fileName == null) "" else "(§b${it.fileName}§7:§3${it.lineNumber}§7)"
+ }
+ val result = MessageFilteringResult(
+ component, ActionKind.OUTGOING, null, null,
+ hoverInfo = hoverInfo,
+ hoverExtraInfo = hoverInfo + listOf("") + stackTrace
+ )
+
+ messageHistory[IdentityCharacteristics(component)] = result
if (MessageSendToServerEvent(message).postAndCatch()) {
event.isCanceled = true
- messageHistory[IdentityCharacteristics(component)] =
- MessageFilteringResult(component, ActionKind.OUTGOING_BLOCKED, null, null)
+ messageHistory[IdentityCharacteristics(component)] = result.copy(actionKind = ActionKind.OUTGOING_BLOCKED)
}
}