diff options
author | Linnea Gräf <nea@nea.moe> | 2025-01-25 16:15:13 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-01-25 16:15:13 +0100 |
commit | ef50dc42d7b2ca46bac73723728188761acfd8dc (patch) | |
tree | 57a11c9cb23782b52cb8fe2298ba0f3a45bb4832 /src | |
parent | 1062594643e4bb955bb6bf4efe8983108bdbd1bb (diff) | |
download | ultra-notifier-ef50dc42d7b2ca46bac73723728188761acfd8dc.tar.gz ultra-notifier-ef50dc42d7b2ca46bac73723728188761acfd8dc.tar.bz2 ultra-notifier-ef50dc42d7b2ca46bac73723728188761acfd8dc.zip |
Build on 1.8.9
Diffstat (limited to 'src')
4 files changed, 61 insertions, 4 deletions
diff --git a/src/main/java/moe/nea/ultranotifier/mixin/ChatHudCategoryTracker.java b/src/main/java/moe/nea/ultranotifier/mixin/ChatHudCategoryTracker.java index ac187d9..6205506 100644 --- a/src/main/java/moe/nea/ultranotifier/mixin/ChatHudCategoryTracker.java +++ b/src/main/java/moe/nea/ultranotifier/mixin/ChatHudCategoryTracker.java @@ -22,7 +22,7 @@ public class ChatHudCategoryTracker<T> implements HasCategorizedChatLine { @Unique CategorizedChatLine categorizedSelf; - @Inject(method = "<init>", at = @At("TAIL")) + @Inject(method = "<init>", at = @At("RETURN")) private void onInit( int creationTick, //#if MC>1.20 diff --git a/src/main/java/moe/nea/ultranotifier/mixin/FilterVisibleMessagePatch.java b/src/main/java/moe/nea/ultranotifier/mixin/FilterVisibleMessagePatch.java index 13ef7cc..22e06b5 100644 --- a/src/main/java/moe/nea/ultranotifier/mixin/FilterVisibleMessagePatch.java +++ b/src/main/java/moe/nea/ultranotifier/mixin/FilterVisibleMessagePatch.java @@ -4,13 +4,21 @@ import moe.nea.ultranotifier.event.UltraNotifierEvents; import moe.nea.ultranotifier.event.VisibleChatMessageAddedEvent; import net.minecraft.client.gui.hud.ChatHud; import net.minecraft.client.gui.hud.ChatHudLine; +import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import java.util.Collections; +import java.util.List; @Mixin(ChatHud.class) public class FilterVisibleMessagePatch { +//#if MC > 1.18 @Inject( method = "addVisibleMessage", at = @At("HEAD"), @@ -21,4 +29,44 @@ public class FilterVisibleMessagePatch { ci.cancel(); } } +//#else +//$$ @Unique +//$$ ChatHudLine lastAddedChatLine; +//$$ +//$$ @Inject(method = "reset()V", +//$$ at = @At(value = "INVOKE", +//$$ target = "Lnet/minecraft/client/gui/hud/ChatHud;addMessage(Lnet/minecraft/text/Text;IIZ)V"), +//$$ locals = LocalCapture.CAPTURE_FAILHARD) +//$$ private void saveMessageAboutToBeRefreshed(CallbackInfo ci, int i, ChatHudLine chatLine) { +//$$ lastAddedChatLine = chatLine; +//$$ } +//$$ +//$$ @Inject(method = "addMessage(Lnet/minecraft/text/Text;IIZ)V", at = @At(value = "INVOKE", +//#if MC > 1.16 +//$$ target = "Lnet/minecraft/client/util/ChatMessages;breakRenderedChatMessageLines(Lnet/minecraft/text/StringVisitable;ILnet/minecraft/client/font/TextRenderer;)Ljava/util/List;" +//#else +//$$ target = "Lnet/minecraft/client/gui/GuiUtilRenderComponents;splitText(Lnet/minecraft/util/text/ITextComponent;ILnet/minecraft/client/gui/FontRenderer;ZZ)Ljava/util/List;" +//#endif +//$$ )) +//$$ private void saveMessage(Text chatComponent, int chatLineId, int updateCounter, boolean displayOnly, CallbackInfo ci) { +//$$ if (lastAddedChatLine != null && lastAddedChatLine.getText() != chatComponent) { +//$$ throw new RuntimeException("Out of order message received"); +//$$ } +//$$ if (lastAddedChatLine == null) +//$$ lastAddedChatLine = new ChatHudLine(chatLineId, chatComponent, updateCounter); +//$$ } +//$$ +//$$ @ModifyVariable( +//$$ method = "addMessage(Lnet/minecraft/text/Text;IIZ)V", +//$$ at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;isChatFocused()Z") +//$$ ) +//$$ private List onAddVisibleMessage(List value) { +//$$ VisibleChatMessageAddedEvent event = new VisibleChatMessageAddedEvent(lastAddedChatLine); +//$$ lastAddedChatLine = null; +//$$ if (UltraNotifierEvents.post(event).isCancelled()) { +//$$ return Collections.emptyList(); +//$$ } +//$$ return value; +//$$ } +//#endif } diff --git a/src/main/kotlin/event/VisibleChatMessageAddedEvent.kt b/src/main/kotlin/event/VisibleChatMessageAddedEvent.kt index 5d37451..97d919b 100644 --- a/src/main/kotlin/event/VisibleChatMessageAddedEvent.kt +++ b/src/main/kotlin/event/VisibleChatMessageAddedEvent.kt @@ -1,8 +1,17 @@ package moe.nea.ultranotifier.event import net.minecraft.client.gui.hud.ChatHudLine +import net.minecraft.text.Text + +typealias ChattyHudLine = + ChatHudLine +//#if MC < 1.20 +//#if MC > 1.16 +//$$ <Text> +//#endif +//#endif data class VisibleChatMessageAddedEvent( - val chatLine: ChatHudLine, + val chatLine: ChattyHudLine, ) : UltraEvent() diff --git a/src/main/kotlin/util/minecrat/infer.kt b/src/main/kotlin/util/minecrat/infer.kt index 479b186..dc89392 100644 --- a/src/main/kotlin/util/minecrat/infer.kt +++ b/src/main/kotlin/util/minecrat/infer.kt @@ -3,8 +3,8 @@ package moe.nea.ultranotifier.util.minecrat import moe.nea.ultranotifier.datamodel.HasCategorizedChatLine +import moe.nea.ultranotifier.event.ChattyHudLine import net.minecraft.client.gui.hud.ChatHud -import net.minecraft.client.gui.hud.ChatHudLine import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -19,4 +19,4 @@ fun ChatHud.accessor(): AccessorChatHud { return this as AccessorChatHud } -val ChatHudLine.category get() = (this as HasCategorizedChatLine).categorizedChatLine_ultraNotifier +val ChattyHudLine.category get() = (this as HasCategorizedChatLine).categorizedChatLine_ultraNotifier |