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