aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-07-29 04:56:21 +0000
committerGitHub <noreply@github.com>2022-07-29 04:56:21 +0000
commitaadf2de3cb751d563e743599a7fb345c08010f5a (patch)
treeaec2a9485c5057f1c148b87e23ee07a7a6b4978b /azalea-protocol
parent3e43fc6c502573f9d48d801087e72cded37a30b8 (diff)
parent2211021105a7ce0ce9fcbc18f3b4f03b0f991a10 (diff)
downloadazalea-drasl-aadf2de3cb751d563e743599a7fb345c08010f5a.tar.xz
Merge pull request #8 from mat-1/1.19.1
Support 1.19.1. Signing stuff isn't implemented but auth isn't even in Azalea yet so that's fine.
Diffstat (limited to 'azalea-protocol')
-rw-r--r--azalea-protocol/src/packets/game/clientbound_custom_chat_completions_packet.rs15
-rw-r--r--azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs8
-rw-r--r--azalea-protocol/src/packets/game/clientbound_light_update_packet.rs3
-rw-r--r--azalea-protocol/src/packets/game/clientbound_move_entity_posrot_packet.rs2
-rw-r--r--azalea-protocol/src/packets/game/clientbound_player_chat_header_packet.rs10
-rw-r--r--azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs99
-rw-r--r--azalea-protocol/src/packets/game/clientbound_server_data_packet.rs1
-rw-r--r--azalea-protocol/src/packets/game/clientbound_system_chat_packet.rs3
-rwxr-xr-xazalea-protocol/src/packets/game/mod.rs112
-rw-r--r--azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs8
-rw-r--r--azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs15
-rw-r--r--azalea-protocol/src/packets/game/serverbound_chat_packet.rs14
-rwxr-xr-xazalea-protocol/src/packets/login/serverbound_hello_packet.rs2
-rw-r--r--[-rwxr-xr-x]azalea-protocol/src/packets/mod.rs2
14 files changed, 220 insertions, 74 deletions
diff --git a/azalea-protocol/src/packets/game/clientbound_custom_chat_completions_packet.rs b/azalea-protocol/src/packets/game/clientbound_custom_chat_completions_packet.rs
new file mode 100644
index 00000000..06a641f1
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_custom_chat_completions_packet.rs
@@ -0,0 +1,15 @@
+use azalea_buf::McBuf;
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, McBuf, GamePacket)]
+pub struct ClientboundCustomChatCompletionsPacket {
+ pub action: Action,
+ pub entries: Vec<String>,
+}
+
+#[derive(Clone, Debug, McBuf, Copy)]
+pub enum Action {
+ Add = 0,
+ Remove = 1,
+ Set = 2,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs
new file mode 100644
index 00000000..6e7ab6b7
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs
@@ -0,0 +1,8 @@
+use azalea_buf::McBuf;
+use azalea_crypto::MessageSignature;
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, McBuf, GamePacket)]
+pub struct ClientboundDeleteChatPacket {
+ pub message_signature: MessageSignature,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_light_update_packet.rs b/azalea-protocol/src/packets/game/clientbound_light_update_packet.rs
index adb6e33b..1c998226 100644
--- a/azalea-protocol/src/packets/game/clientbound_light_update_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_light_update_packet.rs
@@ -1,5 +1,4 @@
-use azalea_buf::BitSet;
-use azalea_buf::McBuf;
+use azalea_buf::{BitSet, McBuf};
use packet_macros::GamePacket;
#[derive(Clone, Debug, McBuf, GamePacket)]
diff --git a/azalea-protocol/src/packets/game/clientbound_move_entity_posrot_packet.rs b/azalea-protocol/src/packets/game/clientbound_move_entity_posrot_packet.rs
index e3422ac0..3dbfaff6 100644
--- a/azalea-protocol/src/packets/game/clientbound_move_entity_posrot_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_move_entity_posrot_packet.rs
@@ -4,7 +4,7 @@ use packet_macros::GamePacket;
/// This packet is sent by the server when an entity moves less then 8 blocks.
#[derive(Clone, Debug, McBuf, GamePacket)]
-pub struct ClientboundMoveEntityPosRotPacket {
+pub struct ClientboundMoveEntityPosrotPacket {
#[var]
pub entity_id: u32,
pub delta: PositionDelta8,
diff --git a/azalea-protocol/src/packets/game/clientbound_player_chat_header_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_chat_header_packet.rs
new file mode 100644
index 00000000..bd0bc1f3
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_player_chat_header_packet.rs
@@ -0,0 +1,10 @@
+use azalea_buf::McBuf;
+use azalea_crypto::{MessageSignature, SignedMessageHeader};
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, McBuf, GamePacket)]
+pub struct ClientboundPlayerChatHeaderPacket {
+ pub header: SignedMessageHeader,
+ pub header_signature: MessageSignature,
+ pub body_digest: Vec<u8>,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
index 4aac93f4..68f0ea21 100644
--- a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
@@ -1,22 +1,99 @@
-use azalea_buf::McBuf;
+use azalea_buf::{BitSet, McBuf, McBufReadable, McBufVarWritable};
+use azalea_buf::{McBufVarReadable, McBufWritable};
use azalea_chat::component::Component;
-use azalea_crypto::SaltSignaturePair;
+use azalea_crypto::{MessageSignature, SignedMessageHeader};
use packet_macros::GamePacket;
+use std::io::{Read, Write};
+use uuid::Uuid;
#[derive(Clone, Debug, McBuf, GamePacket)]
pub struct ClientboundPlayerChatPacket {
- pub signed_content: Component,
+ pub message: PlayerChatMessage,
+ pub chat_type: ChatTypeBound,
+}
+
+#[derive(Copy, Clone, Debug, McBuf)]
+pub enum ChatType {
+ Chat = 0,
+ SayCommand = 1,
+ MsgCommandIncoming = 2,
+ MsgCommandOutgoing = 3,
+ TeamMsgCommandIncoming = 4,
+ TeamMsgCommandOutgoing = 5,
+ EmoteCommand = 6,
+}
+
+#[derive(Clone, Debug, McBuf)]
+pub struct ChatTypeBound {
+ pub chat_type: ChatType,
+ pub name: Component,
+ pub target_name: Option<Component>,
+}
+
+#[derive(Clone, Debug, McBuf)]
+pub struct PlayerChatMessage {
+ pub signed_header: SignedMessageHeader,
+ pub header_signature: MessageSignature,
+ pub signed_body: SignedMessageBody,
pub unsigned_content: Option<Component>,
- #[var]
- pub type_id: i32,
- pub sender: ChatSender,
+ pub filter_mask: FilterMask,
+}
+
+#[derive(Clone, Debug, McBuf)]
+pub struct SignedMessageBody {
+ pub content: ChatMessageContent,
pub timestamp: u64,
- pub salt_signature: SaltSignaturePair,
+ pub salt: u64,
+ pub last_seen: Vec<LastSeenMessagesEntry>,
}
#[derive(Clone, Debug, McBuf)]
-pub struct ChatSender {
- pub uuid: uuid::Uuid,
- pub name: Component,
- pub team_name: Option<Component>,
+pub struct LastSeenMessagesEntry {
+ pub profile_id: Uuid,
+ pub last_signature: MessageSignature,
+}
+
+#[derive(Clone, Debug, McBuf)]
+pub struct LastSeenMessagesUpdate {
+ pub last_seen: Vec<LastSeenMessagesEntry>,
+ pub last_received: Option<LastSeenMessagesEntry>,
+}
+
+#[derive(Clone, Debug, McBuf)]
+pub struct ChatMessageContent {
+ pub plain: String,
+ /// Only sent if the decorated message is different than the plain.
+ pub decorated: Option<Component>,
+}
+
+#[derive(Clone, Debug)]
+pub enum FilterMask {
+ PassThrough,
+ FullyFiltered,
+ PartiallyFiltered(BitSet),
+}
+
+impl McBufReadable for FilterMask {
+ fn read_from(buf: &mut impl Read) -> Result<Self, String> {
+ let filter_mask = u32::var_read_from(buf)?;
+ match filter_mask {
+ 0 => Ok(FilterMask::PassThrough),
+ 1 => Ok(FilterMask::FullyFiltered),
+ 2 => Ok(FilterMask::PartiallyFiltered(BitSet::read_from(buf)?)),
+ _ => Err("Invalid filter mask".to_string()),
+ }
+ }
+}
+impl McBufWritable for FilterMask {
+ fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
+ match self {
+ FilterMask::PassThrough => 0u32.var_write_into(buf)?,
+ FilterMask::FullyFiltered => 1u32.var_write_into(buf)?,
+ FilterMask::PartiallyFiltered(bits) => {
+ 2u32.var_write_into(buf)?;
+ bits.write_into(buf)?;
+ }
+ }
+ Ok(())
+ }
}
diff --git a/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs b/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs
index 1dddfc1e..ed91733e 100644
--- a/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs
@@ -7,4 +7,5 @@ pub struct ClientboundServerDataPacket {
pub motd: Option<Component>,
pub icon_base64: Option<String>,
pub previews_chat: bool,
+ pub enforces_secure_chat: bool,
}
diff --git a/azalea-protocol/src/packets/game/clientbound_system_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_system_chat_packet.rs
index c531fa1e..8318b7d4 100644
--- a/azalea-protocol/src/packets/game/clientbound_system_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_system_chat_packet.rs
@@ -5,6 +5,5 @@ use packet_macros::GamePacket;
#[derive(Clone, Debug, McBuf, GamePacket)]
pub struct ClientboundSystemChatPacket {
pub content: Component,
- #[var]
- pub type_id: i32,
+ pub overlay: bool,
}
diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs
index f407a697..0b5c4d3e 100755
--- a/azalea-protocol/src/packets/game/mod.rs
+++ b/azalea-protocol/src/packets/game/mod.rs
@@ -6,8 +6,10 @@ pub mod clientbound_block_update_packet;
pub mod clientbound_change_difficulty_packet;
pub mod clientbound_chat_preview_packet;
pub mod clientbound_container_set_content_packet;
+pub mod clientbound_custom_chat_completions_packet;
pub mod clientbound_custom_payload_packet;
pub mod clientbound_declare_commands_packet;
+pub mod clientbound_delete_chat_packet;
pub mod clientbound_disconnect_packet;
pub mod clientbound_entity_event_packet;
pub mod clientbound_entity_velocity_packet;
@@ -23,6 +25,7 @@ pub mod clientbound_move_entity_pos_packet;
pub mod clientbound_move_entity_posrot_packet;
pub mod clientbound_move_entity_rot_packet;
pub mod clientbound_player_abilities_packet;
+pub mod clientbound_player_chat_header_packet;
pub mod clientbound_player_chat_packet;
pub mod clientbound_player_info_packet;
pub mod clientbound_player_position_packet;
@@ -51,7 +54,9 @@ pub mod clientbound_update_recipes_packet;
pub mod clientbound_update_tags_packet;
pub mod clientbound_update_view_distance_packet;
pub mod serverbound_accept_teleportation_packet;
+pub mod serverbound_chat_ack_packet;
pub mod serverbound_chat_command_packet;
+pub mod serverbound_chat_packet;
pub mod serverbound_chat_preview_packet;
pub mod serverbound_custom_payload_packet;
pub mod serverbound_keep_alive_packet;
@@ -66,14 +71,16 @@ declare_state_packets!(
GamePacket,
Serverbound => {
0x00: serverbound_accept_teleportation_packet::ServerboundAcceptTeleportationPacket,
- 0x03: serverbound_chat_command_packet::ServerboundChatCommandPacket,
- 0x05: serverbound_chat_preview_packet::ServerboundChatPreviewPacket,
- 0x0c: serverbound_custom_payload_packet::ServerboundCustomPayloadPacket,
- 0x11: serverbound_keep_alive_packet::ServerboundKeepAlivePacket,
- 0x13: serverbound_move_player_packet_pos::ServerboundMovePlayerPacketPos,
- 0x14: serverbound_move_player_packet_pos_rot::ServerboundMovePlayerPacketPosRot,
- 0x15: serverbound_move_player_packet_rot::ServerboundMovePlayerPacketRot,
- 0x16: serverbound_move_player_packet_status_only::ServerboundMovePlayerPacketStatusOnly,
+ 0x03: serverbound_chat_ack_packet::ServerboundChatAckPacket,
+ 0x04: serverbound_chat_command_packet::ServerboundChatCommandPacket,
+ 0x05: serverbound_chat_packet::ServerboundChatPacket,
+ 0x06: serverbound_chat_preview_packet::ServerboundChatPreviewPacket,
+ 0x0d: serverbound_custom_payload_packet::ServerboundCustomPayloadPacket,
+ 0x12: serverbound_keep_alive_packet::ServerboundKeepAlivePacket,
+ 0x14: serverbound_move_player_packet_pos::ServerboundMovePlayerPacketPos,
+ 0x15: serverbound_move_player_packet_pos_rot::ServerboundMovePlayerPacketPosRot,
+ 0x16: serverbound_move_player_packet_rot::ServerboundMovePlayerPacketRot,
+ 0x17: serverbound_move_player_packet_status_only::ServerboundMovePlayerPacketStatusOnly,
},
Clientbound => {
0x00: clientbound_add_entity_packet::ClientboundAddEntityPacket,
@@ -85,48 +92,51 @@ declare_state_packets!(
0x0c: clientbound_chat_preview_packet::ClientboundChatPreviewPacket,
0x0f: clientbound_declare_commands_packet::ClientboundDeclareCommandsPacket,
0x11: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket,
- 0x15: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket,
- 0x17: clientbound_disconnect_packet::ClientboundDisconnectPacket,
- 0x18: clientbound_entity_event_packet::ClientboundEntityEventPacket,
- 0x1b: clientbound_game_event_packet::ClientboundGameEventPacket,
- 0x1d: clientbound_initialize_border_packet::ClientboundInitializeBorderPacket,
- 0x1e: clientbound_keep_alive_packet::ClientboundKeepAlivePacket,
- 0x1f: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket,
- 0x20: clientbound_level_event_packet::ClientboundLevelEventPacket,
- 0x21: clientbound_level_particles_packet::ClientboundLevelParticlesPacket,
- 0x22: clientbound_light_update_packet::ClientboundLightUpdatePacket,
- 0x23: clientbound_login_packet::ClientboundLoginPacket,
- 0x26: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket,
- 0x27: clientbound_move_entity_posrot_packet::ClientboundMoveEntityPosRotPacket,
- 0x28: clientbound_move_entity_rot_packet::ClientboundMoveEntityRotPacket,
- 0x2f: clientbound_player_abilities_packet::ClientboundPlayerAbilitiesPacket,
- 0x30: clientbound_player_chat_packet::ClientboundPlayerChatPacket,
- 0x34: clientbound_player_info_packet::ClientboundPlayerInfoPacket,
- 0x36: clientbound_player_position_packet::ClientboundPlayerPositionPacket,
- 0x37: clientbound_recipe_packet::ClientboundRecipePacket,
- 0x38: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket,
- 0x3c: clientbound_rotate_head_packet::ClientboundRotateHeadPacket,
- 0x3d: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket,
- 0x3f: clientbound_server_data_packet::ClientboundServerDataPacket,
- 0x47: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket,
- 0x48: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket,
- 0x49: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket,
- 0x4a: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket,
- 0x4b: clientbound_set_display_chat_preview_packet::ClientboundSetDisplayChatPreviewPacket,
- 0x4d: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket,
- 0x4e: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket,
- 0x4f: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket,
- 0x50: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
- 0x51: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
- 0x52: clientbound_set_health_packet::ClientboundSetHealthPacket,
- 0x59: clientbound_set_time_packet::ClientboundSetTimePacket,
- 0x5d: clientbound_sound_packet::ClientboundSoundPacket,
- 0x5f: clientbound_system_chat_packet::ClientboundSystemChatPacket,
- 0x63: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
- 0x64: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
- 0x65: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
- 0x66: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket,
- 0x67: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket,
- 0x68: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
+ 0x15: clientbound_custom_chat_completions_packet::ClientboundCustomChatCompletionsPacket,
+ 0x16: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket,
+ 0x18: clientbound_delete_chat_packet::ClientboundDeleteChatPacket,
+ 0x19: clientbound_disconnect_packet::ClientboundDisconnectPacket,
+ 0x1a: clientbound_entity_event_packet::ClientboundEntityEventPacket,
+ 0x1d: clientbound_game_event_packet::ClientboundGameEventPacket,
+ 0x1f: clientbound_initialize_border_packet::ClientboundInitializeBorderPacket,
+ 0x20: clientbound_keep_alive_packet::ClientboundKeepAlivePacket,
+ 0x21: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket,
+ 0x22: clientbound_level_event_packet::ClientboundLevelEventPacket,
+ 0x23: clientbound_level_particles_packet::ClientboundLevelParticlesPacket,
+ 0x24: clientbound_light_update_packet::ClientboundLightUpdatePacket,
+ 0x25: clientbound_login_packet::ClientboundLoginPacket,
+ 0x28: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket,
+ 0x29: clientbound_move_entity_posrot_packet::ClientboundMoveEntityPosrotPacket,
+ 0x2a: clientbound_move_entity_rot_packet::ClientboundMoveEntityRotPacket,
+ 0x31: clientbound_player_abilities_packet::ClientboundPlayerAbilitiesPacket,
+ 0x32: clientbound_player_chat_header_packet::ClientboundPlayerChatHeaderPacket,
+ 0x33: clientbound_player_chat_packet::ClientboundPlayerChatPacket,
+ 0x37: clientbound_player_info_packet::ClientboundPlayerInfoPacket,
+ 0x39: clientbound_player_position_packet::ClientboundPlayerPositionPacket,
+ 0x3a: clientbound_recipe_packet::ClientboundRecipePacket,
+ 0x3b: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket,
+ 0x3f: clientbound_rotate_head_packet::ClientboundRotateHeadPacket,
+ 0x40: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket,
+ 0x42: clientbound_server_data_packet::ClientboundServerDataPacket,
+ 0x4a: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket,
+ 0x4b: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket,
+ 0x4c: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket,
+ 0x4d: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket,
+ 0x4e: clientbound_set_display_chat_preview_packet::ClientboundSetDisplayChatPreviewPacket,
+ 0x50: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket,
+ 0x51: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket,
+ 0x52: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket,
+ 0x53: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
+ 0x54: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
+ 0x55: clientbound_set_health_packet::ClientboundSetHealthPacket,
+ 0x5c: clientbound_set_time_packet::ClientboundSetTimePacket,
+ 0x60: clientbound_sound_packet::ClientboundSoundPacket,
+ 0x62: clientbound_system_chat_packet::ClientboundSystemChatPacket,
+ 0x66: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
+ 0x67: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
+ 0x68: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
+ 0x69: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket,
+ 0x6a: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket,
+ 0x6b: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
}
);
diff --git a/azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs b/azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs
new file mode 100644
index 00000000..921ca4c7
--- /dev/null
+++ b/azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs
@@ -0,0 +1,8 @@
+use crate::packets::game::clientbound_player_chat_packet::LastSeenMessagesUpdate;
+use azalea_buf::McBuf;
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, McBuf, GamePacket)]
+pub struct ServerboundChatAckPacket {
+ pub last_seen_messages: LastSeenMessagesUpdate,
+}
diff --git a/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs b/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs
index 6371463b..1639deae 100644
--- a/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs
+++ b/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs
@@ -1,19 +1,22 @@
-use std::collections::HashMap;
-
use azalea_buf::McBuf;
+use azalea_crypto::MessageSignature;
use packet_macros::GamePacket;
+use super::clientbound_player_chat_packet::LastSeenMessagesUpdate;
+
#[derive(Clone, Debug, McBuf, GamePacket)]
pub struct ServerboundChatCommandPacket {
pub command: String,
// TODO: Choose a real timestamp type
pub timestamp: u64,
- pub argument_signatures: ArgumentSignatures,
+ pub salt: i64,
+ pub argument_signatures: Vec<ArgumentSignature>,
pub signed_preview: bool,
+ pub last_seen_messages: LastSeenMessagesUpdate,
}
#[derive(Clone, Debug, McBuf)]
-pub struct ArgumentSignatures {
- pub salt: u64,
- pub signatures: HashMap<String, Vec<u8>>,
+pub struct ArgumentSignature {
+ pub name: String,
+ pub signature: MessageSignature,
}
diff --git a/azalea-protocol/src/packets/game/serverbound_chat_packet.rs b/azalea-protocol/src/packets/game/serverbound_chat_packet.rs
new file mode 100644
index 00000000..f0c99b14
--- /dev/null
+++ b/azalea-protocol/src/packets/game/serverbound_chat_packet.rs
@@ -0,0 +1,14 @@
+use crate::packets::game::clientbound_player_chat_packet::LastSeenMessagesUpdate;
+use azalea_buf::McBuf;
+use azalea_crypto::MessageSignature;
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, McBuf, GamePacket)]
+pub struct ServerboundChatPacket {
+ pub message: String,
+ pub timestamp: u64,
+ pub salt: u64,
+ pub signature: MessageSignature,
+ pub signed_preview: bool,
+ pub last_seen_messages: LastSeenMessagesUpdate,
+}
diff --git a/azalea-protocol/src/packets/login/serverbound_hello_packet.rs b/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
index 57a3e4d8..0f6f9a50 100755
--- a/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
+++ b/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
@@ -1,10 +1,12 @@
use azalea_buf::McBuf;
use packet_macros::LoginPacket;
+use uuid::Uuid;
#[derive(Clone, Debug, McBuf, LoginPacket)]
pub struct ServerboundHelloPacket {
pub username: String,
pub public_key: Option<ProfilePublicKeyData>,
+ pub profile_id: Option<Uuid>,
}
#[derive(Clone, Debug, McBuf)]
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs
index cf405e98..fbccc087 100755..100644
--- a/azalea-protocol/src/packets/mod.rs
+++ b/azalea-protocol/src/packets/mod.rs
@@ -7,7 +7,7 @@ use crate::connect::PacketFlow;
use azalea_buf::{McBufWritable, Readable, Writable};
use std::io::{Read, Write};
-pub const PROTOCOL_VERSION: u32 = 759;
+pub const PROTOCOL_VERSION: u32 = 760;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {