diff options
author | Linnea Gräf <nea@nea.moe> | 2024-02-14 20:46:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-14 20:46:25 +0100 |
commit | eb4b815095666bd9d13074a052c4329ba9ac7da7 (patch) | |
tree | 8171cb34e221c2deacc5549d55d6b28fa1ea3d5b /src/main/java/at/hannibal2/skyhanni/data | |
parent | 029514e0324d8ae72ad181c06bcf081c5c2a6304 (diff) | |
download | skyhanni-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.kt | 28 |
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) } } |