diff --git a/pom.xml b/pom.xml index b197765..2658cab 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ sonatype-repo - https://oss.sonatype.org/content/repositories/snapshots/ + https://oss.sonatype.org/content/repositories/releases/ @@ -29,7 +29,7 @@ net.kyori adventure-api - 4.0.0-SNAPSHOT + 4.0.0 provided diff --git a/src/main/java/de/themoep/minedown/adventure/MineDownParser.java b/src/main/java/de/themoep/minedown/adventure/MineDownParser.java index 35e7195..06c682e 100644 --- a/src/main/java/de/themoep/minedown/adventure/MineDownParser.java +++ b/src/main/java/de/themoep/minedown/adventure/MineDownParser.java @@ -24,8 +24,8 @@ import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.api.BinaryTagHolder; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentBuilder; -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.NamedTextColor; @@ -271,14 +271,14 @@ public ComponentBuilder parse(String message) throws IllegalArgumentException { } appendValue(); if (builder == null) { - builder = TextComponent.builder(); + builder = Component.text(); } return builder; } private void append(ComponentBuilder builder) { if (this.builder == null) { - this.builder = TextComponent.builder().append(builder); + this.builder = Component.text().append(builder); } else { this.builder.append(builder); } @@ -290,11 +290,13 @@ private void appendValue() { private void appendValue(Style style) { if (builder == null) { - builder = TextComponent.builder(value.toString()); + builder = Component.text().append(Component.text(value.toString())); } else { - builder.append(value.toString()).style(style); + builder.append(Component.text(value.toString())).style(style); + } + if (font != null) { + builder.font(Key.key(font)); } - builder.font(Key.key(font)); builder.insertion(insertion); builder.color(color); Util.applyFormat(builder, format); @@ -303,9 +305,9 @@ private void appendValue(Style style) { if (!v.startsWith("http://") && !v.startsWith("https://")) { v = "http://" + v; } - builder.clickEvent(ClickEvent.of(ClickEvent.Action.OPEN_URL, v)); + builder.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, v)); if (urlHoverText() != null && !urlHoverText().isEmpty()) { - builder.hoverEvent(HoverEvent.of(HoverEvent.Action.SHOW_TEXT, + builder.hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, new MineDown(urlHoverText()).replace("url", value.toString()).toComponent() )); } @@ -404,7 +406,7 @@ public ComponentBuilder parseEvent(String text, String definitions) { if (!definition.startsWith("http://") && !definition.startsWith("https://")) { definition = "http://" + definition; } - clickEvent = ClickEvent.of(ClickEvent.Action.OPEN_URL, definition); + clickEvent = ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, definition); continue; } @@ -429,13 +431,13 @@ public ComponentBuilder parseEvent(String text, String definitions) { if (autoAddUrlPrefix() && clickAction == ClickEvent.Action.OPEN_URL && !valueStr.startsWith("http://") && !valueStr.startsWith("https://")) { valueStr = "http://" + valueStr; } - clickEvent = ClickEvent.of(clickAction, valueStr); + clickEvent = ClickEvent.clickEvent(clickAction, valueStr); } else if (hoverAction == null) { hoverAction = HoverEvent.Action.SHOW_TEXT; } if (hoverAction != null) { if (hoverAction == HoverEvent.Action.SHOW_TEXT) { - hoverEvent = HoverEvent.of(hoverAction, copy(false).urlDetection(false).parse(Util.wrap(valueStr, hoverTextWidth())).build()); + hoverEvent = HoverEvent.hoverEvent(hoverAction, copy(false).urlDetection(false).parse(Util.wrap(valueStr, hoverTextWidth())).build()); } else if (hoverAction == HoverEvent.Action.SHOW_ENTITY) { String[] valueParts = valueStr.split(":", 2); try { @@ -444,7 +446,7 @@ public ComponentBuilder parseEvent(String text, String definitions) { additionalParts[0] = "minecraft:" + additionalParts[0]; } hoverEvent = HoverEvent.showEntity(HoverEvent.ShowEntity.of( - Key.of(additionalParts[0]), UUID.fromString(valueParts[0]), + Key.key(additionalParts[0]), UUID.fromString(valueParts[0]), additionalParts.length > 1 && additionalParts[1] != null ? copy(false).urlDetection(false).parse(additionalParts[1]).build() : null )); @@ -481,7 +483,7 @@ public ComponentBuilder parseEvent(String text, String definitions) { try { hoverEvent = HoverEvent.showItem(HoverEvent.ShowItem.of( - Key.of(id), count, tag + Key.key(id), count, tag )); } catch (Exception e) { if (!lenient()) { @@ -493,9 +495,11 @@ public ComponentBuilder parseEvent(String text, String definitions) { } if (clickEvent != null && hoverEvent == null) { - hoverEvent = HoverEvent.of(HoverEvent.Action.SHOW_TEXT, - TextComponent.builder(clickEvent.action().toString().toLowerCase(Locale.ROOT).replace('_', ' ')).color(NamedTextColor.BLUE) - .append(" " + clickEvent.action()).color(NamedTextColor.WHITE) + hoverEvent = HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, + Component.text() + .append(Component.text(clickEvent.action().toString().toLowerCase(Locale.ROOT).replace('_', ' '))) + .color(NamedTextColor.BLUE) + .append(Component.text(" " + clickEvent.action())).color(NamedTextColor.WHITE) .build()); } diff --git a/src/main/java/de/themoep/minedown/adventure/MineDownStringifier.java b/src/main/java/de/themoep/minedown/adventure/MineDownStringifier.java index 9d5a7c2..250e0e2 100644 --- a/src/main/java/de/themoep/minedown/adventure/MineDownStringifier.java +++ b/src/main/java/de/themoep/minedown/adventure/MineDownStringifier.java @@ -31,6 +31,7 @@ import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.format.TextFormat; import java.util.ArrayDeque; import java.util.ArrayList; @@ -237,16 +238,22 @@ private void appendColor(StringBuilder sb, TextColor color) { if (this.color != color) { this.color = color; if (useLegacyColors()) { - try { - char colorChar = Util.getLegacyFormatChar(color); - sb.append(colorChar()).append(colorChar); - } catch (IllegalArgumentException e) { - System.out.println(e.getMessage()); + if (color == null) { + sb.append(colorChar()).append(Util.TextControl.RESET.getChar()); + } else { + try { + char colorChar = Util.getLegacyFormatChar(color); + sb.append(colorChar()).append(colorChar); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } } } else if (color instanceof NamedTextColor) { sb.append(colorChar()).append(((NamedTextColor) color).toString()).append(colorChar()); - } else { + } else if (color != null) { sb.append(colorChar()).append(color.asHexString()).append(colorChar()); + } else { + sb.append(colorChar()).append(Util.TextControl.RESET.name()).append(colorChar()); } } } diff --git a/src/main/java/de/themoep/minedown/adventure/Replacer.java b/src/main/java/de/themoep/minedown/adventure/Replacer.java index dfc57cf..9c310e2 100644 --- a/src/main/java/de/themoep/minedown/adventure/Replacer.java +++ b/src/main/java/de/themoep/minedown/adventure/Replacer.java @@ -194,7 +194,7 @@ public List replaceIn(List components) { * @return A copy of the array with the placeholders replaced */ public Component replaceIn(Component component) { - TextComponent.Builder builder = TextComponent.builder(); + TextComponent.Builder builder = Component.text(); if (component instanceof KeybindComponent) { component = ((KeybindComponent) component).keybind(replaceIn(((KeybindComponent) component).keybind())); @@ -207,7 +207,7 @@ public Component replaceIn(Component component) { component = ((TranslatableComponent) component).args(replaceIn(((TranslatableComponent) component).args())); } if (component.clickEvent() != null) { - component = component.clickEvent(ClickEvent.of( + component = component.clickEvent(ClickEvent.clickEvent( component.clickEvent().action(), replaceIn(component.clickEvent().value()) )); @@ -221,7 +221,7 @@ public Component replaceIn(Component component) { HoverEvent.ShowEntity showEntity = (HoverEvent.ShowEntity) component.hoverEvent().value(); component = component.hoverEvent(HoverEvent.showEntity( HoverEvent.ShowEntity.of( - Key.of(replaceIn(showEntity.type().asString())), + Key.key(replaceIn(showEntity.type().asString())), showEntity.id(), replaceIn(showEntity.name()) ) @@ -230,7 +230,7 @@ public Component replaceIn(Component component) { HoverEvent.ShowItem showItem = (HoverEvent.ShowItem) component.hoverEvent().value(); component = component.hoverEvent(HoverEvent.showItem( HoverEvent.ShowItem.of( - Key.of(replaceIn(showItem.item().asString())), + Key.key(replaceIn(showItem.item().asString())), showItem.count() ) )); @@ -256,7 +256,7 @@ public Component replaceIn(Component component) { int index = text.indexOf(placeHolder); if (index > -1) { do { - TextComponent.Builder startBuilder = TextComponent.builder().mergeStyle(textComponent); + TextComponent.Builder startBuilder = Component.text().mergeStyle(textComponent); if (index > 0) { startBuilder.content(textComponent.content().substring(0, index)); } diff --git a/src/main/java/de/themoep/minedown/adventure/Util.java b/src/main/java/de/themoep/minedown/adventure/Util.java index e2d7892..503010b 100644 --- a/src/main/java/de/themoep/minedown/adventure/Util.java +++ b/src/main/java/de/themoep/minedown/adventure/Util.java @@ -24,7 +24,6 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentBuilder; -import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; @@ -214,9 +213,9 @@ public static String wrap(String string, int lineLength) { * @return The modified components (same as input). */ public static Component rgbColorsToLegacy(Component components) { - return TextComponent.builder().append(components).mapChildrenDeep(buildableComponent + return Component.text().append(components).mapChildrenDeep(buildableComponent -> buildableComponent.color() != null - ? TextComponent.builder().append(buildableComponent.color(getClosestLegacy(new Color(buildableComponent.color().value())))).build() + ? Component.text().append(buildableComponent.color(getClosestLegacy(new Color(buildableComponent.color().value())))).build() : buildableComponent ).build(); } diff --git a/src/test/java/de/themoep/minedown/adventure/tests/StringifyTest.java b/src/test/java/de/themoep/minedown/adventure/tests/StringifyTest.java index 15fb6c8..c8f96c8 100644 --- a/src/test/java/de/themoep/minedown/adventure/tests/StringifyTest.java +++ b/src/test/java/de/themoep/minedown/adventure/tests/StringifyTest.java @@ -24,11 +24,9 @@ import de.themoep.minedown.adventure.MineDown; import net.kyori.adventure.text.Component; -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.NamedTextColor; -import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import org.junit.jupiter.api.Assertions; @@ -47,23 +45,23 @@ private void stringify(Component component) { @Test public void testStringify() { Assertions.assertAll( - () -> stringify(TextComponent.builder() - .append("Test ") - .append("link").decoration(TextDecoration.UNDERLINED, true).color(NamedTextColor.BLUE) - .clickEvent(ClickEvent.of(ClickEvent.Action.OPEN_URL, "https://example.com")) - .hoverEvent(HoverEvent.of(HoverEvent.Action.SHOW_TEXT, TextComponent.builder("Hover text").color(NamedTextColor.BLUE).build())) - .append(". Test Text.").style(Style.empty()) + () -> stringify(Component.text() + .append(Component.text("Test ")) + .append(Component.text("link", NamedTextColor.BLUE, TextDecoration.UNDERLINED)) + .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, "https://example.com")) + .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Hover text", NamedTextColor.BLUE))) + .append(Component.text(". Test Text.")) .build()), - () -> stringify(TextComponent.builder() - .append("Test ").decoration(TextDecoration.UNDERLINED, true).color(NamedTextColor.BLUE) - .append("link") - .clickEvent(ClickEvent.of(ClickEvent.Action.OPEN_URL, "https://example.com")) - .hoverEvent(HoverEvent.of(HoverEvent.Action.SHOW_TEXT, TextComponent.builder("Hover text").color(NamedTextColor.BLUE).build())) - .append(". Test Text.").style(Style.empty()) + () -> stringify(Component.text() + .append(Component.text("Test ", NamedTextColor.BLUE, TextDecoration.UNDERLINED)) + .append(Component.text("link") + .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, "https://example.com")) + .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Hover text", NamedTextColor.BLUE))) + ) + .append(Component.text(". Test Text.")) .build()), - () -> stringify(TextComponent.builder("Test insertion") - .insertion("Insert text") - .build()) + () -> stringify(Component.text("Test insertion") + .insertion("Insert text")) ); } }