68 lines
2.2 KiB
Java
68 lines
2.2 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(
|
|
int globalIndex,
|
|
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.readVarInt(),
|
|
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.writeVarInt(this.globalIndex);
|
|
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;
|
|
}
|
|
}
|