From 79261e5411561f984bf30d76ecac80322da4b85d Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sat, 28 Feb 2026 11:25:39 +0100 Subject: [PATCH 1/2] Add support for deleting messages from ChatTabs and trigger associated events --- .../chatplus/mixin/MixinChatComponent.java | 15 +++++++++++++ .../chatplus/features/chattabs/ChatTab.kt | 22 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/common/src/main/java/com/ebicep/chatplus/mixin/MixinChatComponent.java b/common/src/main/java/com/ebicep/chatplus/mixin/MixinChatComponent.java index c58b2812..a32af8ad 100644 --- a/common/src/main/java/com/ebicep/chatplus/mixin/MixinChatComponent.java +++ b/common/src/main/java/com/ebicep/chatplus/mixin/MixinChatComponent.java @@ -19,6 +19,8 @@ import net.minecraft.network.chat.MessageSignature; import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.ProfilerFiller; +import org.jspecify.annotations.Nullable; +import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -36,6 +38,10 @@ public class MixinChatComponent { @Shadow Minecraft minecraft; + @Shadow + @Final + private static Logger LOGGER; + @Inject(method = "render(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/gui/Font;IIIZZ)V", at = @At("HEAD"), cancellable = true) public void render(GuiGraphics guiGraphics, Font font, int i, int j, int k, boolean bl, boolean bl2, CallbackInfo ci) { if (!ChatPlus.INSTANCE.isEnabled() || (Config.INSTANCE.getValues().getShowVanillaWhenUnfocused() && !ChatManager.INSTANCE.isChatFocused())) { @@ -110,5 +116,14 @@ public void addMessage( EventBus.INSTANCE.post(SkipNewMessageEvent.class, messageEvent); } } + @Inject(method = "deleteMessage(Lnet/minecraft/network/chat/MessageSignature;)V", at = @At("RETURN")) + public void deleteMessage(MessageSignature messageSignature, CallbackInfo ci) { + if (!ChatPlus.INSTANCE.isEnabled()) { + return; + } + for (ChatTab chatTab : ChatManager.INSTANCE.getGlobalSortedTabs()) { + chatTab.deleteMessage(messageSignature); + } + } } diff --git a/common/src/main/kotlin/com/ebicep/chatplus/features/chattabs/ChatTab.kt b/common/src/main/kotlin/com/ebicep/chatplus/features/chattabs/ChatTab.kt index e46de313..03a19259 100644 --- a/common/src/main/kotlin/com/ebicep/chatplus/features/chattabs/ChatTab.kt +++ b/common/src/main/kotlin/com/ebicep/chatplus/features/chattabs/ChatTab.kt @@ -397,6 +397,28 @@ class ChatTab { return added } + fun deleteMessage(signature: MessageSignature) { + val messageIndex = messages.indexOfFirst { it.guiMessage.signature == signature } + if (messageIndex == -1) return + + val message = messages.removeAt(messageIndex) + EventBus.post(ChatTabRemoveMessageEvent(chatWindow, this, message)) + + displayedMessages.removeIf { + val match = it.linkedMessage === message + if (match) { + EventBus.post(ChatTabRemoveDisplayMessageEvent(chatWindow, this, it)) + } + match + } + + unfilteredDisplayedMessages.removeIf { + it.linkedMessage === message + } + + refreshDisplayMessages() + } + fun clear() { messages = ArrayList() displayedMessages = ArrayList() From c499a5baa5031a2881e0ed2472b7af4f5ac3970d Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sat, 28 Feb 2026 11:32:20 +0100 Subject: [PATCH 2/2] bump: update mod_version to 2.7.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d7f61524..56721231 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ supported_minecraft_version=1.21.11 enabled_platforms=fabric,neoforge archives_base_name=chatplus mod_id=chatplus -mod_version=2.7.1 +mod_version=2.7.2 mod_name=ChatPlus mod_description=Minecraft chat improved. mod_authors=ebicep