2020-04-24 03:25:58 +02:00
|
|
|
package net.minestom.server.network.packet.client.play;
|
2019-08-11 03:40:34 +02:00
|
|
|
|
2022-07-15 16:57:43 +02:00
|
|
|
import net.minestom.server.crypto.LastSeenMessages;
|
2022-03-16 20:40:22 +01:00
|
|
|
import net.minestom.server.crypto.MessageSignature;
|
2021-11-30 17:49:41 +01:00
|
|
|
import net.minestom.server.network.packet.client.ClientPacket;
|
2020-08-19 20:34:21 +02:00
|
|
|
import net.minestom.server.utils.binary.BinaryReader;
|
2021-02-18 23:24:34 +01:00
|
|
|
import net.minestom.server.utils.binary.BinaryWriter;
|
2020-10-25 17:02:07 +01:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2019-08-11 03:40:34 +02:00
|
|
|
|
2022-07-15 16:57:43 +02:00
|
|
|
public record ClientChatMessagePacket(@NotNull String message,
|
|
|
|
long timestamp, long salt, @NotNull MessageSignature signature,
|
|
|
|
boolean signedPreview,
|
|
|
|
@NotNull LastSeenMessages.Update lastSeenMessages) implements ClientPacket {
|
2021-11-30 19:20:51 +01:00
|
|
|
public ClientChatMessagePacket {
|
|
|
|
if (message.length() > 256) {
|
|
|
|
throw new IllegalArgumentException("Message cannot be more than 256 characters long.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-30 17:49:41 +01:00
|
|
|
public ClientChatMessagePacket(BinaryReader reader) {
|
2022-07-15 16:57:43 +02:00
|
|
|
this(reader.readSizedString(256),
|
|
|
|
reader.readLong(), reader.readLong(), new MessageSignature(reader),
|
|
|
|
reader.readBoolean(),
|
|
|
|
new LastSeenMessages.Update(reader));
|
2019-08-11 03:40:34 +02:00
|
|
|
}
|
2021-02-18 23:24:34 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void write(@NotNull BinaryWriter writer) {
|
|
|
|
writer.writeSizedString(message);
|
2022-07-15 16:57:43 +02:00
|
|
|
writer.writeLong(timestamp);
|
|
|
|
writer.writeLong(salt);
|
2022-03-16 20:40:22 +01:00
|
|
|
writer.write(signature);
|
|
|
|
writer.writeBoolean(signedPreview);
|
2022-07-15 16:57:43 +02:00
|
|
|
writer.write(lastSeenMessages);
|
2021-02-18 23:24:34 +01:00
|
|
|
}
|
2019-08-11 03:40:34 +02:00
|
|
|
}
|