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)); + } }