diff --git a/paper-api/build.gradle.kts b/paper-api/build.gradle.kts index 1606e63a1492..5c8aed1b65f4 100644 --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts @@ -10,7 +10,7 @@ java { } val annotationsVersion = "26.0.2" -val adventureVersion = "4.25.0" +val adventureVersion = "5.0.0-SNAPSHOT" val bungeeCordChatVersion = "1.21-R0.2-deprecated+build.21" val slf4jVersion = "2.0.16" val log4jVersion = "2.24.1" diff --git a/paper-api/src/main/java/co/aikar/timings/TimingsReportListener.java b/paper-api/src/main/java/co/aikar/timings/TimingsReportListener.java index df066d6f8d55..eb63d2a5a832 100644 --- a/paper-api/src/main/java/co/aikar/timings/TimingsReportListener.java +++ b/paper-api/src/main/java/co/aikar/timings/TimingsReportListener.java @@ -60,11 +60,6 @@ public void done(@Nullable String url) { } } - @Override - public void sendMessage(final @NotNull net.kyori.adventure.identity.Identity source, final @NotNull net.kyori.adventure.text.Component message, final @NotNull net.kyori.adventure.audience.MessageType type) { - net.kyori.adventure.audience.ForwardingAudience.super.sendMessage(source, message, type); - } - @NotNull @Override public Iterable audiences() { diff --git a/paper-api/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java b/paper-api/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java index c56aa35dd1f1..89d928bd750a 100644 --- a/paper-api/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java +++ b/paper-api/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java @@ -27,12 +27,7 @@ import io.papermc.paper.util.TransformingRandomAccessList; import java.util.ArrayList; import java.util.List; -import java.util.Objects; -import java.util.stream.Stream; import net.kyori.adventure.text.Component; -import net.kyori.examination.Examinable; -import net.kyori.examination.ExaminableProperty; -import net.kyori.examination.string.StringExaminer; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -241,7 +236,7 @@ private static List fromStrings(final List suggestions) { /** * A rich tab completion, consisting of a string suggestion, and a nullable {@link Component} tooltip. */ - public interface Completion extends Examinable { + public interface Completion { /** * Get the suggestion string for this {@link Completion}. @@ -257,11 +252,6 @@ public interface Completion extends Examinable { */ @Nullable Component tooltip(); - @Override - default Stream examinableProperties() { - return Stream.of(ExaminableProperty.of("suggestion", this.suggestion()), ExaminableProperty.of("tooltip", this.tooltip())); - } - /** * Create a new {@link Completion} from a suggestion string. * @@ -287,47 +277,6 @@ static Completion completion(final String suggestion, final @Nullable Component } @ApiStatus.Internal - static final class CompletionImpl implements Completion { - - private final String suggestion; - private final @Nullable Component tooltip; - - CompletionImpl(final String suggestion, final @Nullable Component tooltip) { - this.suggestion = suggestion; - this.tooltip = tooltip; - } - - @Override - public String suggestion() { - return this.suggestion; - } - - @Override - public @Nullable Component tooltip() { - return this.tooltip; - } - - @Override - public boolean equals(final @Nullable Object o) { - if (this == o) { - return true; - } - if (o == null || this.getClass() != o.getClass()) { - return false; - } - final CompletionImpl that = (CompletionImpl) o; - return this.suggestion.equals(that.suggestion) - && Objects.equals(this.tooltip, that.tooltip); - } - - @Override - public int hashCode() { - return Objects.hash(this.suggestion, this.tooltip); - } - - @Override - public String toString() { - return StringExaminer.simpleEscaping().examine(this); - } + record CompletionImpl(String suggestion, @Nullable Component tooltip) implements Completion { } } diff --git a/paper-api/src/main/java/io/papermc/paper/text/PaperComponents.java b/paper-api/src/main/java/io/papermc/paper/text/PaperComponents.java index 934d1d3ca490..66f1d1cb7e40 100644 --- a/paper-api/src/main/java/io/papermc/paper/text/PaperComponents.java +++ b/paper-api/src/main/java/io/papermc/paper/text/PaperComponents.java @@ -6,7 +6,6 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -95,21 +94,6 @@ public static ComponentFlattener flattener() { return Bukkit.getUnsafe().componentFlattener(); } - /** - * Get a serializer for {@link Component}s that will convert components to - * a plain-text string. - * - *

Implementations may provide a serializer capable of processing any - * information that requires access to implementation details.

- * - * @return a serializer to plain text - * @deprecated will be removed in adventure 5.0.0, use {@link PlainTextComponentSerializer#plainText()} - */ - @Deprecated(forRemoval = true, since = "1.18.1") - public static PlainComponentSerializer plainSerializer() { - return Bukkit.getUnsafe().plainComponentSerializer(); - } - /** * Get a serializer for {@link Component}s that will convert components to * a plain-text string. diff --git a/paper-api/src/main/java/org/bukkit/UnsafeValues.java b/paper-api/src/main/java/org/bukkit/UnsafeValues.java index f342b8541ef4..02fe439769b6 100644 --- a/paper-api/src/main/java/org/bukkit/UnsafeValues.java +++ b/paper-api/src/main/java/org/bukkit/UnsafeValues.java @@ -37,7 +37,6 @@ public interface UnsafeValues { // Paper start net.kyori.adventure.text.flattener.ComponentFlattener componentFlattener(); - @Deprecated(forRemoval = true) net.kyori.adventure.text.serializer.plain.PlainComponentSerializer plainComponentSerializer(); @Deprecated(forRemoval = true) net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer plainTextSerializer(); @Deprecated(forRemoval = true) net.kyori.adventure.text.serializer.gson.GsonComponentSerializer gsonComponentSerializer(); @Deprecated(forRemoval = true) net.kyori.adventure.text.serializer.gson.GsonComponentSerializer colorDownsamplingGsonComponentSerializer(); diff --git a/paper-api/src/main/java/org/bukkit/command/CommandSender.java b/paper-api/src/main/java/org/bukkit/command/CommandSender.java index 1fd0f5f4dc26..22d75ff22388 100644 --- a/paper-api/src/main/java/org/bukkit/command/CommandSender.java +++ b/paper-api/src/main/java/org/bukkit/command/CommandSender.java @@ -1,8 +1,6 @@ package org.bukkit.command; import java.util.UUID; -import net.kyori.adventure.audience.MessageType; -import net.kyori.adventure.identity.Identity; import net.kyori.adventure.text.Component; import org.bukkit.Server; import org.bukkit.permissions.Permissible; @@ -38,7 +36,7 @@ public interface CommandSender extends net.kyori.adventure.audience.Audience, Pe * * @param message Message to be displayed * @param sender The sender of this message - * @see #sendMessage(net.kyori.adventure.identity.Identified, net.kyori.adventure.text.Component) + * @see #sendMessage(Component) * @deprecated sender UUID is ignored */ @Deprecated // Paper @@ -49,7 +47,7 @@ public interface CommandSender extends net.kyori.adventure.audience.Audience, Pe * * @param messages An array of messages to be displayed * @param sender The sender of this message - * @see #sendMessage(net.kyori.adventure.identity.Identified, net.kyori.adventure.text.Component) + * @see #sendMessage(Component) * @deprecated sender UUID is ignored */ @Deprecated // Paper @@ -133,11 +131,6 @@ public void sendMessage(@Nullable UUID sender, @NotNull net.md_5.bungee.api.chat */ public net.kyori.adventure.text.@NotNull Component name(); - @Override - default void sendMessage(final net.kyori.adventure.identity.@NotNull Identity identity, final net.kyori.adventure.text.@NotNull Component message, final net.kyori.adventure.audience.@NotNull MessageType type) { - this.sendMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); - } - /** * Sends a message with the MiniMessage format to the command sender. *

@@ -179,7 +172,7 @@ default void sendPlainMessage(final @NotNull String message) { * the component will be sent as legacy text.

* * @param component the component to send - * @deprecated use {@link #sendMessage(Identity, Component, MessageType)} instead + * @deprecated use {@link #sendMessage(Component)} instead */ @Deprecated default void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent component) { @@ -193,7 +186,7 @@ default void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent compone * the components will be sent as legacy text.

* * @param components the components to send - * @deprecated use {@link #sendMessage(Identity, Component, MessageType)} instead + * @deprecated use {@link #sendMessage(Component)} instead */ @Deprecated default void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent... components) { diff --git a/paper-api/src/main/java/org/bukkit/command/ProxiedCommandSender.java b/paper-api/src/main/java/org/bukkit/command/ProxiedCommandSender.java index 5c813ac024f6..f8e88ff42265 100644 --- a/paper-api/src/main/java/org/bukkit/command/ProxiedCommandSender.java +++ b/paper-api/src/main/java/org/bukkit/command/ProxiedCommandSender.java @@ -22,11 +22,6 @@ public interface ProxiedCommandSender extends CommandSender, net.kyori.adventure CommandSender getCallee(); // Paper start - @Override - default void sendMessage(final net.kyori.adventure.identity.@NotNull Identity source, final net.kyori.adventure.text.@NotNull Component message, final net.kyori.adventure.audience.@NotNull MessageType type) { - net.kyori.adventure.audience.ForwardingAudience.Single.super.sendMessage(source, message, type); - } - @NotNull @Override default net.kyori.adventure.audience.Audience audience() { diff --git a/paper-api/src/main/java/org/bukkit/entity/Entity.java b/paper-api/src/main/java/org/bukkit/entity/Entity.java index 2c68aae864a7..087fd5f9f0fe 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -1086,7 +1086,7 @@ public class Spigot extends CommandSender.Spigot { @NotNull @Override default net.kyori.adventure.text.event.HoverEvent asHoverEvent(final @NotNull java.util.function.UnaryOperator op) { - return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.customName()))); + return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.showEntity(this.getType().getKey(), this.getUniqueId(), this.customName()))); } /** diff --git a/paper-api/src/main/java/org/bukkit/entity/Player.java b/paper-api/src/main/java/org/bukkit/entity/Player.java index 3eef8d533c2a..18d3290fece8 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Player.java +++ b/paper-api/src/main/java/org/bukkit/entity/Player.java @@ -3553,7 +3553,7 @@ default void openSign(Sign sign) { // Paper start @Override default net.kyori.adventure.text.event.HoverEvent asHoverEvent(final java.util.function.UnaryOperator op) { - return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.displayName()))); + return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.showEntity(this.getType().getKey(), this.getUniqueId(), this.displayName()))); } // Paper end diff --git a/paper-api/src/main/java/org/bukkit/inventory/meta/BookMeta.java b/paper-api/src/main/java/org/bukkit/inventory/meta/BookMeta.java index f0c6943da3f7..b18d1ab2c7d6 100644 --- a/paper-api/src/main/java/org/bukkit/inventory/meta/BookMeta.java +++ b/paper-api/src/main/java/org/bukkit/inventory/meta/BookMeta.java @@ -1,10 +1,12 @@ package org.bukkit.inventory.meta; import java.util.List; +import net.kyori.adventure.text.Component; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.Material; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Contract; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * Represents a {@link Material#WRITTEN_BOOK} that can have a title, an author, @@ -15,7 +17,8 @@ * the meta instance is not sufficient due to unusual inheritance * with relation to {@link WritableBookMeta}. */ -public interface BookMeta extends WritableBookMeta, net.kyori.adventure.inventory.Book { // Paper - adventure +@NullMarked +public interface BookMeta extends WritableBookMeta { /** * Represents the generation (or level of copying) of a written book @@ -118,7 +121,6 @@ enum Generation { void setGeneration(@Nullable Generation generation); @Override - @NotNull BookMeta clone(); // Paper start - adventure @@ -128,42 +130,42 @@ enum Generation { */ @Deprecated @Override - @NotNull String getPage(int page); + String getPage(int page); /** * @deprecated use {@link #page(int, net.kyori.adventure.text.Component)} */ @Deprecated @Override - void setPage(int page, @NotNull String data); + void setPage(int page, String data); /** * @deprecated use {@link #pages()} */ @Deprecated @Override - @NotNull List getPages(); + List getPages(); /** * @deprecated use {@link #pages(List)} */ @Deprecated @Override - void setPages(@NotNull List pages); + void setPages(List pages); /** * @deprecated use {@link #pages(net.kyori.adventure.text.Component...)} */ @Deprecated @Override - void setPages(@NotNull String... pages); + void setPages(String... pages); /** * @deprecated use {@link #addPages(net.kyori.adventure.text.Component...)} */ @Deprecated @Override - void addPage(@NotNull String... pages); + void addPage(String... pages); // /** @@ -174,8 +176,7 @@ enum Generation { * * @return the title of the book */ - @Override - net.kyori.adventure.text.@Nullable Component title(); + @Nullable Component title(); /** * Sets the title of the book. @@ -185,9 +186,8 @@ enum Generation { * @param title the title to set * @return the same {@link BookMeta} instance */ - @org.jetbrains.annotations.Contract(value = "_ -> this", pure = false) - @Override - @NotNull BookMeta title(net.kyori.adventure.text.@Nullable Component title); + @Contract(value = "_ -> this") + BookMeta title(@Nullable Component title); /** * Gets the author of the book. @@ -197,8 +197,7 @@ enum Generation { * * @return the author of the book */ - @Override - net.kyori.adventure.text.@Nullable Component author(); + @Nullable Component author(); /** * Sets the author of the book. Removes author when given null. @@ -206,10 +205,31 @@ enum Generation { * @param author the author to set * @return the same {@link BookMeta} instance */ - @org.jetbrains.annotations.Contract(value = "_ -> this", pure = false) - @Override - @NotNull BookMeta author(net.kyori.adventure.text.@Nullable Component author); + @Contract(value = "_ -> this") + BookMeta author(@Nullable Component author); + + /** + * Gets the list of pages. + * + * @return the pages + */ + List pages(); + /** + * Sets the pages in this book. + * + * @param pages the pages to set + * @return the same {@link BookMeta} instance + */ + BookMeta pages(List pages); + + /** + * Sets the pages in this book. + * + * @param pages the pages to set + * @return the same {@link BookMeta} instance + */ + BookMeta pages(Component... pages); /** * Gets the specified page in the book. The page must exist. @@ -219,7 +239,7 @@ enum Generation { * @param page the page number to get, in range [1, getPageCount()] * @return the page from the book */ - net.kyori.adventure.text.@NotNull Component page(int page); + Component page(int page); /** * Sets the specified page in the book. Pages of the book must be @@ -233,7 +253,7 @@ enum Generation { * @param page the page number to set, in range [1, getPageCount()] * @param data the data to set for that page */ - void page(int page, net.kyori.adventure.text.@NotNull Component data); + void page(int page, Component data); /** * Adds new pages to the end of the book. Up to a maximum of 100 pages with @@ -241,31 +261,7 @@ enum Generation { * * @param pages A list of strings, each being a page */ - void addPages(net.kyori.adventure.text.@NotNull Component @NotNull ... pages); - - interface BookMetaBuilder extends net.kyori.adventure.inventory.Book.Builder { - - @Override - @NotNull BookMetaBuilder title(net.kyori.adventure.text.@Nullable Component title); - - @Override - @NotNull BookMetaBuilder author(net.kyori.adventure.text.@Nullable Component author); - - @Override - @NotNull BookMetaBuilder addPage(net.kyori.adventure.text.@NotNull Component page); - - @Override - @NotNull BookMetaBuilder pages(net.kyori.adventure.text.@NotNull Component @NotNull ... pages); - - @Override - @NotNull BookMetaBuilder pages(java.util.@NotNull Collection pages); - - @Override - @NotNull BookMeta build(); - } - - @Override - @NotNull BookMetaBuilder toBuilder(); + void addPages(Component... pages); // Paper end // Spigot start @@ -278,7 +274,6 @@ public class Spigot { * @return the page from the book * @deprecated in favour of {@link #page(int)} */ - @NotNull @Deprecated // Paper public BaseComponent[] getPage(int page) { throw new UnsupportedOperationException("Not supported yet."); @@ -306,7 +301,6 @@ public void setPage(int page, @Nullable BaseComponent... data) { * @return list of all the pages in the book * @deprecated in favour of {@link #pages()} */ - @NotNull @Deprecated // Paper public List getPages() { throw new UnsupportedOperationException("Not supported yet."); @@ -320,7 +314,7 @@ public List getPages() { * @deprecated in favour of {@link #pages(java.util.List)} */ @Deprecated // Paper - public void setPages(@NotNull List pages) { + public void setPages(List pages) { throw new UnsupportedOperationException("Not supported yet."); } @@ -332,7 +326,7 @@ public void setPages(@NotNull List pages) { * @deprecated in favour of {@link #pages(net.kyori.adventure.text.Component...)} */ @Deprecated // Paper - public void setPages(@NotNull BaseComponent[]... pages) { + public void setPages(BaseComponent[]... pages) { throw new UnsupportedOperationException("Not supported yet."); } @@ -344,12 +338,11 @@ public void setPages(@NotNull BaseComponent[]... pages) { * @deprecated in favour of {@link #addPages(net.kyori.adventure.text.Component...)} */ @Deprecated // Paper - public void addPage(@NotNull BaseComponent[]... pages) { + public void addPage(BaseComponent[]... pages) { throw new UnsupportedOperationException("Not supported yet."); } } - @NotNull Spigot spigot(); // Spigot end } diff --git a/paper-server/patches/sources/net/minecraft/network/chat/MessageSignature.java.patch b/paper-server/patches/sources/net/minecraft/network/chat/MessageSignature.java.patch index af25ad25c9bd..d645e8ac3ab5 100644 --- a/paper-server/patches/sources/net/minecraft/network/chat/MessageSignature.java.patch +++ b/paper-server/patches/sources/net/minecraft/network/chat/MessageSignature.java.patch @@ -4,7 +4,7 @@ import net.minecraft.util.SignatureValidator; public record MessageSignature(byte[] bytes) { -+ public net.kyori.adventure.chat.SignedMessage.Signature adventure() { return () -> this.bytes; } // Paper - adventure; support signed messages ++ public net.kyori.adventure.chat.SignedMessage.Signature adventure() { return net.kyori.adventure.chat.SignedMessage.signature(bytes); } // Paper - adventure; support signed messages public static final Codec CODEC = ExtraCodecs.BASE64_STRING.xmap(MessageSignature::new, MessageSignature::bytes); public static final int BYTES = 256; diff --git a/paper-server/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java b/paper-server/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java index 8f07539a82f4..757690d6ff4c 100644 --- a/paper-server/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java +++ b/paper-server/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java @@ -1,13 +1,15 @@ package com.destroystokyo.paper.console; -import net.kyori.adventure.audience.MessageType; -import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.chat.ChatType; +import net.kyori.adventure.chat.SignedMessage; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.logger.slf4j.ComponentLogger; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.apache.logging.log4j.LogManager; import org.bukkit.craftbukkit.command.CraftConsoleCommandSender; +import org.jspecify.annotations.NullMarked; +@NullMarked public class TerminalConsoleCommandSender extends CraftConsoleCommandSender { private static final ComponentLogger LOGGER = ComponentLogger.logger(LogManager.getRootLogger().getName()); @@ -15,12 +17,25 @@ public class TerminalConsoleCommandSender extends CraftConsoleCommandSender { @Override public void sendRawMessage(String message) { final Component msg = LegacyComponentSerializer.legacySection().deserialize(message); - this.sendMessage(Identity.nil(), msg, MessageType.SYSTEM); + this.sendMessage(msg); } @Override - public void sendMessage(Identity identity, Component message, MessageType type) { + public void sendMessage(Component message) { LOGGER.info(message); } + @Override + public void sendMessage(final Component message, final ChatType.Bound boundChatType) { + this.sendMessage(message); + } + + @Override + public void sendMessage(final SignedMessage signedMessage, final ChatType.Bound boundChatType) { + if (signedMessage.unsignedContent() != null) { + this.sendMessage(signedMessage.unsignedContent()); + } else { + LOGGER.info(signedMessage.message()); + } + } } diff --git a/paper-server/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java b/paper-server/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java index 34dc37f83538..8db0905409be 100644 --- a/paper-server/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java +++ b/paper-server/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java @@ -113,38 +113,38 @@ public final class AdventureCodecs { return Key.parseable(s) ? DataResult.success(Key.key(s)) : DataResult.error(() -> "Cannot convert " + s + " to adventure Key"); }, Key::asString); - static final Function TEXT_PAYLOAD_EXTRACTOR = a -> ((ClickEvent.Payload.Text) a.payload()).value(); + static final Function, String> TEXT_PAYLOAD_EXTRACTOR = a -> ((ClickEvent.Payload.Text) a.payload()).value(); /* * Click */ - static final MapCodec OPEN_URL_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> OPEN_URL_CODEC = mapCodec((instance) -> instance.group( ExtraCodecs.UNTRUSTED_URI.fieldOf("url").forGetter(a -> { final String url = ((ClickEvent.Payload.Text) a.payload()).value(); return URI.create(!url.contains("://") ? "https://" + url : url); } ) ).apply(instance, (url) -> ClickEvent.openUrl(url.toString()))); - static final MapCodec OPEN_FILE_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> OPEN_FILE_CODEC = mapCodec((instance) -> instance.group( Codec.STRING.fieldOf("path").forGetter(TEXT_PAYLOAD_EXTRACTOR) ).apply(instance, ClickEvent::openFile)); - static final MapCodec RUN_COMMAND_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> RUN_COMMAND_CODEC = mapCodec((instance) -> instance.group( ExtraCodecs.CHAT_STRING.fieldOf("command").forGetter(TEXT_PAYLOAD_EXTRACTOR) ).apply(instance, ClickEvent::runCommand)); - static final MapCodec SUGGEST_COMMAND_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> SUGGEST_COMMAND_CODEC = mapCodec((instance) -> instance.group( ExtraCodecs.CHAT_STRING.fieldOf("command").forGetter(TEXT_PAYLOAD_EXTRACTOR) ).apply(instance, ClickEvent::suggestCommand)); - static final MapCodec CHANGE_PAGE_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> CHANGE_PAGE_CODEC = mapCodec((instance) -> instance.group( ExtraCodecs.POSITIVE_INT.fieldOf("page").forGetter(a -> ((ClickEvent.Payload.Int) a.payload()).integer()) ).apply(instance, ClickEvent::changePage)); - static final MapCodec COPY_TO_CLIPBOARD_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> COPY_TO_CLIPBOARD_CODEC = mapCodec((instance) -> instance.group( Codec.STRING.fieldOf("value").forGetter(TEXT_PAYLOAD_EXTRACTOR) ).apply(instance, ClickEvent::copyToClipboard)); // needs to be lazy loaded due to depending on PaperDialogCodecs static init - static final MapCodec SHOW_DIALOG_CODEC = MapCodec.recursive("show_dialog", ignored -> mapCodec((instance) -> instance.group( + static final MapCodec> SHOW_DIALOG_CODEC = MapCodec.recursive("show_dialog", ignored -> mapCodec((instance) -> instance.group( PaperDialogCodecs.DIALOG_CODEC.fieldOf("dialog").forGetter(a -> (Dialog) ((ClickEvent.Payload.Dialog) a.payload()).dialog()) ).apply(instance, ClickEvent::showDialog))); - static final MapCodec CUSTOM_CODEC = mapCodec((instance) -> instance.group( + static final MapCodec> CUSTOM_CODEC = mapCodec((instance) -> instance.group( KEY_CODEC.fieldOf("id").forGetter(a -> ((ClickEvent.Payload.Custom) a.payload()).key()), BINARY_TAG_HOLDER_CODEC.fieldOf("payload").forGetter(a -> ((ClickEvent.Payload.Custom) a.payload()).nbt()) ).apply(instance, ClickEvent::custom)); @@ -160,26 +160,26 @@ public final class AdventureCodecs { public static final Supplier CLICK_EVENT_TYPES = () -> new ClickEventType[]{OPEN_URL_CLICK_EVENT_TYPE, OPEN_FILE_CLICK_EVENT_TYPE, RUN_COMMAND_CLICK_EVENT_TYPE, SUGGEST_COMMAND_CLICK_EVENT_TYPE, CHANGE_PAGE_CLICK_EVENT_TYPE, COPY_TO_CLIPBOARD_CLICK_EVENT_TYPE, SHOW_DIALOG_CLICK_EVENT_TYPE, CUSTOM_CLICK_EVENT_TYPE}; static final Codec CLICK_EVENT_TYPE_CODEC = StringRepresentable.fromValues(CLICK_EVENT_TYPES); - public record ClickEventType(MapCodec codec, String id) implements StringRepresentable { + public record ClickEventType(MapCodec> codec, String id) implements StringRepresentable { @Override public String getSerializedName() { return this.id; } } - public static final Function GET_CLICK_EVENT_TYPE = + public static final Function, ClickEventType> GET_CLICK_EVENT_TYPE = he -> switch (he.action()) { - case OPEN_URL -> OPEN_URL_CLICK_EVENT_TYPE; - case OPEN_FILE -> OPEN_FILE_CLICK_EVENT_TYPE; - case RUN_COMMAND -> RUN_COMMAND_CLICK_EVENT_TYPE; - case SUGGEST_COMMAND -> SUGGEST_COMMAND_CLICK_EVENT_TYPE; - case CHANGE_PAGE -> CHANGE_PAGE_CLICK_EVENT_TYPE; - case COPY_TO_CLIPBOARD -> COPY_TO_CLIPBOARD_CLICK_EVENT_TYPE; - case SHOW_DIALOG -> SHOW_DIALOG_CLICK_EVENT_TYPE; - case CUSTOM -> CUSTOM_CLICK_EVENT_TYPE; + case ClickEvent.Action.ChangePage ignored -> CHANGE_PAGE_CLICK_EVENT_TYPE; + case ClickEvent.Action.Custom ignored -> CUSTOM_CLICK_EVENT_TYPE; + case ClickEvent.Action.ShowDialog ignored -> SHOW_DIALOG_CLICK_EVENT_TYPE; + case ClickEvent.Action.CopyToClipboard ignored -> COPY_TO_CLIPBOARD_CLICK_EVENT_TYPE; + case ClickEvent.Action.OpenFile ignored -> OPEN_FILE_CLICK_EVENT_TYPE; + case ClickEvent.Action.OpenUrl ignored -> OPEN_URL_CLICK_EVENT_TYPE; + case ClickEvent.Action.RunCommand ignored -> RUN_COMMAND_CLICK_EVENT_TYPE; + case ClickEvent.Action.SuggestCommand ignored -> SUGGEST_COMMAND_CLICK_EVENT_TYPE; }; - static final Codec CLICK_EVENT_CODEC = CLICK_EVENT_TYPE_CODEC.dispatch("action", GET_CLICK_EVENT_TYPE, ClickEventType::codec); + static final Codec> CLICK_EVENT_CODEC = CLICK_EVENT_TYPE_CODEC.dispatch("action", GET_CLICK_EVENT_TYPE, ClickEventType::codec); /* * HOVER @@ -363,7 +363,7 @@ static Function> nullableGetter(final Function new Property(prop.name(), prop.value(), prop.signature())) - .collect(ImmutableListMultimap.toImmutableListMultimap(Property::name, Function.identity()))) + .collect(ImmutableListMultimap.toImmutableListMultimap(Property::name, identity()))) )); } ).forGetter(obj -> obj), @@ -468,7 +468,7 @@ public String getSerializedName() { } } - static final MapCodec> NBT_COMPONENT_MAP_CODEC = mapCodec((instance) -> { + static final MapCodec> NBT_COMPONENT_MAP_CODEC = mapCodec((instance) -> { return instance.group( Codec.STRING.fieldOf("nbt").forGetter(NBTComponent::nbtPath), Codec.BOOL.lenientOptionalFieldOf("interpret", false).forGetter(NBTComponent::interpret), @@ -503,7 +503,7 @@ public String getSerializedName() { static final ComponentType OBJECT = new ComponentType<>(OBJECT_COMPONENT_MAP_CODEC, ObjectComponent.class::isInstance, "object"); static final ComponentType SCORE = new ComponentType<>(SCORE_COMPONENT_MAP_CODEC, ScoreComponent.class::isInstance, "score"); static final ComponentType SELECTOR = new ComponentType<>(SELECTOR_COMPONENT_MAP_CODEC, SelectorComponent.class::isInstance, "selector"); - static final ComponentType> NBT = new ComponentType<>(NBT_COMPONENT_MAP_CODEC, NBTComponent.class::isInstance, "nbt"); + static final ComponentType> NBT = new ComponentType<>(NBT_COMPONENT_MAP_CODEC, NBTComponent.class::isInstance, "nbt"); static Codec createCodec(final Codec selfCodec) { final ExtraCodecs.LateBoundIdMapper> lateBoundIdMapper = new ExtraCodecs.LateBoundIdMapper<>(); @@ -520,7 +520,7 @@ static Codec createCodec(final Codec selfCodec) { throw new IllegalStateException("Unexpected component type " + component); }, "type"); - final Codec directCodec = RecordCodecBuilder.create((instance) -> { + final Codec directCodec = create((instance) -> { return instance.group( legacyCodec.forGetter(identity()), ExtraCodecs.nonEmptyList(selfCodec.listOf()).optionalFieldOf("extra", List.of()).forGetter(Component::children), diff --git a/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java index efcf79712be2..b1c034fd593d 100644 --- a/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java @@ -31,7 +31,6 @@ import net.kyori.adventure.text.serializer.ComponentSerializer; import net.kyori.adventure.text.serializer.ansi.ANSIComponentSerializer; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.kyori.adventure.translation.GlobalTranslator; import net.kyori.adventure.util.Codec; @@ -119,8 +118,6 @@ public final class PaperAdventure { }) .build(); public static final AttributeKey LOCALE_ATTRIBUTE = AttributeKey.valueOf("adventure:locale"); // init after FLATTENER because classloading triggered here might create a logger - @Deprecated - public static final PlainComponentSerializer PLAIN = PlainComponentSerializer.builder().flattener(FLATTENER).build(); public static final ANSIComponentSerializer ANSI_SERIALIZER = ANSIComponentSerializer.builder().flattener(FLATTENER).build(); private static final TagParser NBT_PARSER = TagParser.create(NbtOps.INSTANCE); public static final Codec NBT_CODEC = new Codec<>() { diff --git a/paper-server/src/main/java/io/papermc/paper/adventure/providers/GsonComponentSerializerProviderImpl.java b/paper-server/src/main/java/io/papermc/paper/adventure/providers/GsonComponentSerializerProviderImpl.java index c620d5aa2b02..6b474266e8cb 100644 --- a/paper-server/src/main/java/io/papermc/paper/adventure/providers/GsonComponentSerializerProviderImpl.java +++ b/paper-server/src/main/java/io/papermc/paper/adventure/providers/GsonComponentSerializerProviderImpl.java @@ -1,6 +1,7 @@ package io.papermc.paper.adventure.providers; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.kyori.adventure.text.serializer.json.JSONOptions; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -19,7 +20,7 @@ public class GsonComponentSerializerProviderImpl implements GsonComponentSeriali public @NotNull GsonComponentSerializer gsonLegacy() { return GsonComponentSerializer.builder() .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.INSTANCE) - .downsampleColors() + .editOptions(editor -> editor.value(JSONOptions.EMIT_RGB, false)) .build(); } diff --git a/paper-server/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java b/paper-server/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java index e3ddc201b328..ea9c86c7692a 100644 --- a/paper-server/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java +++ b/paper-server/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java @@ -129,7 +129,7 @@ private void listEntities(final CommandSender sender, final String[] args) { final int z = (e.getKey().z << 4) + 8; final Component message = text(" " + e.getValue() + ": " + e.getKey().x + ", " + e.getKey().z + (chunkProviderServer.isPositionTicking(e.getKey().toLong()) ? " (Ticking)" : " (Non-Ticking)")) .hoverEvent(HoverEvent.showText(text("Click to teleport to chunk", GREEN))) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, "/minecraft:execute as @s in " + world.getWorld().getKey() + " run tp " + x + " " + (world.getWorld().getHighestBlockYAt(x, z, HeightMap.MOTION_BLOCKING) + 1) + " " + z)); + .clickEvent(ClickEvent.runCommand("/minecraft:execute as @s in " + world.getWorld().getKey() + " run tp " + x + " " + (world.getWorld().getHighestBlockYAt(x, z, HeightMap.MOTION_BLOCKING) + 1) + " " + z)); sender.sendMessage(message); }); } else { diff --git a/paper-server/src/main/java/io/papermc/paper/commands/FeedbackForwardingSender.java b/paper-server/src/main/java/io/papermc/paper/commands/FeedbackForwardingSender.java index 7aa78cc98de8..aa9230fcd212 100644 --- a/paper-server/src/main/java/io/papermc/paper/commands/FeedbackForwardingSender.java +++ b/paper-server/src/main/java/io/papermc/paper/commands/FeedbackForwardingSender.java @@ -1,9 +1,9 @@ package io.papermc.paper.commands; import io.papermc.paper.adventure.PaperAdventure; -import java.util.UUID; import java.util.function.Consumer; -import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.chat.ChatType; +import net.kyori.adventure.chat.SignedMessage; import net.kyori.adventure.identity.Identity; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; @@ -43,10 +43,23 @@ public void sendMessage(final String... messages) { } @Override - public void sendMessage(final Identity identity, final Component message, final MessageType type) { + public void sendMessage(final Component message) { this.feedback.accept(message); } + @Override + public void sendMessage(final Component message, final ChatType.Bound boundChatType) { + this.feedback.accept(message); + } + + @Override + public void sendMessage(final SignedMessage signedMessage, final ChatType.Bound boundChatType) { + final @Nullable Component component = signedMessage.unsignedContent(); + if (component != null) { + this.feedback.accept(component); + } + } + @Override public String getName() { return "FeedbackForwardingSender"; @@ -85,7 +98,7 @@ public CommandSourceStack asVanilla() { private record Source(FeedbackForwardingSender sender) implements CommandSource { @Override public void sendSystemMessage(final net.minecraft.network.chat.Component message) { - this.sender.sendMessage(Identity.nil(), PaperAdventure.asAdventure(message)); + this.sender.sendMessage(PaperAdventure.asAdventure(message)); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java b/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java index 872acd855e45..8d021f31516b 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java @@ -1,5 +1,7 @@ package org.bukkit.craftbukkit.command; +import net.kyori.adventure.chat.ChatType; +import net.kyori.adventure.chat.SignedMessage; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.entity.BlockEntity; @@ -62,10 +64,23 @@ public String getName() { } @Override - public void sendMessage(net.kyori.adventure.identity.Identity identity, net.kyori.adventure.text.Component message, net.kyori.adventure.audience.MessageType type) { + public void sendMessage(final net.kyori.adventure.text.Component message) { this.block.source.sendSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message)); } + @Override + public void sendMessage(final net.kyori.adventure.text.Component message, final ChatType.Bound boundChatType) { + this.block.source.sendSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message)); + } + + @Override + public void sendMessage(final SignedMessage signedMessage, final ChatType.Bound boundChatType) { + final net.kyori.adventure.text.Component component = signedMessage.unsignedContent(); + if (component != null) { + this.block.source.sendSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(component)); + } + } + @Override public net.kyori.adventure.text.Component name() { return io.papermc.paper.adventure.PaperAdventure.asAdventure(this.block.getDisplayName()); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java index 6e2f931b06d4..fdc92e3e2d71 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java @@ -1,6 +1,9 @@ package org.bukkit.craftbukkit.command; import java.util.UUID; +import net.kyori.adventure.chat.ChatType; +import net.kyori.adventure.chat.SignedMessage; +import net.kyori.adventure.text.Component; import org.bukkit.ChatColor; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.conversations.Conversation; @@ -86,11 +89,6 @@ public boolean isConversing() { return this.conversationTracker.isConversing(); } - @Override - public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { - this.sendRawMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); - } - @Override public boolean hasPermission(String name) { return io.papermc.paper.configuration.GlobalConfiguration.get().console.hasAllPermissions || super.hasPermission(name); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 94307a5ffce0..c5785bba2f29 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2771,6 +2771,14 @@ private net.minecraft.network.chat.ChatType.Bound toHandle(net.kyori.adventure.c ); } + @Override + public void sendMessage(final net.kyori.adventure.text.Component message) { + if (getHandle().connection == null) return; + + net.minecraft.network.chat.Component component = io.papermc.paper.adventure.PaperAdventure.asVanilla(message); + this.getHandle().sendSystemMessage(component); + } + @Override public void sendMessage(net.kyori.adventure.text.Component message, net.kyori.adventure.chat.ChatType.Bound boundChatType) { if (getHandle().connection == null) return; @@ -2804,14 +2812,6 @@ public void sendMessage(net.kyori.adventure.chat.SignedMessage signedMessage, ne // this.getHandle().sendChatMessage(net.minecraft.network.chat.OutgoingChatMessage.create(playerChatMessage), this.getHandle().isTextFilteringEnabled(), this.toHandle(boundChatType)); } - @Deprecated(forRemoval = true) - @Override - public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { - if (getHandle().connection == null) return; - final net.minecraft.core.Registry chatTypeRegistry = this.getHandle().level().registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.CHAT_TYPE); - this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(message, false)); - } - @Override public void sendActionBar(final net.kyori.adventure.text.Component message) { final net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket packet = new net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket(io.papermc.paper.adventure.PaperAdventure.asVanillaNullToEmpty(message)); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java index 6b248639801a..fbf8d0c614ec 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -241,53 +241,6 @@ public void addPages(net.kyori.adventure.text.Component... pages) { } } - private CraftMetaBook(List pages) { - super((org.bukkit.craftbukkit.inventory.CraftMetaItem) org.bukkit.Bukkit.getItemFactory().getItemMeta(org.bukkit.Material.WRITABLE_BOOK)); - this.pages = pages.subList(0, Math.min(MAX_PAGES, pages.size())).stream().map(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection()::serialize).collect(java.util.stream.Collectors.toList()); - } - - static class CraftMetaBookBuilder implements BookMetaBuilder { - protected final List pages = new java.util.ArrayList<>(); - - @Override - public BookMetaBuilder title(net.kyori.adventure.text.Component title) { - return this; - } - - @Override - public BookMetaBuilder author(net.kyori.adventure.text.Component author) { - return this; - } - - @Override - public BookMetaBuilder addPage(net.kyori.adventure.text.Component page) { - this.pages.add(page); - return this; - } - - @Override - public BookMetaBuilder pages(net.kyori.adventure.text.Component... pages) { - java.util.Collections.addAll(this.pages, pages); - return this; - } - - @Override - public BookMetaBuilder pages(java.util.Collection pages) { - this.pages.addAll(pages); - return this; - } - - @Override - public BookMeta build() { - return new CraftMetaBook(this.pages); - } - } - - @Override - public BookMetaBuilder toBuilder() { - return new CraftMetaBookBuilder(); - } - @Override public String getPage(final int page) { Preconditions.checkArgument(this.isValidPage(page), "Invalid page number (%s)", page); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java index eb21c7bf833b..2d2e05694077 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java @@ -452,39 +452,6 @@ public BookMeta.Spigot spigot() { public static final net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer LEGACY_DOWNSAMPLING_COMPONENT_SERIALIZER = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.builder() .character(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.SECTION_CHAR) .build(); - private CraftMetaBookSigned(net.kyori.adventure.text.Component title, net.kyori.adventure.text.Component author, java.util.List pages) { - super((org.bukkit.craftbukkit.inventory.CraftMetaItem) org.bukkit.Bukkit.getItemFactory().getItemMeta(Material.WRITABLE_BOOK)); - this.title = title == null ? null : LEGACY_DOWNSAMPLING_COMPONENT_SERIALIZER.serialize(title); - this.author = author == null ? null : LEGACY_DOWNSAMPLING_COMPONENT_SERIALIZER.serialize(author); - this.pages = io.papermc.paper.adventure.PaperAdventure.asVanilla(pages); - } - - static final class CraftMetaBookSignedBuilder extends CraftMetaBook.CraftMetaBookBuilder { - private net.kyori.adventure.text.Component title; - private net.kyori.adventure.text.Component author; - - @Override - public org.bukkit.inventory.meta.BookMeta.BookMetaBuilder title(final net.kyori.adventure.text.Component title) { - this.title = title; - return this; - } - - @Override - public org.bukkit.inventory.meta.BookMeta.BookMetaBuilder author(final net.kyori.adventure.text.Component author) { - this.author = author; - return this; - } - - @Override - public org.bukkit.inventory.meta.BookMeta build() { - return new CraftMetaBookSigned(this.title, this.author, this.pages); - } - } - - @Override - public BookMetaBuilder toBuilder() { - return new CraftMetaBookSignedBuilder(); - } @Override public net.kyori.adventure.text.Component title() { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java index f83067eaa4ee..fa5649d0c70d 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -113,11 +113,6 @@ public net.kyori.adventure.text.serializer.gson.GsonComponentSerializer gsonComp return net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson(); } - @Override - public net.kyori.adventure.text.serializer.plain.PlainComponentSerializer plainComponentSerializer() { - return io.papermc.paper.adventure.PaperAdventure.PLAIN; - } - @Override public net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer plainTextSerializer() { return net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer.plainText();