@@ -94,6 +94,36 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/chat/ChatComposer.java b/src/main/java/io/papermc/paper/chat/ChatComposer.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/io/papermc/paper/chat/ChatComposer.java
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
+package io.papermc.paper.chat;
|
||||||
|
+
|
||||||
|
+import net.kyori.adventure.text.Component;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * A chat composer is responsible for composing chat messages sent by {@link Player}s to the server.
|
||||||
|
+ */
|
||||||
|
+@FunctionalInterface
|
||||||
|
+public interface ChatComposer {
|
||||||
|
+ ChatComposer DEFAULT = (player, displayName, message) -> Component.translatable("chat.type.text", displayName, message);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Composes a chat message.
|
||||||
|
+ *
|
||||||
|
+ * @param source the message source
|
||||||
|
+ * @param displayName the display name of the {@link Player} sending the message
|
||||||
|
+ * @param message the chat message
|
||||||
|
+ * @return a composed chat message
|
||||||
|
+ */
|
||||||
|
+ @NotNull
|
||||||
|
+ Component composeChat(final @NotNull Player source, final @NotNull Component displayName, final @NotNull Component message);
|
||||||
|
+}
|
||||||
diff --git a/src/main/java/io/papermc/paper/chat/ChatFormatter.java b/src/main/java/io/papermc/paper/chat/ChatFormatter.java
|
diff --git a/src/main/java/io/papermc/paper/chat/ChatFormatter.java b/src/main/java/io/papermc/paper/chat/ChatFormatter.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
@@ -108,10 +138,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+/**
|
+/**
|
||||||
+ * A chat formatter is responsible for the formatting of chat messages sent by {@link Player}s to the server.
|
+ * A chat formatter is responsible for the formatting of chat messages sent by {@link Player}s to the server.
|
||||||
|
+ *
|
||||||
|
+ * @deprecated in favour of {@link ChatComposer}
|
||||||
+ */
|
+ */
|
||||||
|
+@Deprecated
|
||||||
+@FunctionalInterface
|
+@FunctionalInterface
|
||||||
+public interface ChatFormatter {
|
+public interface ChatFormatter {
|
||||||
+ // This format might be different than the CraftBukkit one?
|
+ @Deprecated
|
||||||
+ ChatFormatter DEFAULT = (displayName, message) -> Component.translatable("chat.type.text", displayName, message);
|
+ ChatFormatter DEFAULT = (displayName, message) -> Component.translatable("chat.type.text", displayName, message);
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
@@ -121,6 +154,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ * @param message the chat message
|
+ * @param message the chat message
|
||||||
+ * @return a formatted chat message
|
+ * @return a formatted chat message
|
||||||
+ */
|
+ */
|
||||||
|
+ @Deprecated
|
||||||
+ @NotNull
|
+ @NotNull
|
||||||
+ Component chat(final @NotNull Component displayName, final @NotNull Component message);
|
+ Component chat(final @NotNull Component displayName, final @NotNull Component message);
|
||||||
+}
|
+}
|
||||||
@@ -132,24 +166,36 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
+package io.papermc.paper.event.player;
|
+package io.papermc.paper.event.player;
|
||||||
+
|
+
|
||||||
|
+import io.papermc.paper.chat.ChatComposer;
|
||||||
+import io.papermc.paper.chat.ChatFormatter;
|
+import io.papermc.paper.chat.ChatFormatter;
|
||||||
+import java.util.Objects;
|
|
||||||
+import java.util.Set;
|
+import java.util.Set;
|
||||||
+import net.kyori.adventure.text.Component;
|
+import net.kyori.adventure.text.Component;
|
||||||
+import org.bukkit.entity.Player;
|
+import org.bukkit.entity.Player;
|
||||||
+import org.bukkit.event.Cancellable;
|
+import org.bukkit.event.Cancellable;
|
||||||
+import org.bukkit.event.player.PlayerEvent;
|
+import org.bukkit.event.player.PlayerEvent;
|
||||||
|
+import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
+import org.jetbrains.annotations.NotNull;
|
+import org.jetbrains.annotations.NotNull;
|
||||||
+
|
+
|
||||||
|
+import static java.util.Objects.requireNonNull;
|
||||||
|
+
|
||||||
+/**
|
+/**
|
||||||
+ * An abstract implementation of a chat event, handling shared logic.
|
+ * An abstract implementation of a chat event, handling shared logic.
|
||||||
+ */
|
+ */
|
||||||
+public abstract class AbstractChatEvent extends PlayerEvent implements Cancellable {
|
+public abstract class AbstractChatEvent extends PlayerEvent implements Cancellable {
|
||||||
+ private final Set<Player> recipients;
|
+ private final Set<Player> recipients;
|
||||||
+ private boolean cancelled = false;
|
+ private boolean cancelled = false;
|
||||||
+ private ChatFormatter formatter;
|
+ private ChatComposer composer;
|
||||||
|
+ @Deprecated private @Nullable ChatFormatter formatter;
|
||||||
+ private Component message;
|
+ private Component message;
|
||||||
+
|
+
|
||||||
|
+ AbstractChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatComposer composer, final @NotNull Component message) {
|
||||||
|
+ super(player, async);
|
||||||
|
+ this.recipients = recipients;
|
||||||
|
+ this.composer = composer;
|
||||||
|
+ this.message = message;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Deprecated
|
||||||
+ AbstractChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
+ AbstractChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
||||||
+ super(player, async);
|
+ super(player, async);
|
||||||
+ this.recipients = recipients;
|
+ this.recipients = recipients;
|
||||||
@@ -176,12 +222,42 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
|
+ * Gets the chat composer.
|
||||||
|
+ *
|
||||||
|
+ * @return the chat composer
|
||||||
|
+ */
|
||||||
|
+ @NotNull
|
||||||
|
+ public final ChatComposer composer() {
|
||||||
|
+ if(this.composer == null) {
|
||||||
|
+ requireNonNull(this.formatter, "composer and formatter");
|
||||||
|
+ this.composer = (source, displayName, message) -> this.formatter.chat(displayName, message);
|
||||||
|
+ }
|
||||||
|
+ return this.composer;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Sets the chat composer.
|
||||||
|
+ *
|
||||||
|
+ * @param composer the chat composer
|
||||||
|
+ * @throws NullPointerException if {@code composer} is {@code null}
|
||||||
|
+ */
|
||||||
|
+ public final void composer(final @NotNull ChatComposer composer) {
|
||||||
|
+ this.composer = requireNonNull(composer, "composer");
|
||||||
|
+ this.formatter = null;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
+ * Gets the chat formatter.
|
+ * Gets the chat formatter.
|
||||||
+ *
|
+ *
|
||||||
+ * @return the chat formatter
|
+ * @return the chat formatter
|
||||||
|
+ * @deprecated in favour of {@link #composer()}
|
||||||
+ */
|
+ */
|
||||||
|
+ @Deprecated
|
||||||
+ @NotNull
|
+ @NotNull
|
||||||
+ public final ChatFormatter formatter() {
|
+ public final ChatFormatter formatter() {
|
||||||
|
+ if(this.formatter == null) {
|
||||||
|
+ this.formatter = (displayName, message) -> this.composer.composeChat(this.player, displayName, message);
|
||||||
|
+ }
|
||||||
+ return this.formatter;
|
+ return this.formatter;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -190,9 +266,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ *
|
+ *
|
||||||
+ * @param formatter the chat formatter
|
+ * @param formatter the chat formatter
|
||||||
+ * @throws NullPointerException if {@code formatter} is {@code null}
|
+ * @throws NullPointerException if {@code formatter} is {@code null}
|
||||||
|
+ * @deprecated in favour of {@link #composer(ChatComposer)}
|
||||||
+ */
|
+ */
|
||||||
|
+ @Deprecated
|
||||||
+ public final void formatter(final @NotNull ChatFormatter formatter) {
|
+ public final void formatter(final @NotNull ChatFormatter formatter) {
|
||||||
+ this.formatter = Objects.requireNonNull(formatter, "formatter");
|
+ this.formatter = requireNonNull(formatter, "formatter");
|
||||||
|
+ this.composer = (source, displayName, message) -> formatter.chat(displayName, message);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
@@ -212,7 +291,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ * @throws NullPointerException if {@code message} is {@code null}
|
+ * @throws NullPointerException if {@code message} is {@code null}
|
||||||
+ */
|
+ */
|
||||||
+ public final void message(final @NotNull Component message) {
|
+ public final void message(final @NotNull Component message) {
|
||||||
+ this.message = Objects.requireNonNull(message, "message");
|
+ this.message = requireNonNull(message, "message");
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
@@ -233,6 +312,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
+package io.papermc.paper.event.player;
|
+package io.papermc.paper.event.player;
|
||||||
+
|
+
|
||||||
|
+import io.papermc.paper.chat.ChatComposer;
|
||||||
+import io.papermc.paper.chat.ChatFormatter;
|
+import io.papermc.paper.chat.ChatFormatter;
|
||||||
+import java.util.Set;
|
+import java.util.Set;
|
||||||
+import net.kyori.adventure.text.Component;
|
+import net.kyori.adventure.text.Component;
|
||||||
@@ -246,6 +326,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+public final class AsyncChatEvent extends AbstractChatEvent {
|
+public final class AsyncChatEvent extends AbstractChatEvent {
|
||||||
+ private static final HandlerList HANDLERS = new HandlerList();
|
+ private static final HandlerList HANDLERS = new HandlerList();
|
||||||
+
|
+
|
||||||
|
+ public AsyncChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatComposer composer, final @NotNull Component message) {
|
||||||
|
+ super(async, player, recipients, composer, message);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @deprecated use {@link #AsyncChatEvent(boolean, Player, Set, ChatComposer, Component)}
|
||||||
|
+ */
|
||||||
|
+ @Deprecated
|
||||||
+ public AsyncChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
+ public AsyncChatEvent(final boolean async, final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
||||||
+ super(async, player, recipients, formatter, message);
|
+ super(async, player, recipients, formatter, message);
|
||||||
+ }
|
+ }
|
||||||
@@ -269,6 +357,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
+package io.papermc.paper.event.player;
|
+package io.papermc.paper.event.player;
|
||||||
+
|
+
|
||||||
|
+import io.papermc.paper.chat.ChatComposer;
|
||||||
+import io.papermc.paper.chat.ChatFormatter;
|
+import io.papermc.paper.chat.ChatFormatter;
|
||||||
+import java.util.Set;
|
+import java.util.Set;
|
||||||
+import net.kyori.adventure.text.Component;
|
+import net.kyori.adventure.text.Component;
|
||||||
@@ -287,6 +376,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+public final class ChatEvent extends AbstractChatEvent {
|
+public final class ChatEvent extends AbstractChatEvent {
|
||||||
+ private static final HandlerList HANDLERS = new HandlerList();
|
+ private static final HandlerList HANDLERS = new HandlerList();
|
||||||
+
|
+
|
||||||
|
+ public ChatEvent(final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatComposer composer, final @NotNull Component message) {
|
||||||
|
+ super(false, player, recipients, composer, message);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @deprecated use {@link #ChatEvent(Player, Set, ChatComposer, Component)}
|
||||||
|
+ */
|
||||||
|
+ @Deprecated
|
||||||
+ public ChatEvent(final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
+ public ChatEvent(final @NotNull Player player, final @NotNull Set<Player> recipients, final @NotNull ChatFormatter formatter, final @NotNull Component message) {
|
||||||
+ super(false, player, recipients, formatter, message);
|
+ super(false, player, recipients, formatter, message);
|
||||||
+ }
|
+ }
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
+package io.papermc.paper.adventure;
|
+package io.papermc.paper.adventure;
|
||||||
+
|
+
|
||||||
+import io.papermc.paper.chat.ChatFormatter;
|
+import io.papermc.paper.chat.ChatComposer;
|
||||||
+import io.papermc.paper.event.player.AbstractChatEvent;
|
+import io.papermc.paper.event.player.AbstractChatEvent;
|
||||||
+import io.papermc.paper.event.player.AsyncChatEvent;
|
+import io.papermc.paper.event.player.AsyncChatEvent;
|
||||||
+import io.papermc.paper.event.player.ChatEvent;
|
+import io.papermc.paper.event.player.ChatEvent;
|
||||||
@@ -123,8 +123,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+import net.kyori.adventure.text.Component;
|
+import net.kyori.adventure.text.Component;
|
||||||
+import net.kyori.adventure.text.TextReplacementConfig;
|
+import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
+import net.kyori.adventure.text.event.ClickEvent;
|
+import net.kyori.adventure.text.event.ClickEvent;
|
||||||
+import net.kyori.adventure.text.format.Style;
|
|
||||||
+import net.kyori.adventure.text.format.TextDecoration;
|
|
||||||
+import net.minecraft.network.chat.IChatBaseComponent;
|
+import net.minecraft.network.chat.IChatBaseComponent;
|
||||||
+import net.minecraft.server.MinecraftServer;
|
+import net.minecraft.server.MinecraftServer;
|
||||||
+import net.minecraft.server.level.EntityPlayer;
|
+import net.minecraft.server.level.EntityPlayer;
|
||||||
@@ -171,7 +169,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // continuing from AsyncPlayerChatEvent (without PlayerChatEvent)
|
+ // continuing from AsyncPlayerChatEvent (without PlayerChatEvent)
|
||||||
+ event -> {
|
+ event -> {
|
||||||
+ this.processModern(
|
+ this.processModern(
|
||||||
+ legacyFormatter(event.getFormat(), legacyDisplayName((CraftPlayer) event.getPlayer()), event.getMessage()),
|
+ legacyComposer(event.getFormat(), legacyDisplayName((CraftPlayer) event.getPlayer()), event.getMessage()),
|
||||||
+ event.getRecipients(),
|
+ event.getRecipients(),
|
||||||
+ PaperAdventure.LEGACY_SECTION_UXRC.deserialize(event.getMessage()),
|
+ PaperAdventure.LEGACY_SECTION_UXRC.deserialize(event.getMessage()),
|
||||||
+ event.isCancelled()
|
+ event.isCancelled()
|
||||||
@@ -180,7 +178,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // continuing from AsyncPlayerChatEvent and PlayerChatEvent
|
+ // continuing from AsyncPlayerChatEvent and PlayerChatEvent
|
||||||
+ event -> {
|
+ event -> {
|
||||||
+ this.processModern(
|
+ this.processModern(
|
||||||
+ legacyFormatter(event.getFormat(), legacyDisplayName((CraftPlayer) event.getPlayer()), event.getMessage()),
|
+ legacyComposer(event.getFormat(), legacyDisplayName((CraftPlayer) event.getPlayer()), event.getMessage()),
|
||||||
+ event.getRecipients(),
|
+ event.getRecipients(),
|
||||||
+ PaperAdventure.LEGACY_SECTION_UXRC.deserialize(event.getMessage()),
|
+ PaperAdventure.LEGACY_SECTION_UXRC.deserialize(event.getMessage()),
|
||||||
+ event.isCancelled()
|
+ event.isCancelled()
|
||||||
@@ -189,7 +187,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ // no legacy events called, all nice and fresh!
|
+ // no legacy events called, all nice and fresh!
|
||||||
+ () -> {
|
+ () -> {
|
||||||
+ this.processModern(
|
+ this.processModern(
|
||||||
+ ChatFormatter.DEFAULT,
|
+ ChatComposer.DEFAULT,
|
||||||
+ new LazyPlayerSet(this.server),
|
+ new LazyPlayerSet(this.server),
|
||||||
+ Component.text(this.message).replaceText(URL_REPLACEMENT_CONFIG),
|
+ Component.text(this.message).replaceText(URL_REPLACEMENT_CONFIG),
|
||||||
+ false
|
+ false
|
||||||
@@ -229,8 +227,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private void processModern(final ChatFormatter formatter, final Set<Player> recipients, final Component message, final boolean cancelled) {
|
+ private void processModern(final ChatComposer composer, final Set<Player> recipients, final Component message, final boolean cancelled) {
|
||||||
+ final AsyncChatEvent ae = this.createAsync(formatter, recipients, message);
|
+ final AsyncChatEvent ae = this.createAsync(composer, recipients, message);
|
||||||
+ ae.setCancelled(cancelled); // propagate cancelled state
|
+ ae.setCancelled(cancelled); // propagate cancelled state
|
||||||
+ post(ae);
|
+ post(ae);
|
||||||
+ final boolean listenersOnSyncEvent = anyListeners(ChatEvent.getHandlerList());
|
+ final boolean listenersOnSyncEvent = anyListeners(ChatEvent.getHandlerList());
|
||||||
@@ -245,7 +243,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ this.queueIfAsyncOrRunImmediately(new Waitable<Void>() {
|
+ this.queueIfAsyncOrRunImmediately(new Waitable<Void>() {
|
||||||
+ @Override
|
+ @Override
|
||||||
+ protected Void evaluate() {
|
+ protected Void evaluate() {
|
||||||
+ final ChatEvent se = ChatProcessor.this.createSync(ae.formatter(), ae.recipients(), ae.message());
|
+ final ChatEvent se = ChatProcessor.this.createSync(ae.composer(), ae.recipients(), ae.message());
|
||||||
+ se.setCancelled(ae.isCancelled()); // propagate cancelled state
|
+ se.setCancelled(ae.isCancelled()); // propagate cancelled state
|
||||||
+ post(se);
|
+ post(se);
|
||||||
+ ChatProcessor.this.complete(se);
|
+ ChatProcessor.this.complete(se);
|
||||||
@@ -261,7 +259,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ final CraftPlayer player = this.player.getBukkitEntity();
|
+ final CraftPlayer player = this.player.getBukkitEntity();
|
||||||
+
|
+
|
||||||
+ final Component message = event.formatter().chat(
|
+ final Component message = event.composer().composeChat(
|
||||||
|
+ event.getPlayer(),
|
||||||
+ displayName(player),
|
+ displayName(player),
|
||||||
+ event.message()
|
+ event.message()
|
||||||
+ );
|
+ );
|
||||||
@@ -280,12 +279,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private AsyncChatEvent createAsync(final ChatFormatter formatter, final Set<Player> recipients, final Component message) {
|
+ private AsyncChatEvent createAsync(final ChatComposer composer, final Set<Player> recipients, final Component message) {
|
||||||
+ return new AsyncChatEvent(this.async, this.player.getBukkitEntity(), recipients, formatter, message);
|
+ return new AsyncChatEvent(this.async, this.player.getBukkitEntity(), recipients, composer, message);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private ChatEvent createSync(final ChatFormatter formatter, final Set<Player> recipients, final Component message) {
|
+ private ChatEvent createSync(final ChatComposer composer, final Set<Player> recipients, final Component message) {
|
||||||
+ return new ChatEvent(this.player.getBukkitEntity(), recipients, formatter, message);
|
+ return new ChatEvent(this.player.getBukkitEntity(), recipients, composer, message);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private static String legacyDisplayName(final CraftPlayer player) {
|
+ private static String legacyDisplayName(final CraftPlayer player) {
|
||||||
@@ -296,8 +295,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ return player.displayName();
|
+ return player.displayName();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private static ChatFormatter legacyFormatter(final String format, final String legacyDisplayName, final String legacyMessage) {
|
+ private static ChatComposer legacyComposer(final String format, final String legacyDisplayName, final String legacyMessage) {
|
||||||
+ return (displayName, message) -> PaperAdventure.LEGACY_SECTION_UXRC.deserialize(String.format(format, legacyDisplayName, legacyMessage)).replaceText(URL_REPLACEMENT_CONFIG);
|
+ return (player, displayName, message) -> PaperAdventure.LEGACY_SECTION_UXRC.deserialize(String.format(format, legacyDisplayName, legacyMessage)).replaceText(URL_REPLACEMENT_CONFIG);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private void queueIfAsyncOrRunImmediately(final Waitable<Void> waitable) {
|
+ private void queueIfAsyncOrRunImmediately(final Waitable<Void> waitable) {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/m
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
||||||
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
||||||
@@ -0,0 +0,0 @@ import net.kyori.adventure.text.format.TextDecoration;
|
@@ -0,0 +0,0 @@ import net.kyori.adventure.text.event.ClickEvent;
|
||||||
import net.minecraft.network.chat.IChatBaseComponent;
|
import net.minecraft.network.chat.IChatBaseComponent;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.EntityPlayer;
|
import net.minecraft.server.level.EntityPlayer;
|
||||||
|
|||||||
Reference in New Issue
Block a user