diff --git a/src/api/java/baritone/api/command/helpers/Paginator.java b/src/api/java/baritone/api/command/helpers/Paginator.java index 4d4e3299c..77628a796 100644 --- a/src/api/java/baritone/api/command/helpers/Paginator.java +++ b/src/api/java/baritone/api/command/helpers/Paginator.java @@ -92,10 +92,7 @@ public class Paginator implements Helper { MutableComponent nextPageComponent = Component.literal(">>"); if (hasNextPage) { nextPageComponent.setStyle(nextPageComponent.getStyle() - .withClickEvent(new ClickEvent( - ClickEvent.Action.RUN_COMMAND, - String.format("%s %d", commandPrefix, page + 1) - )) + .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, String.format("%s %d", commandPrefix, page + 1))) .withHoverEvent(new HoverEvent( HoverEvent.Action.SHOW_TEXT, Component.literal("Click to view next page") diff --git a/src/launch/java/baritone/launch/mixins/MixinScreen.java b/src/launch/java/baritone/launch/mixins/MixinScreen.java index 0d7b3ee83..ed896730f 100644 --- a/src/launch/java/baritone/launch/mixins/MixinScreen.java +++ b/src/launch/java/baritone/launch/mixins/MixinScreen.java @@ -17,12 +17,20 @@ package baritone.launch.mixins; +import baritone.api.BaritoneAPI; +import baritone.api.IBaritone; +import baritone.api.event.events.ChatEvent; import baritone.utils.accessor.IGuiScreen; +import net.minecraft.network.chat.ClickEvent; +import net.minecraft.network.chat.Style; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; import java.net.URI; import net.minecraft.client.gui.screens.Screen; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Screen.class) public abstract class MixinScreen implements IGuiScreen { @@ -30,4 +38,21 @@ public abstract class MixinScreen implements IGuiScreen { @Override @Invoker("openLink") public abstract void openLinkInvoker(URI url); + + + //TODO: switch to enum extention with mixin 9.0 or whenever Mumfrey gets around to it + @Inject(at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V", remap = false, ordinal = 1), method = "handleComponentClicked", cancellable = true) + public void handleCustomClickEvent(Style style, CallbackInfoReturnable cir) { + System.out.println("handleCustomClickEvent"); + ClickEvent clickEvent = style.getClickEvent(); + if (clickEvent == null) { + return; + } + IBaritone baritone = BaritoneAPI.getProvider().getPrimaryBaritone(); + if (baritone != null) { + baritone.getGameEventHandler().onSendChatMessage(new ChatEvent(clickEvent.getValue())); + } + cir.setReturnValue(true); + cir.cancel(); + } }