From dea7909e4c49d38b3c8a7db995d2487534d32690 Mon Sep 17 00:00:00 2001 From: amyavi <144570677+amyavi@users.noreply.github.com> Date: Wed, 22 Jan 2025 09:12:31 -0300 Subject: [PATCH] fix: correctly style message component --- .../CustomChatComponentRenderer.java | 32 ++++++------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/src/main/java/land/chipmunk/chipmunkmod/modules/custom_chat/CustomChatComponentRenderer.java b/src/main/java/land/chipmunk/chipmunkmod/modules/custom_chat/CustomChatComponentRenderer.java index 219d65c..69b19d4 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/modules/custom_chat/CustomChatComponentRenderer.java +++ b/src/main/java/land/chipmunk/chipmunkmod/modules/custom_chat/CustomChatComponentRenderer.java @@ -6,26 +6,11 @@ import net.kyori.adventure.text.SelectorComponent; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; -import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.renderer.TranslatableComponentRenderer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.EnumSet; -import java.util.Set; // We don't do any translatable rendering here, but extending from that makes it easier to work with. public final class CustomChatComponentRenderer extends TranslatableComponentRenderer { - // Can't use this from super :( - private static final Set MERGES; - - static { - final Set merges = EnumSet.allOf(Style.Merge.class); - merges.remove(Style.Merge.EVENTS); - MERGES = Collections.unmodifiableSet(merges); - } - @Override protected @NotNull Component renderSelector(final @NotNull SelectorComponent component, final @NotNull CustomChatContext context) { @@ -45,7 +30,7 @@ public final class CustomChatComponentRenderer extends TranslatableComponentRend final @NotNull CustomChatContext context) { final String content = component.content(); if (content.equals("MESSAGE")) { - return this.mergeStyle(component, context.message(), context); + return this.mergeMessage(component, context.message(), context); } final String arg = context.args().get(component.content()); @@ -70,14 +55,17 @@ public final class CustomChatComponentRenderer extends TranslatableComponentRend builder.clickEvent(this.mergeClickEvent(component.clickEvent(), context)); } - // super#mergeStyle requires a ComponentBuilder on mergeStyle, this does not - private Component mergeStyle(final Component root, final Component that, final CustomChatContext context) { - final Component result = that.mergeStyle(root, MERGES) - .clickEvent(mergeClickEvent(root.clickEvent(), context)); + private Component mergeMessage(final Component root, final Component msg, final CustomChatContext context) { + Component result = msg.applyFallbackStyle(root.style()); // applyFallbackStyle will apply everything that isn't content - final @Nullable HoverEvent hoverEvent = root.hoverEvent(); + final ClickEvent clickEvent = result.clickEvent(); + if (clickEvent != null) { + result = result.clickEvent(mergeClickEvent(clickEvent, context)); + } + + final HoverEvent hoverEvent = result.hoverEvent(); if (hoverEvent != null) { - return result.hoverEvent(hoverEvent.withRenderedValue(this, context)); + result = result.hoverEvent(hoverEvent.withRenderedValue(this, context)); } return result;