content
content record component.content - the unwrapped chat messagetype - sender - timeStamp - saltSignature - Packet<ClientPlayPacketListener>The content is not wrapped in any way (e.g. by chat.type.text text); the
raw message content is sent to the clients, and they will wrap it (see ChatHudListener.format(net.minecraft.text.Text, net.minecraft.network.ChatMessageSender).) If custom formats are needed,
either send it as a game message or use a server resource pack.
Messages that took more than TIME_TO_LIVE to reach the clients are
considered expired. This is measured from the time the client sent the chat message
to the server. Note that unlike ChatMessageC2SPacket expired messages are not
discarded by the clients; they instead log a warning.
Chat messages have signatures. It is possible to use a bogus signature - such as
NetworkEncryptionUtils.SignatureData.NONE - to send a chat message; however
if the signature is invalid (e.g. because the text's content differs from the one
sent by the client, or because the passed signature is invalid) the client will
log a warning. See NetworkEncryptionUtils.updateSignature(java.security.Signature, long, java.util.UUID, java.time.Instant, java.lang.String) for how the message
is signed.
ServerPlayerEntity.sendChatMessage(net.minecraft.text.Text, net.minecraft.network.MessageType, net.minecraft.network.ChatMessageSender, java.time.Instant, net.minecraft.network.encryption.NetworkEncryptionUtils.SignatureData)ClientPlayNetworkHandler.onChatMessage(net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket)| Namespace | Name |
|---|---|
| official | tx |
| intermediary | net/minecraft/class_7438 |
| named | net/minecraft/network/packet/s2c/play/ChatMessageS2CPacket |
| official | a |
| intermediary | comp_758 |
| named | content |
| official | b |
| intermediary | comp_759 |
| named | type |
| official | c |
| intermediary | comp_760 |
| named | sender |
| official | d |
| intermediary | comp_761 |
| named | timeStamp |
| official | e |
| intermediary | comp_762 |
| named | saltSignature |
private final Textcontent record component.private final NetworkEncryptionUtils.SignatureDatasaltSignature record component.private final ChatMessageSendersender record component.private static final Durationprivate final InstanttimeStamp record component.private final MessageTypetype record component.ChatMessageS2CPacket(Text text,
MessageType messageType,
ChatMessageSender chatMessageSender,
Instant instant,
NetworkEncryptionUtils.SignatureData signatureData) voidapply(ClientPlayPacketListener clientPlayPacketListener) content()content record component.final booleanprivate Instantfinal inthashCode()booleanbooleanisSignatureValid(PlayerPublicKey.PublicKeyData publicKey) booleansaltSignature record component.sender()sender record component.timeStamp record component.final StringtoString()type()type record component.voidwrite(PacketByteBuf buf) content record component.type record component.sender record component.timeStamp record component.saltSignature record component.| Namespace | Name | Mixin selector |
|---|---|---|
| official | f |
Ltx;f:Ljava/time/Duration; |
| intermediary | field_39085 |
Lnet/minecraft/class_7438;field_39085:Ljava/time/Duration; |
| named | TIME_TO_LIVE |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;TIME_TO_LIVE:Ljava/time/Duration; |
| Namespace | Name | Mixin selector |
|---|---|---|
| official | <init> |
Ltx;<init>(Lqn;)V |
| intermediary | <init> |
Lnet/minecraft/class_7438;<init>(Lnet/minecraft/class_2540;)V |
| named | <init> |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;<init>(Lnet/minecraft/network/PacketByteBuf;)V |
write in interface Packet<ClientPlayPacketListener>| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Lry;a(Lqn;)V |
| intermediary | method_11052 |
Lnet/minecraft/class_2596;method_11052(Lnet/minecraft/class_2540;)V |
| named | write |
Lnet/minecraft/network/Packet;write(Lnet/minecraft/network/PacketByteBuf;)V |
apply in interface Packet<ClientPlayPacketListener>| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Ltx;a(Lsb;)V |
| intermediary | method_43629 |
Lnet/minecraft/class_7438;method_43629(Lnet/minecraft/class_2602;)V |
| named | apply |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;apply(Lnet/minecraft/network/listener/ClientPlayPacketListener;)V |
isWritingErrorSkippable in interface Packet<ClientPlayPacketListener>| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Lry;a()Z |
| intermediary | method_11051 |
Lnet/minecraft/class_2596;method_11051()Z |
| named | isWritingErrorSkippable |
Lnet/minecraft/network/Packet;isWritingErrorSkippable()Z |
publicKey - the sender's public key to use for verifying| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Ltx;a(Lbrv$a;)Z |
| intermediary | method_43627 |
Lnet/minecraft/class_7438;method_43627(Lnet/minecraft/class_7428$class_7429;)Z |
| named | isSignatureValid |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;isSignatureValid(Lnet/minecraft/network/encryption/PlayerPublicKey$PublicKeyData;)Z |
| Namespace | Name | Mixin selector |
|---|---|---|
| official | g |
Ltx;g()Ljava/time/Instant; |
| intermediary | method_43630 |
Lnet/minecraft/class_7438;method_43630()Ljava/time/Instant; |
| named | getExpiryTime |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;getExpiryTime()Ljava/time/Instant; |
| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Ltx;a(Ljava/time/Instant;)Z |
| intermediary | method_43628 |
Lnet/minecraft/class_7438;method_43628(Ljava/time/Instant;)Z |
| named | isExpired |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;isExpired(Ljava/time/Instant;)Z |
Objects::equals(Object,Object).content record component.content record componenttype record component.type record componentsender record component.sender record componenttimeStamp record component.timeStamp record componentsaltSignature record component.saltSignature record component