From a4a5c445a9671e729dbbf5fcafcbecbc88ea727b Mon Sep 17 00:00:00 2001 From: Niklas Date: Fri, 16 Feb 2024 18:04:32 +0100 Subject: [PATCH] stop chat from being cleared when the client enters a configuration phase --- gradle.properties | 1 + .../buildbugs/BuildBugsClientEntrypoint.kt | 2 ++ .../derniklaas/buildbugs/mixin/ChatMixin.kt | 12 ++++++++++ .../mixin/ClearChatOnDisconnectMixin.kt | 23 +++++++++++++++++++ src/main/resources/fabric.mod.json | 3 ++- 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/de/derniklaas/buildbugs/mixin/ClearChatOnDisconnectMixin.kt diff --git a/gradle.properties b/gradle.properties index f66d09e..53b7f4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,3 +12,4 @@ noxesium_version=1.1.1 adventure_version=5.10.0 org.gradle.jvmargs=-Xmx4000m +mod_version=1.8.0 \ No newline at end of file diff --git a/src/main/kotlin/de/derniklaas/buildbugs/BuildBugsClientEntrypoint.kt b/src/main/kotlin/de/derniklaas/buildbugs/BuildBugsClientEntrypoint.kt index e697ae6..4b471ae 100644 --- a/src/main/kotlin/de/derniklaas/buildbugs/BuildBugsClientEntrypoint.kt +++ b/src/main/kotlin/de/derniklaas/buildbugs/BuildBugsClientEntrypoint.kt @@ -16,6 +16,8 @@ class BuildBugsClientEntrypoint : ClientModInitializer { private const val MOD_ID = "build-bugs" val config = BuildBugsConfig.fromFile() val version: Version = FabricLoader.getInstance().getModContainer(MOD_ID).get().metadata.version + // id taken from https://github.com/AsoDesu/IslandUtils/blob/main/src/main/resources/fabric.mod.json + val hasIslandUtils = FabricLoader.getInstance().isModLoaded("islandutils") } override fun onInitializeClient() { diff --git a/src/main/kotlin/de/derniklaas/buildbugs/mixin/ChatMixin.kt b/src/main/kotlin/de/derniklaas/buildbugs/mixin/ChatMixin.kt index 3b29baa..29eaf80 100644 --- a/src/main/kotlin/de/derniklaas/buildbugs/mixin/ChatMixin.kt +++ b/src/main/kotlin/de/derniklaas/buildbugs/mixin/ChatMixin.kt @@ -1,6 +1,7 @@ package de.derniklaas.buildbugs.mixin import de.derniklaas.buildbugs.BugCreator +import de.derniklaas.buildbugs.BuildBugsClientEntrypoint import de.derniklaas.buildbugs.Constants import de.derniklaas.buildbugs.utils.Utils import net.minecraft.client.MinecraftClient @@ -34,4 +35,15 @@ abstract class ChatMixin { } } + + // Remove chat clear when switching servers when entering the reconfigure screen + @Inject(at = [At("HEAD")], method = ["Lnet/minecraft/class_338;method_1808(Z)V"], cancellable = true) + fun onClear(clearHistory: Boolean, info: CallbackInfo) { + // ignore if IslandUtils is present as it will also prevent the chat from being cleared + if (BuildBugsClientEntrypoint.hasIslandUtils) return + if (!Utils.isOnMCCServer()) return + if (!clearHistory) return + + info.cancel() + } } diff --git a/src/main/kotlin/de/derniklaas/buildbugs/mixin/ClearChatOnDisconnectMixin.kt b/src/main/kotlin/de/derniklaas/buildbugs/mixin/ClearChatOnDisconnectMixin.kt new file mode 100644 index 0000000..3a26ade --- /dev/null +++ b/src/main/kotlin/de/derniklaas/buildbugs/mixin/ClearChatOnDisconnectMixin.kt @@ -0,0 +1,23 @@ +package de.derniklaas.buildbugs.mixin + +import de.derniklaas.buildbugs.BuildBugsClientEntrypoint +import net.minecraft.client.MinecraftClient +import org.spongepowered.asm.mixin.Mixin +import org.spongepowered.asm.mixin.injection.At +import org.spongepowered.asm.mixin.injection.Inject +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo + +@Mixin(MinecraftClient::class) +abstract class ClearChatOnDisconnectMixin { + + // Clear the chat when disconnecting from a server + // This is done to prevent the chat from being filled with messages from the previous server + @Inject(at = [At("HEAD")], method = ["Lnet/minecraft/class_310;method_18096(Lnet/minecraft/class_437;)V"]) + fun onDisconnect(info: CallbackInfo) { + // ignore if IslandUtils is present as it will also clear the chat + if(BuildBugsClientEntrypoint.hasIslandUtils) return + // Clear the chat when disconnecting from a server + MinecraftClient.getInstance().inGameHud.clear() + } + +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 34b4e19..91f8370 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -33,6 +33,7 @@ "minecraft": "~${minecraft_version}", "java": ">=17", "fabric-language-kotlin": ">=${fabric_kotlin_version}", - "noxesium": ">=1.1.1" + "noxesium": ">=${noxesium_version}", + "adventure-platform-fabric": ">=${adventure_version}" } }