diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 0e3304f6..268a8197 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -67,7 +67,9 @@ tasks { "https://guava.dev/releases/${libs.guava.get().version}/api/docs/", "https://google.github.io/guice/api-docs/${libs.guice.get().version}/javadoc/", "https://docs.oracle.com/en/java/javase/17/docs/api/", - "https://jd.papermc.io/adventure/${libs.adventure.bom.get().version}/", + "https://jd.advntr.dev/api/${libs.adventure.bom.get().version}/", + "https://jd.advntr.dev/text-minimessage/${libs.adventure.bom.get().version}/", + "https://jd.advntr.dev/key/${libs.adventure.bom.get().version}/", "https://www.javadocs.dev/com.github.ben-manes.caffeine/caffeine/${libs.caffeine.get().version}/", ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 479b30ce..e00cea72 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,8 +11,8 @@ shadow = "com.gradleup.shadow:9.3.1" spotless = "com.diffplug.spotless:8.2.0" [libraries] -adventure-bom = "net.kyori:adventure-bom:5.2.0" -adventure-text-serializer-json-legacy-impl = "net.kyori:adventure-text-serializer-json-legacy-impl:5.2.0" +adventure-bom = "net.kyori:adventure-bom:4.26.1" +adventure-text-serializer-json-legacy-impl = "net.kyori:adventure-text-serializer-json-legacy-impl:4.26.1" adventure-facet = "net.kyori:adventure-platform-facet:4.4.1" asm = "org.ow2.asm:asm:9.9.1" auto-service = "com.google.auto.service:auto-service:1.1.1" diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java index 3bf23d5d..8d39fcf9 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java @@ -84,6 +84,7 @@ import com.velocitypowered.proxy.protocol.packet.PluginMessagePacket; import com.velocitypowered.proxy.protocol.packet.RemoveResourcePackPacket; import com.velocitypowered.proxy.protocol.packet.TransferPacket; import com.velocitypowered.proxy.protocol.packet.chat.ChatQueue; +import com.velocitypowered.proxy.protocol.packet.chat.ChatType; import com.velocitypowered.proxy.protocol.packet.chat.ComponentHolder; import com.velocitypowered.proxy.protocol.packet.chat.PlayerChatCompletionPacket; import com.velocitypowered.proxy.protocol.packet.chat.builder.ChatBuilderFactory; @@ -118,6 +119,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; +import net.kyori.adventure.audience.MessageType; import net.kyori.adventure.bossbar.BossBar; import net.kyori.adventure.identity.Identity; import net.kyori.adventure.key.Key; @@ -423,16 +425,29 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player, } @Override - public void sendMessage(final @NonNull Component message) { - Preconditions.checkNotNull(message, "message"); + public void sendMessage(@NonNull Identity identity, @NonNull Component message) { final Component translated = translateMessage(message); connection.write(getChatBuilderFactory().builder() - .component(translated).toClient()); + .component(translated).forIdentity(identity).toClient()); } @Override - public void sendActionBar(@NonNull Component message) { + public void sendMessage(@NonNull Identity identity, @NonNull Component message, + @NonNull MessageType type) { + Preconditions.checkNotNull(message, "message"); + Preconditions.checkNotNull(type, "type"); + + Component translated = translateMessage(message); + + connection.write(getChatBuilderFactory().builder() + .component(translated).forIdentity(identity) + .setType(type == MessageType.CHAT ? ChatType.CHAT : ChatType.SYSTEM) + .toClient()); + } + + @Override + public void sendActionBar(net.kyori.adventure.text.@NonNull Component message) { Component translated = translateMessage(message); ProtocolVersion playerVersion = getProtocolVersion(); diff --git a/proxy/src/main/java/com/velocitypowered/proxy/console/VelocityConsole.java b/proxy/src/main/java/com/velocitypowered/proxy/console/VelocityConsole.java index 9bb6635f..e6e78eb3 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/console/VelocityConsole.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/console/VelocityConsole.java @@ -28,6 +28,7 @@ import com.velocitypowered.proxy.util.ClosestLocaleMatcher; import java.nio.file.Path; import java.util.List; import java.util.Locale; +import net.kyori.adventure.audience.MessageType; import net.kyori.adventure.identity.Identity; import net.kyori.adventure.permission.PermissionChecker; import net.kyori.adventure.platform.facet.FacetPointers; @@ -72,7 +73,8 @@ public final class VelocityConsole extends SimpleTerminalConsole implements Cons } @Override - public void sendMessage(@NonNull Component message) { + public void sendMessage(@NonNull Identity identity, @NonNull Component message, + @NonNull MessageType messageType) { componentLogger.info(message); } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/ProtocolUtils.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/ProtocolUtils.java index 3cb64382..826df5b3 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/ProtocolUtils.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/ProtocolUtils.java @@ -60,6 +60,7 @@ public enum ProtocolUtils { private static final GsonComponentSerializer PRE_1_16_SERIALIZER = GsonComponentSerializer.builder() + .downsampleColors() .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.get()) .options( OptionSchema.globalSchema().stateBuilder()