minecraft-src/net/minecraft/network/protocol/game/ClientboundPlayerChatPacket.java
2025-07-04 03:15:13 +03:00

59 lines
2.1 KiB
Java

package net.minecraft.network.protocol.game;
import java.util.UUID;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.ComponentSerialization;
import net.minecraft.network.chat.FilterMask;
import net.minecraft.network.chat.MessageSignature;
import net.minecraft.network.chat.ChatType.Bound;
import net.minecraft.network.chat.SignedMessageBody.Packed;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.PacketType;
import org.jetbrains.annotations.Nullable;
public record ClientboundPlayerChatPacket(
UUID sender, int index, @Nullable MessageSignature signature, Packed body, @Nullable Component unsignedContent, FilterMask filterMask, Bound chatType
) implements Packet<ClientGamePacketListener> {
public static final StreamCodec<RegistryFriendlyByteBuf, ClientboundPlayerChatPacket> STREAM_CODEC = Packet.codec(
ClientboundPlayerChatPacket::write, ClientboundPlayerChatPacket::new
);
private ClientboundPlayerChatPacket(RegistryFriendlyByteBuf buffer) {
this(
buffer.readUUID(),
buffer.readVarInt(),
buffer.readNullable(MessageSignature::read),
new Packed(buffer),
FriendlyByteBuf.readNullable(buffer, ComponentSerialization.TRUSTED_STREAM_CODEC),
FilterMask.read(buffer),
Bound.STREAM_CODEC.decode(buffer)
);
}
private void write(RegistryFriendlyByteBuf buffer) {
buffer.writeUUID(this.sender);
buffer.writeVarInt(this.index);
buffer.writeNullable(this.signature, MessageSignature::write);
this.body.write(buffer);
FriendlyByteBuf.writeNullable(buffer, this.unsignedContent, ComponentSerialization.TRUSTED_STREAM_CODEC);
FilterMask.write(buffer, this.filterMask);
Bound.STREAM_CODEC.encode(buffer, this.chatType);
}
@Override
public PacketType<ClientboundPlayerChatPacket> type() {
return GamePacketTypes.CLIENTBOUND_PLAYER_CHAT;
}
public void handle(ClientGamePacketListener clientGamePacketListener) {
clientGamePacketListener.handlePlayerChat(this);
}
@Override
public boolean isSkippable() {
return true;
}
}