From 8ea020a1a1857bbd9ac46b23d21f3e988843588a Mon Sep 17 00:00:00 2001 From: zml Date: Sun, 6 Nov 2022 22:21:23 -0800 Subject: [PATCH] fix(text-minimessage): Don't strip style of text components in gradients Fixes GH-790 --- .../tag/standard/AbstractColorChangingTag.java | 2 +- .../tag/standard/GradientTagTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/text-minimessage/src/main/java/net/kyori/adventure/text/minimessage/tag/standard/AbstractColorChangingTag.java b/text-minimessage/src/main/java/net/kyori/adventure/text/minimessage/tag/standard/AbstractColorChangingTag.java index 2d2b8debf..c761b9dd1 100644 --- a/text-minimessage/src/main/java/net/kyori/adventure/text/minimessage/tag/standard/AbstractColorChangingTag.java +++ b/text-minimessage/src/main/java/net/kyori/adventure/text/minimessage/tag/standard/AbstractColorChangingTag.java @@ -118,7 +118,7 @@ public final Component apply(final @NotNull Component current, final int depth) final int[] holder = new int[1]; for (final PrimitiveIterator.OfInt it = content.codePoints().iterator(); it.hasNext();) { holder[0] = it.nextInt(); - final Component comp = Component.text(new String(holder, 0, 1), this.color()); + final Component comp = Component.text(new String(holder, 0, 1), current.style().color(this.color())); this.advanceColor(); parent.append(comp); } diff --git a/text-minimessage/src/test/java/net/kyori/adventure/text/minimessage/tag/standard/GradientTagTest.java b/text-minimessage/src/test/java/net/kyori/adventure/text/minimessage/tag/standard/GradientTagTest.java index d60562009..36fed421a 100644 --- a/text-minimessage/src/test/java/net/kyori/adventure/text/minimessage/tag/standard/GradientTagTest.java +++ b/text-minimessage/src/test/java/net/kyori/adventure/text/minimessage/tag/standard/GradientTagTest.java @@ -25,7 +25,9 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.AbstractTest; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.junit.jupiter.api.Test; import static net.kyori.adventure.text.Component.empty; @@ -524,4 +526,20 @@ void testNestedGradientsReallyDontOverrideColors() { this.assertParsedEquals(expected, input); } + + // https://github.com/KyoriPowered/adventure/issues/790 + @Test + void testDecorationsPreserved() { + final Component placeholder = Component.text("b", style(TextDecoration.ITALIC.withState(true))); + final String input = "acd!"; + final Component expected = Component.textOfChildren( + text("a", WHITE), + text("b", color(0xcccccc), TextDecoration.ITALIC), + text("c", color(0x999999)), + text("d", color(0x666666), BOLD), + text("!", color(0x333333)) + ); + + this.assertParsedEquals(expected, input, Placeholder.component("placeholder", placeholder)); + } }