content
content record component.content - the unwrapped chat messagetypeId - sender - time - 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. To register
custom wrapping behaviors, check MessageType.register(java.lang.String).
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
ChatMessageSignature.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 ChatMessageSignature.updateSignature(java.security.Signature, net.minecraft.text.Text, java.util.UUID, java.time.Instant, long) for how the
message is signed.
| Namespace | Name |
|---|---|
| official | ug |
| intermediary | net/minecraft/class_7438 |
| named | net/minecraft/network/packet/s2c/play/ChatMessageS2CPacket |
| official | a |
| intermediary | comp_758 |
| named | content |
| official | b |
| intermediary | comp_806 |
| named | typeId |
| official | c |
| intermediary | comp_760 |
| named | sender |
| official | d |
| intermediary | comp_761 |
| named | time |
| official | e |
| intermediary | comp_762 |
| named | saltSignature |
private final Textcontent record component.private final NetworkEncryptionUtils.SignatureDatasaltSignature record component.private final MessageSendersender record component.private final Instanttime record component.private static final Durationprivate final inttypeId record component.ChatMessageS2CPacket(Text text,
int int2,
MessageSender messageSender,
Instant instant,
NetworkEncryptionUtils.SignatureData signatureData) voidapply(ClientPlayPacketListener clientPlayPacketListener) content()content record component.final booleanprivate InstantgetMessageType(Registry<MessageType> registry) final inthashCode()booleanbooleansaltSignature record component.sender()sender record component.time()time record component.final StringtoString()inttypeId()typeId record component.voidwrite(PacketByteBuf buf) content record component.typeId record component.sender record component.time record component.saltSignature record component.| Namespace | Name | Mixin selector |
|---|---|---|
| official | f |
Lug;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> |
Lug;<init>(Lqs;)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 |
Lsh;a(Lqs;)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 |
Lug;a(Lsk;)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 |
Lsh;a()Z |
| intermediary | method_11051 |
Lnet/minecraft/class_2596;method_11051()Z |
| named | isWritingErrorSkippable |
Lnet/minecraft/network/Packet;isWritingErrorSkippable()Z |
| Namespace | Name | Mixin selector |
|---|---|---|
| official | b |
Lug;b()Lrn; |
| intermediary | method_43885 |
Lnet/minecraft/class_7438;method_43885()Lnet/minecraft/class_7471; |
| named | getSignedMessage |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;getSignedMessage()Lnet/minecraft/network/encryption/SignedChatMessage; |
| Namespace | Name | Mixin selector |
|---|---|---|
| official | h |
Lug;h()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 |
Lug;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 |
NullPointerException - when the type ID is invalid (due to unsynced registry, etc)| Namespace | Name | Mixin selector |
|---|---|---|
| official | a |
Lug;a(Lhi;)Lrc; |
| intermediary | method_43884 |
Lnet/minecraft/class_7438;method_43884(Lnet/minecraft/class_2378;)Lnet/minecraft/class_2556; |
| named | getMessageType |
Lnet/minecraft/network/packet/s2c/play/ChatMessageS2CPacket;getMessageType(Lnet/minecraft/util/registry/Registry;)Lnet/minecraft/network/MessageType; |
Objects::equals(Object,Object); primitive components are compared with '=='.content record component.content record componenttypeId record component.typeId record componentsender record component.sender record componenttime record component.time record componentsaltSignature record component.saltSignature record component