From d37af6c6ccfa41c7034ce1227ea34f5430d1d259 Mon Sep 17 00:00:00 2001 From: My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> Date: Fri, 10 Sep 2021 01:06:05 -0400 Subject: totally didnt spend 3 hours on this simple thing lol --- .../mixins/transformers/gui/MixinGuiNewChat.java | 24 ++++++++++++++++++---- .../asm/transformers/SplashProgressTransformer.kt | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiNewChat.java b/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiNewChat.java index 2e0ddfaa..30f914b3 100644 --- a/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiNewChat.java +++ b/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiNewChat.java @@ -18,14 +18,17 @@ package skytils.skytilsmod.mixins.transformers.gui; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiNewChat; -import net.minecraft.client.gui.GuiUtilRenderComponents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.*; import net.minecraft.util.IChatComponent; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import skytils.skytilsmod.features.impl.handlers.ChatTabs; import java.util.Collections; @@ -34,6 +37,13 @@ import java.util.List; @Mixin(value = GuiNewChat.class, priority = 999) public abstract class MixinGuiNewChat extends Gui { + @Shadow @Final private Minecraft mc; + + @Shadow private int scrollPos; + + @Shadow + public abstract int getLineCount(); + @Redirect(method = "setChatLine", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiUtilRenderComponents;splitText(Lnet/minecraft/util/IChatComponent;ILnet/minecraft/client/gui/FontRenderer;ZZ)Ljava/util/List;")) private List filterDrawnTextComponents(IChatComponent p_178908_0_, int p_178908_1_, FontRenderer p_178908_2_, boolean p_178908_3_, boolean p_178908_4_) { return ChatTabs.INSTANCE.shouldAllow(p_178908_0_) ? GuiUtilRenderComponents.splitText(p_178908_0_, p_178908_1_, p_178908_2_, p_178908_3_, p_178908_4_) : Collections.emptyList(); @@ -43,4 +53,10 @@ public abstract class MixinGuiNewChat extends Gui { private String printFormattedText(IChatComponent iChatComponent) { return iChatComponent.getFormattedText(); } + + @Inject(method = "getChatComponent", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/GuiNewChat;scrollPos:I"), cancellable = true, locals = LocalCapture.CAPTURE_FAILSOFT) + private void stopOutsideWindow(int mouseX, int mouseY, CallbackInfoReturnable cir, ScaledResolution scaledresolution, int i, float f, int j, int k, int l) { + int line = k / mc.fontRendererObj.FONT_HEIGHT + scrollPos; + if (line >= getLineCount()) cir.setReturnValue(null); + } } diff --git a/src/main/kotlin/skytils/skytilsmod/asm/transformers/SplashProgressTransformer.kt b/src/main/kotlin/skytils/skytilsmod/asm/transformers/SplashProgressTransformer.kt index bfda8f2c..e6d04480 100644 --- a/src/main/kotlin/skytils/skytilsmod/asm/transformers/SplashProgressTransformer.kt +++ b/src/main/kotlin/skytils/skytilsmod/asm/transformers/SplashProgressTransformer.kt @@ -31,7 +31,7 @@ fun injectSplashProgressTransformer() = modify("net.minecraftforge.fml.client.Sp findMethod("start", "()V").apply { val v = localVariables.find { it.name == "forgeLoc" && it.desc == "Lnet/minecraft/util/ResourceLocation;" - } ?: return@modify + } ?: return@modify println("unable to find localvar") var index = -1 for (insn in instructions) { if (insn is MethodInsnNode) { -- cgit