From 233d7ebce4ea901c117b103326945c17b8acc95c Mon Sep 17 00:00:00 2001
From: Ubuntu
Date: Mon, 24 Oct 2022 15:40:55 +0000
Subject: [PATCH] start updating to 22w42a
---
README.md | 2 +-
azalea-block/src/blocks.rs | 604 +-----------------
.../game/clientbound_delete_chat_packet.rs | 37 +-
.../game/clientbound_disguised_chat_packet.rs | 11 +
.../game/clientbound_explode_packet.rs | 119 +---
.../game/clientbound_player_chat_packet.rs | 167 +----
.../clientbound_player_info_remove_packet.rs | 7 +
.../clientbound_player_info_update_packet.rs | 5 +
.../game/clientbound_server_data_packet.rs | 1 -
...entbound_update_enabled_features_packet.rs | 7 +
azalea-protocol/src/packets/game/mod.rs | 190 +++---
.../game/serverbound_chat_ack_packet.rs | 4 +-
.../game/serverbound_chat_command_packet.rs | 19 +-
.../packets/game/serverbound_chat_packet.rs | 11 +-
.../packets/login/serverbound_hello_packet.rs | 35 +-
azalea-protocol/src/packets/mod.rs | 2 +-
codegen/lib/code/utils.py | 10 +-
17 files changed, 222 insertions(+), 1009 deletions(-)
create mode 100644 azalea-protocol/src/packets/game/clientbound_disguised_chat_packet.rs
create mode 100644 azalea-protocol/src/packets/game/clientbound_player_info_remove_packet.rs
create mode 100644 azalea-protocol/src/packets/game/clientbound_player_info_update_packet.rs
create mode 100644 azalea-protocol/src/packets/game/clientbound_update_enabled_features_packet.rs
diff --git a/README.md b/README.md
index 0bd5b96a..18fae0be 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ A collection of Rust crates for making Minecraft bots, clients, and tools.
-*Currently supported Minecraft version: `1.19.2`.*
+*Currently supported Minecraft version: `22w42a`.*
## ⚠️ Azalea is still very unfinished, though some crates are in a somewhat useable state
diff --git a/azalea-block/src/blocks.rs b/azalea-block/src/blocks.rs
index 10779937..846550b9 100644
--- a/azalea-block/src/blocks.rs
+++ b/azalea-block/src/blocks.rs
@@ -352,115 +352,7 @@ make_block_states! {
_7,
},
"lit" => bool,
- "rotation" => OakSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => SpruceSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => BirchSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => AcaciaSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => JungleSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => DarkOakSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => MangroveSignRotation {
+ "rotation" => _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15 {
_0,
_1,
_2,
@@ -656,114 +548,6 @@ make_block_states! {
_6,
_7,
},
- "rotation" => SkeletonSkullRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => WitherSkeletonSkullRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => ZombieHeadRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => PlayerHeadRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => CreeperHeadRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => DragonHeadRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
"power" => LightWeightedPressurePlatePower {
_0,
_1,
@@ -854,294 +638,6 @@ make_block_states! {
Bottom,
Double,
},
- "rotation" => WhiteBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => OrangeBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => MagentaBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => LightBlueBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => YellowBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => LimeBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => PinkBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => GrayBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => LightGrayBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => CyanBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => PurpleBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => BlueBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => BrownBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => GreenBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => RedBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => BlackBannerRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
"age" => ChorusFlowerAge {
_0,
_1,
@@ -1302,42 +798,6 @@ make_block_states! {
_24,
_25,
},
- "rotation" => CrimsonSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
- "rotation" => WarpedSignRotation {
- _0,
- _1,
- _2,
- _3,
- _4,
- _5,
- _6,
- _7,
- _8,
- _9,
- _10,
- _11,
- _12,
- _13,
- _14,
- _15,
- },
"mode" => Mode {
Save,
Load,
@@ -2010,31 +1470,31 @@ make_block_states! {
lit: false,
},
oak_sign => BlockBehavior::default(), {
- rotation: OakSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
spruce_sign => BlockBehavior::default(), {
- rotation: SpruceSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
birch_sign => BlockBehavior::default(), {
- rotation: BirchSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
acacia_sign => BlockBehavior::default(), {
- rotation: AcaciaSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
jungle_sign => BlockBehavior::default(), {
- rotation: JungleSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
dark_oak_sign => BlockBehavior::default(), {
- rotation: DarkOakSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
mangrove_sign => BlockBehavior::default(), {
- rotation: MangroveSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
oak_door => BlockBehavior::default(), {
@@ -2550,37 +2010,37 @@ make_block_states! {
powered: false,
},
skeleton_skull => BlockBehavior::default(), {
- rotation: SkeletonSkullRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
skeleton_wall_skull => BlockBehavior::default(), {
facing: FacingCardinal::North,
},
wither_skeleton_skull => BlockBehavior::default(), {
- rotation: WitherSkeletonSkullRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
wither_skeleton_wall_skull => BlockBehavior::default(), {
facing: FacingCardinal::North,
},
zombie_head => BlockBehavior::default(), {
- rotation: ZombieHeadRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
zombie_wall_head => BlockBehavior::default(), {
facing: FacingCardinal::North,
},
player_head => BlockBehavior::default(), {
- rotation: PlayerHeadRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
player_wall_head => BlockBehavior::default(), {
facing: FacingCardinal::North,
},
creeper_head => BlockBehavior::default(), {
- rotation: CreeperHeadRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
creeper_wall_head => BlockBehavior::default(), {
facing: FacingCardinal::North,
},
dragon_head => BlockBehavior::default(), {
- rotation: DragonHeadRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
dragon_wall_head => BlockBehavior::default(), {
facing: FacingCardinal::North,
@@ -2874,52 +2334,52 @@ make_block_states! {
half: Half::Lower,
},
white_banner => BlockBehavior::default(), {
- rotation: WhiteBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
orange_banner => BlockBehavior::default(), {
- rotation: OrangeBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
magenta_banner => BlockBehavior::default(), {
- rotation: MagentaBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
light_blue_banner => BlockBehavior::default(), {
- rotation: LightBlueBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
yellow_banner => BlockBehavior::default(), {
- rotation: YellowBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
lime_banner => BlockBehavior::default(), {
- rotation: LimeBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
pink_banner => BlockBehavior::default(), {
- rotation: PinkBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
gray_banner => BlockBehavior::default(), {
- rotation: GrayBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
light_gray_banner => BlockBehavior::default(), {
- rotation: LightGrayBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
cyan_banner => BlockBehavior::default(), {
- rotation: CyanBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
purple_banner => BlockBehavior::default(), {
- rotation: PurpleBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
blue_banner => BlockBehavior::default(), {
- rotation: BlueBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
brown_banner => BlockBehavior::default(), {
- rotation: BrownBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
green_banner => BlockBehavior::default(), {
- rotation: GreenBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
red_banner => BlockBehavior::default(), {
- rotation: RedBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
black_banner => BlockBehavior::default(), {
- rotation: BlackBannerRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
},
white_wall_banner => BlockBehavior::default(), {
facing: FacingCardinal::North,
@@ -3945,11 +3405,11 @@ make_block_states! {
powered: false,
},
crimson_sign => BlockBehavior::default(), {
- rotation: CrimsonSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
warped_sign => BlockBehavior::default(), {
- rotation: WarpedSignRotation::_0,
+ rotation: _0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15::_0,
waterlogged: false,
},
crimson_wall_sign => BlockBehavior::default(), {
diff --git a/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs
index 6f1a3665..26f43f49 100644
--- a/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_delete_chat_packet.rs
@@ -1,8 +1,41 @@
-use azalea_buf::McBuf;
+use azalea_buf::{McBuf, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable};
use azalea_crypto::MessageSignature;
use azalea_protocol_macros::ClientboundGamePacket;
+use std::io::{Cursor, Write};
#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
pub struct ClientboundDeleteChatPacket {
- pub message_signature: MessageSignature,
+ pub signature_or_id: SignatureOrId,
+}
+
+/// Messages can be deleted by either their signature or message id.
+pub enum SignatureOrId {
+ Signature(MessageSignature),
+ Id(u32),
+}
+
+impl McBufReadable for SignatureOrId {
+ fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
+ let id = u32::var_read_from(buf)?;
+ if id == 0 {
+ let full_signature = MessageSignature::read_from(buf)?;
+ Ok(SignatureOrId::Signature(full_signature))
+ } else {
+ Ok(SignatureOrId::Id(id - 1))
+ }
+ }
+}
+impl McBufWritable for SignatureOrId {
+ fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
+ match self {
+ SignatureOrId::Signature(full_signature) => {
+ 0u32.var_write_into(buf);
+ full_signature.write_into(buf);
+ }
+ SignatureOrId::Id(id) => {
+ (id + 1).var_write_into(buf);
+ }
+ }
+ Ok(())
+ }
}
diff --git a/azalea-protocol/src/packets/game/clientbound_disguised_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_disguised_chat_packet.rs
new file mode 100644
index 00000000..c0c1b195
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_disguised_chat_packet.rs
@@ -0,0 +1,11 @@
+use azalea_buf::McBuf;
+use azalea_chat::component::Component;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundDisguisedChatPacket {
+ pub message: Component,
+ // TODO: {'field': 'b.a', 'operation': 'write', 'type': 'varint'}
+ // TODO: {'field': 'b.b', 'operation': 'write', 'type': 'chatcomponent'}
+ pub chat_type: Option,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_explode_packet.rs b/azalea-protocol/src/packets/game/clientbound_explode_packet.rs
index 10a9e9a9..7953c704 100644
--- a/azalea-protocol/src/packets/game/clientbound_explode_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_explode_packet.rs
@@ -1,118 +1,17 @@
-use azalea_buf::{BufReadError, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable};
-use azalea_core::BlockPos;
+use azalea_buf::McBuf;
use azalea_protocol_macros::ClientboundGamePacket;
-use std::io::{Cursor, Write};
-#[derive(Clone, Debug, PartialEq, ClientboundGamePacket)]
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
pub struct ClientboundExplodePacket {
- pub x: f32,
- pub y: f32,
- pub z: f32,
+ pub x: f64,
+ pub y: f64,
+ pub z: f64,
pub power: f32,
- pub to_blow: Vec,
+ // TODO: {'operation': 'store', 'type': 'int', 'value': 'anp.b(this.a)', 'var': 'var2'}
+ // TODO: {'operation': 'store', 'type': 'int', 'value': 'anp.b(this.b)', 'var': 'var3'}
+ // TODO: {'operation': 'store', 'type': 'int', 'value': 'anp.b(this.c)', 'var': 'var4'}
+ pub to_blow: todo!(),
pub knockback_x: f32,
pub knockback_y: f32,
pub knockback_z: f32,
}
-
-impl McBufReadable for ClientboundExplodePacket {
- fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
- let x = f32::read_from(buf)?;
- let y = f32::read_from(buf)?;
- let z = f32::read_from(buf)?;
- let power = f32::read_from(buf)?;
-
- let x_floor = x.floor() as i32;
- let y_floor = y.floor() as i32;
- let z_floor = z.floor() as i32;
-
- let to_blow_len = u32::var_read_from(buf)?;
- let mut to_blow = Vec::with_capacity(to_blow_len as usize);
- for _ in 0..to_blow_len {
- // the bytes are offsets from the main x y z
- let x = x_floor + i8::read_from(buf)? as i32;
- let y = y_floor + i8::read_from(buf)? as i32;
- let z = z_floor + i8::read_from(buf)? as i32;
- to_blow.push(BlockPos { x, y, z });
- }
-
- let knockback_x = f32::read_from(buf)?;
- let knockback_y = f32::read_from(buf)?;
- let knockback_z = f32::read_from(buf)?;
-
- Ok(Self {
- x,
- y,
- z,
- power,
- to_blow,
- knockback_x,
- knockback_y,
- knockback_z,
- })
- }
-}
-
-impl McBufWritable for ClientboundExplodePacket {
- fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
- self.x.write_into(buf)?;
- self.y.write_into(buf)?;
- self.z.write_into(buf)?;
- self.power.write_into(buf)?;
-
- let to_blow_len = self.to_blow.len() as u32;
- to_blow_len.var_write_into(buf)?;
-
- let x_floor = self.x.floor() as i32;
- let y_floor = self.y.floor() as i32;
- let z_floor = self.z.floor() as i32;
-
- for pos in &self.to_blow {
- let x = (pos.x - x_floor) as i8;
- let y = (pos.y - y_floor) as i8;
- let z = (pos.z - z_floor) as i8;
- x.write_into(buf)?;
- y.write_into(buf)?;
- z.write_into(buf)?;
- }
-
- self.knockback_x.write_into(buf)?;
- self.knockback_y.write_into(buf)?;
- self.knockback_z.write_into(buf)?;
- Ok(())
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_read_write() {
- let packet = ClientboundExplodePacket {
- x: 123_456.0,
- y: 789_012.0,
- z: 345_678.0,
- power: 1_000.0,
- to_blow: vec![
- BlockPos {
- x: 123_456 + 1,
- y: 789_012 + 2,
- z: 345_678 - 127,
- },
- BlockPos {
- x: 123_456 + 4,
- y: 789_012 - 5,
- z: 345_678 + 6,
- },
- ],
- knockback_x: 1_000.0,
- knockback_y: 2_000.0,
- knockback_z: 3_000.0,
- };
- let mut buf = Vec::new();
- packet.write_into(&mut buf).unwrap();
- let packet2 = ClientboundExplodePacket::read_from(&mut Cursor::new(&buf)).unwrap();
- assert_eq!(packet, packet2);
- }
-}
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 3f75e74b..4b3d7cf3 100644
--- a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
@@ -1,161 +1,22 @@
use azalea_buf::McBuf;
-use azalea_chat::{
- component::Component,
- translatable_component::{StringOrComponent, TranslatableComponent},
-};
-use azalea_core::BitSet;
-use azalea_crypto::{MessageSignature, SignedMessageHeader};
+use azalea_chat::component::Component;
use azalea_protocol_macros::ClientboundGamePacket;
use uuid::Uuid;
#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
pub struct ClientboundPlayerChatPacket {
- pub message: PlayerChatMessage,
- pub chat_type: ChatTypeBound,
-}
-
-#[derive(Copy, Clone, Debug, McBuf, PartialEq, Eq)]
-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,
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub struct PlayerChatMessage {
- pub signed_header: SignedMessageHeader,
- pub header_signature: MessageSignature,
- pub signed_body: SignedMessageBody,
+ pub sender: Uuid,
+ #[var]
+ pub index: u32,
+ pub signature: Option>,
+ // TODO: {'field': 'd.a', 'operation': 'write', 'type': 'string'}
+ // TODO: {'field': 'd.b.toEpochMilli()', 'operation': 'write', 'type': 'long'}
+ // TODO: {'field': 'd.c', 'operation': 'write', 'type': 'long'}
+ pub body: todo!(),
pub unsigned_content: Option,
- pub filter_mask: FilterMask,
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub struct SignedMessageBody {
- pub content: ChatMessageContent,
- pub timestamp: u64,
- pub salt: u64,
- pub last_seen: Vec,
-}
-
-impl PlayerChatMessage {
- /// Returns the content of the message. If you want to get the Component
- /// for the whole message including the sender part, use
- /// [`ClientboundPlayerChatPacket::message`].
- pub fn content(&self, only_secure_chat: bool) -> Component {
- if only_secure_chat {
- return self
- .signed_body
- .content
- .decorated
- .clone()
- .unwrap_or_else(|| Component::from(self.signed_body.content.plain.clone()));
- }
- self.unsigned_content
- .clone()
- .unwrap_or_else(|| self.content(true))
- }
-}
-
-impl ClientboundPlayerChatPacket {
- /// Get the full message, including the sender part.
- pub fn message(&self, only_secure_chat: bool) -> Component {
- let sender = self.chat_type.name.clone();
- let content = self.message.content(only_secure_chat);
- let target = self.chat_type.target_name.clone();
-
- let translation_key = self.chat_type.chat_type.chat_translation_key();
-
- let mut args = vec![
- StringOrComponent::Component(sender),
- StringOrComponent::Component(content),
- ];
- if let Some(target) = target {
- args.push(StringOrComponent::Component(target));
- }
-
- let component = TranslatableComponent::new(translation_key.to_string(), args);
-
- Component::Translatable(component)
- }
-}
-
-impl ChatType {
- pub fn chat_translation_key(&self) -> &'static str {
- match self {
- ChatType::Chat => "chat.type.text",
- ChatType::SayCommand => "chat.type.announcement",
- ChatType::MsgCommandIncoming => "commands.message.display.incoming",
- ChatType::MsgCommandOutgoing => "commands.message.display.outgoing",
- ChatType::TeamMsgCommandIncoming => "chat.type.team.text",
- ChatType::TeamMsgCommandOutgoing => "chat.type.team.sent",
- ChatType::EmoteCommand => "chat.type.emote",
- }
- }
-
- pub fn narrator_translation_key(&self) -> &'static str {
- match self {
- ChatType::Chat => "chat.type.text.narrate",
- ChatType::SayCommand => "chat.type.text.narrate",
- ChatType::MsgCommandIncoming => "chat.type.text.narrate",
- ChatType::MsgCommandOutgoing => "chat.type.text.narrate",
- ChatType::TeamMsgCommandIncoming => "chat.type.text.narrate",
- ChatType::TeamMsgCommandOutgoing => "chat.type.text.narrate",
- ChatType::EmoteCommand => "chat.type.emote",
- }
- }
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub struct LastSeenMessagesEntry {
- pub profile_id: Uuid,
- pub last_signature: MessageSignature,
-}
-
-#[derive(Clone, Debug, McBuf, Default)]
-pub struct LastSeenMessagesUpdate {
- pub last_seen: Vec,
- pub last_received: Option,
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub struct ChatMessageContent {
- pub plain: String,
- /// Only sent if the decorated message is different than the plain.
- pub decorated: Option,
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub enum FilterMask {
- PassThrough,
- FullyFiltered,
- PartiallyFiltered(BitSet),
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use azalea_buf::McBufReadable;
- use std::io::Cursor;
-
- #[test]
- fn test_chat_type() {
- let chat_type_enum = ChatType::read_from(&mut Cursor::new(&[0x06])).unwrap();
- assert_eq!(chat_type_enum, ChatType::EmoteCommand);
- assert_eq!(
- ChatType::read_from(&mut Cursor::new(&[0x07])).unwrap(),
- ChatType::Chat
- );
- }
+ // TODO: {'field': 'f.f', 'operation': 'write', 'type': 'enum'}
+ // TODO: {'condition': 'f.f == sl$a.c', 'instructions': [{'field': 'f.e.toLongArray().length', 'operation': 'write', 'type': 'varint'}, {'field': 'f.e.toLongArray()', 'operation': 'write', 'type': 'long[]'}], 'operation': 'if'}
+ // TODO: {'field': 'g.a', 'operation': 'write', 'type': 'varint'}
+ // TODO: {'field': 'g.b', 'operation': 'write', 'type': 'chatcomponent'}
+ pub chat_type: Option,
}
diff --git a/azalea-protocol/src/packets/game/clientbound_player_info_remove_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_info_remove_packet.rs
new file mode 100644
index 00000000..841321c8
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_player_info_remove_packet.rs
@@ -0,0 +1,7 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundPlayerInfoRemovePacket {
+ pub profile_ids: Vec,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_player_info_update_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_info_update_packet.rs
new file mode 100644
index 00000000..ef5f2786
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_player_info_update_packet.rs
@@ -0,0 +1,5 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundPlayerInfoUpdatePacket {}
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 b1147305..b3c4808d 100644
--- a/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_server_data_packet.rs
@@ -6,6 +6,5 @@ use azalea_protocol_macros::ClientboundGamePacket;
pub struct ClientboundServerDataPacket {
pub motd: Option,
pub icon_base64: Option,
- pub previews_chat: bool,
pub enforces_secure_chat: bool,
}
diff --git a/azalea-protocol/src/packets/game/clientbound_update_enabled_features_packet.rs b/azalea-protocol/src/packets/game/clientbound_update_enabled_features_packet.rs
new file mode 100644
index 00000000..6311760f
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_update_enabled_features_packet.rs
@@ -0,0 +1,7 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundUpdateEnabledFeaturesPacket {
+ pub features: Vec,
+}
diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs
index ae66c0be..023bc8e0 100644
--- a/azalea-protocol/src/packets/game/mod.rs
+++ b/azalea-protocol/src/packets/game/mod.rs
@@ -10,9 +10,6 @@ pub mod clientbound_block_event_packet;
pub mod clientbound_block_update_packet;
pub mod clientbound_boss_event_packet;
pub mod clientbound_change_difficulty_packet;
-pub mod clientbound_chat_preview_packet;
-pub mod clientbound_command_suggestions_packet;
-pub mod clientbound_commands_packet;
pub mod clientbound_container_set_content_packet;
pub mod clientbound_container_set_data_packet;
pub mod clientbound_container_set_slot_packet;
@@ -22,6 +19,7 @@ pub mod clientbound_custom_payload_packet;
pub mod clientbound_custom_sound_packet;
pub mod clientbound_delete_chat_packet;
pub mod clientbound_disconnect_packet;
+pub mod clientbound_disguised_chat_packet;
pub mod clientbound_entity_event_packet;
pub mod clientbound_entity_velocity_packet;
pub mod clientbound_explode_packet;
@@ -47,12 +45,10 @@ pub mod clientbound_open_sign_editor_packet;
pub mod clientbound_ping_packet;
pub mod clientbound_place_ghost_recipe_packet;
pub mod clientbound_player_abilities_packet;
-pub mod clientbound_player_chat_header_packet;
pub mod clientbound_player_chat_packet;
-pub mod clientbound_player_combat_end_packet;
-pub mod clientbound_player_combat_enter_packet;
pub mod clientbound_player_combat_kill_packet;
-pub mod clientbound_player_info_packet;
+pub mod clientbound_player_info_remove_packet;
+pub mod clientbound_player_info_update_packet;
pub mod clientbound_player_look_at_packet;
pub mod clientbound_player_position_packet;
pub mod clientbound_recipe_packet;
@@ -75,10 +71,6 @@ pub mod clientbound_set_carried_item_packet;
pub mod clientbound_set_chunk_cache_center_packet;
pub mod clientbound_set_chunk_cache_radius_packet;
pub mod clientbound_set_default_spawn_position_packet;
-pub mod clientbound_set_display_chat_preview_packet;
-pub mod clientbound_set_display_objective_packet;
-pub mod clientbound_set_entity_data_packet;
-pub mod clientbound_set_entity_link_packet;
pub mod clientbound_set_entity_motion_packet;
pub mod clientbound_set_equipment_packet;
pub mod clientbound_set_experience_packet;
@@ -102,6 +94,7 @@ pub mod clientbound_take_item_entity_packet;
pub mod clientbound_teleport_entity_packet;
pub mod clientbound_update_advancements_packet;
pub mod clientbound_update_attributes_packet;
+pub mod clientbound_update_enabled_features_packet;
pub mod clientbound_update_mob_effect_packet;
pub mod clientbound_update_recipes_packet;
pub mod clientbound_update_tags_packet;
@@ -112,10 +105,6 @@ pub mod serverbound_change_difficulty_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_client_command_packet;
-pub mod serverbound_client_information_packet;
-pub mod serverbound_command_suggestion_packet;
pub mod serverbound_container_button_click_packet;
pub mod serverbound_container_click_packet;
pub mod serverbound_container_close_packet;
@@ -169,51 +158,47 @@ declare_state_packets!(
0x03: serverbound_chat_ack_packet::ServerboundChatAckPacket,
0x04: serverbound_chat_command_packet::ServerboundChatCommandPacket,
0x05: serverbound_chat_packet::ServerboundChatPacket,
- 0x06: serverbound_chat_preview_packet::ServerboundChatPreviewPacket,
- 0x07: serverbound_client_command_packet::ServerboundClientCommandPacket,
- 0x08: serverbound_client_information_packet::ServerboundClientInformationPacket,
- 0x09: serverbound_command_suggestion_packet::ServerboundCommandSuggestionPacket,
- 0x0a: serverbound_container_button_click_packet::ServerboundContainerButtonClickPacket,
- 0x0b: serverbound_container_click_packet::ServerboundContainerClickPacket,
- 0x0c: serverbound_container_close_packet::ServerboundContainerClosePacket,
- 0x0d: serverbound_custom_payload_packet::ServerboundCustomPayloadPacket,
- 0x0e: serverbound_edit_book_packet::ServerboundEditBookPacket,
- 0x0f: serverbound_entity_tag_query::ServerboundEntityTagQuery,
- 0x10: serverbound_interact_packet::ServerboundInteractPacket,
- 0x11: serverbound_jigsaw_generate_packet::ServerboundJigsawGeneratePacket,
- 0x12: serverbound_keep_alive_packet::ServerboundKeepAlivePacket,
- 0x13: serverbound_lock_difficulty_packet::ServerboundLockDifficultyPacket,
- 0x14: serverbound_move_player_pos_packet::ServerboundMovePlayerPosPacket,
- 0x15: serverbound_move_player_pos_rot_packet::ServerboundMovePlayerPosRotPacket,
- 0x16: serverbound_move_player_rot_packet::ServerboundMovePlayerRotPacket,
- 0x17: serverbound_move_player_status_only_packet::ServerboundMovePlayerStatusOnlyPacket,
- 0x18: serverbound_move_vehicle_packet::ServerboundMoveVehiclePacket,
- 0x19: serverbound_paddle_boat_packet::ServerboundPaddleBoatPacket,
- 0x1a: serverbound_pick_item_packet::ServerboundPickItemPacket,
- 0x1b: serverbound_place_recipe_packet::ServerboundPlaceRecipePacket,
- 0x1c: serverbound_player_abilities_packet::ServerboundPlayerAbilitiesPacket,
- 0x1d: serverbound_player_action_packet::ServerboundPlayerActionPacket,
- 0x1e: serverbound_player_command_packet::ServerboundPlayerCommandPacket,
- 0x1f: serverbound_player_input_packet::ServerboundPlayerInputPacket,
- 0x20: serverbound_pong_packet::ServerboundPongPacket,
- 0x21: serverbound_recipe_book_change_settings_packet::ServerboundRecipeBookChangeSettingsPacket,
- 0x22: serverbound_recipe_book_seen_recipe_packet::ServerboundRecipeBookSeenRecipePacket,
- 0x23: serverbound_rename_item_packet::ServerboundRenameItemPacket,
- 0x24: serverbound_resource_pack_packet::ServerboundResourcePackPacket,
- 0x25: serverbound_seen_advancements_packet::ServerboundSeenAdvancementsPacket,
- 0x26: serverbound_select_trade_packet::ServerboundSelectTradePacket,
- 0x27: serverbound_set_beacon_packet::ServerboundSetBeaconPacket,
- 0x28: serverbound_set_carried_item_packet::ServerboundSetCarriedItemPacket,
- 0x29: serverbound_set_command_block_packet::ServerboundSetCommandBlockPacket,
- 0x2a: serverbound_set_command_minecart_packet::ServerboundSetCommandMinecartPacket,
- 0x2b: serverbound_set_creative_mode_slot_packet::ServerboundSetCreativeModeSlotPacket,
- 0x2c: serverbound_set_jigsaw_block_packet::ServerboundSetJigsawBlockPacket,
- 0x2d: serverbound_set_structure_block_packet::ServerboundSetStructureBlockPacket,
- 0x2e: serverbound_sign_update_packet::ServerboundSignUpdatePacket,
- 0x2f: serverbound_swing_packet::ServerboundSwingPacket,
- 0x30: serverbound_teleport_to_entity_packet::ServerboundTeleportToEntityPacket,
- 0x31: serverbound_use_item_on_packet::ServerboundUseItemOnPacket,
- 0x32: serverbound_use_item_packet::ServerboundUseItemPacket,
+ 0x06: serverbound_container_button_click_packet::ServerboundContainerButtonClickPacket,
+ 0x07: serverbound_container_click_packet::ServerboundContainerClickPacket,
+ 0x08: serverbound_container_close_packet::ServerboundContainerClosePacket,
+ 0x09: serverbound_custom_payload_packet::ServerboundCustomPayloadPacket,
+ 0x0a: serverbound_edit_book_packet::ServerboundEditBookPacket,
+ 0x0b: serverbound_entity_tag_query::ServerboundEntityTagQuery,
+ 0x0c: serverbound_interact_packet::ServerboundInteractPacket,
+ 0x0d: serverbound_jigsaw_generate_packet::ServerboundJigsawGeneratePacket,
+ 0x0e: serverbound_keep_alive_packet::ServerboundKeepAlivePacket,
+ 0x0f: serverbound_lock_difficulty_packet::ServerboundLockDifficultyPacket,
+ 0x10: serverbound_move_player_pos_packet::ServerboundMovePlayerPosPacket,
+ 0x11: serverbound_move_player_pos_rot_packet::ServerboundMovePlayerPosRotPacket,
+ 0x12: serverbound_move_player_rot_packet::ServerboundMovePlayerRotPacket,
+ 0x13: serverbound_move_player_status_only_packet::ServerboundMovePlayerStatusOnlyPacket,
+ 0x14: serverbound_move_vehicle_packet::ServerboundMoveVehiclePacket,
+ 0x15: serverbound_paddle_boat_packet::ServerboundPaddleBoatPacket,
+ 0x16: serverbound_pick_item_packet::ServerboundPickItemPacket,
+ 0x17: serverbound_place_recipe_packet::ServerboundPlaceRecipePacket,
+ 0x18: serverbound_player_abilities_packet::ServerboundPlayerAbilitiesPacket,
+ 0x19: serverbound_player_action_packet::ServerboundPlayerActionPacket,
+ 0x1a: serverbound_player_command_packet::ServerboundPlayerCommandPacket,
+ 0x1b: serverbound_player_input_packet::ServerboundPlayerInputPacket,
+ 0x1c: serverbound_pong_packet::ServerboundPongPacket,
+ 0x1d: serverbound_recipe_book_change_settings_packet::ServerboundRecipeBookChangeSettingsPacket,
+ 0x1e: serverbound_recipe_book_seen_recipe_packet::ServerboundRecipeBookSeenRecipePacket,
+ 0x1f: serverbound_rename_item_packet::ServerboundRenameItemPacket,
+ 0x20: serverbound_resource_pack_packet::ServerboundResourcePackPacket,
+ 0x21: serverbound_seen_advancements_packet::ServerboundSeenAdvancementsPacket,
+ 0x22: serverbound_select_trade_packet::ServerboundSelectTradePacket,
+ 0x23: serverbound_set_beacon_packet::ServerboundSetBeaconPacket,
+ 0x24: serverbound_set_carried_item_packet::ServerboundSetCarriedItemPacket,
+ 0x25: serverbound_set_command_block_packet::ServerboundSetCommandBlockPacket,
+ 0x26: serverbound_set_command_minecart_packet::ServerboundSetCommandMinecartPacket,
+ 0x27: serverbound_set_creative_mode_slot_packet::ServerboundSetCreativeModeSlotPacket,
+ 0x28: serverbound_set_jigsaw_block_packet::ServerboundSetJigsawBlockPacket,
+ 0x29: serverbound_set_structure_block_packet::ServerboundSetStructureBlockPacket,
+ 0x2a: serverbound_sign_update_packet::ServerboundSignUpdatePacket,
+ 0x2b: serverbound_swing_packet::ServerboundSwingPacket,
+ 0x2c: serverbound_teleport_to_entity_packet::ServerboundTeleportToEntityPacket,
+ 0x2d: serverbound_use_item_on_packet::ServerboundUseItemOnPacket,
+ 0x2e: serverbound_use_item_packet::ServerboundUseItemPacket,
},
Clientbound => {
0x00: clientbound_add_entity_packet::ClientboundAddEntityPacket,
@@ -228,18 +213,16 @@ declare_state_packets!(
0x09: clientbound_block_update_packet::ClientboundBlockUpdatePacket,
0x0a: clientbound_boss_event_packet::ClientboundBossEventPacket,
0x0b: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket,
- 0x0c: clientbound_chat_preview_packet::ClientboundChatPreviewPacket,
- 0x0e: clientbound_command_suggestions_packet::ClientboundCommandSuggestionsPacket,
- 0x0f: clientbound_commands_packet::ClientboundCommandsPacket,
- 0x11: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket,
- 0x12: clientbound_container_set_data_packet::ClientboundContainerSetDataPacket,
- 0x13: clientbound_container_set_slot_packet::ClientboundContainerSetSlotPacket,
- 0x14: clientbound_cooldown_packet::ClientboundCooldownPacket,
- 0x15: clientbound_custom_chat_completions_packet::ClientboundCustomChatCompletionsPacket,
- 0x16: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket,
- 0x17: clientbound_custom_sound_packet::ClientboundCustomSoundPacket,
- 0x18: clientbound_delete_chat_packet::ClientboundDeleteChatPacket,
- 0x19: clientbound_disconnect_packet::ClientboundDisconnectPacket,
+ 0x0d: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket,
+ 0x0e: clientbound_container_set_data_packet::ClientboundContainerSetDataPacket,
+ 0x0f: clientbound_container_set_slot_packet::ClientboundContainerSetSlotPacket,
+ 0x10: clientbound_cooldown_packet::ClientboundCooldownPacket,
+ 0x11: clientbound_custom_chat_completions_packet::ClientboundCustomChatCompletionsPacket,
+ 0x12: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket,
+ 0x13: clientbound_custom_sound_packet::ClientboundCustomSoundPacket,
+ 0x14: clientbound_delete_chat_packet::ClientboundDeleteChatPacket,
+ 0x15: clientbound_disconnect_packet::ClientboundDisconnectPacket,
+ 0x16: clientbound_disguised_chat_packet::ClientboundDisguisedChatPacket,
0x1a: clientbound_entity_event_packet::ClientboundEntityEventPacket,
0x1b: clientbound_explode_packet::ClientboundExplodePacket,
0x1c: clientbound_forget_level_chunk_packet::ClientboundForgetLevelChunkPacket,
@@ -264,12 +247,10 @@ declare_state_packets!(
0x2f: clientbound_ping_packet::ClientboundPingPacket,
0x30: clientbound_place_ghost_recipe_packet::ClientboundPlaceGhostRecipePacket,
0x31: clientbound_player_abilities_packet::ClientboundPlayerAbilitiesPacket,
- 0x32: clientbound_player_chat_header_packet::ClientboundPlayerChatHeaderPacket,
- 0x33: clientbound_player_chat_packet::ClientboundPlayerChatPacket,
- 0x34: clientbound_player_combat_end_packet::ClientboundPlayerCombatEndPacket,
- 0x35: clientbound_player_combat_enter_packet::ClientboundPlayerCombatEnterPacket,
- 0x36: clientbound_player_combat_kill_packet::ClientboundPlayerCombatKillPacket,
- 0x37: clientbound_player_info_packet::ClientboundPlayerInfoPacket,
+ 0x32: clientbound_player_combat_kill_packet::ClientboundPlayerCombatKillPacket,
+ 0x32: clientbound_player_chat_packet::ClientboundPlayerChatPacket,
+ 0x36: clientbound_player_info_remove_packet::ClientboundPlayerInfoRemovePacket,
+ 0x37: clientbound_player_info_update_packet::ClientboundPlayerInfoUpdatePacket,
0x38: clientbound_player_look_at_packet::ClientboundPlayerLookAtPacket,
0x39: clientbound_player_position_packet::ClientboundPlayerPositionPacket,
0x3a: clientbound_recipe_packet::ClientboundRecipePacket,
@@ -293,34 +274,31 @@ declare_state_packets!(
0x4c: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket,
0x4c: clientbound_set_chunk_cache_radius_packet::ClientboundSetChunkCacheRadiusPacket,
0x4d: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket,
- 0x4e: clientbound_set_display_chat_preview_packet::ClientboundSetDisplayChatPreviewPacket,
- 0x4f: clientbound_set_display_objective_packet::ClientboundSetDisplayObjectivePacket,
- 0x50: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket,
- 0x51: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket,
- 0x52: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket,
- 0x52: clientbound_set_entity_motion_packet::ClientboundSetEntityMotionPacket,
- 0x53: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
- 0x54: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
- 0x55: clientbound_set_health_packet::ClientboundSetHealthPacket,
- 0x56: clientbound_set_objective_packet::ClientboundSetObjectivePacket,
- 0x57: clientbound_set_passengers_packet::ClientboundSetPassengersPacket,
- 0x58: clientbound_set_player_team_packet::ClientboundSetPlayerTeamPacket,
- 0x59: clientbound_set_score_packet::ClientboundSetScorePacket,
- 0x5a: clientbound_set_simulation_distance_packet::ClientboundSetSimulationDistancePacket,
- 0x5b: clientbound_set_subtitle_text_packet::ClientboundSetSubtitleTextPacket,
- 0x5c: clientbound_set_time_packet::ClientboundSetTimePacket,
- 0x5d: clientbound_set_title_text_packet::ClientboundSetTitleTextPacket,
- 0x5e: clientbound_set_titles_animation_packet::ClientboundSetTitlesAnimationPacket,
- 0x5f: clientbound_sound_entity_packet::ClientboundSoundEntityPacket,
- 0x60: clientbound_sound_packet::ClientboundSoundPacket,
- 0x61: clientbound_stop_sound_packet::ClientboundStopSoundPacket,
- 0x62: clientbound_system_chat_packet::ClientboundSystemChatPacket,
- 0x63: clientbound_tab_list_packet::ClientboundTabListPacket,
- 0x64: clientbound_tag_query_packet::ClientboundTagQueryPacket,
- 0x65: clientbound_take_item_entity_packet::ClientboundTakeItemEntityPacket,
- 0x66: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
- 0x67: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
- 0x68: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
+ 0x4e: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket,
+ 0x4e: clientbound_set_entity_motion_packet::ClientboundSetEntityMotionPacket,
+ 0x4f: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
+ 0x50: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
+ 0x51: clientbound_set_health_packet::ClientboundSetHealthPacket,
+ 0x52: clientbound_set_objective_packet::ClientboundSetObjectivePacket,
+ 0x53: clientbound_set_passengers_packet::ClientboundSetPassengersPacket,
+ 0x54: clientbound_set_player_team_packet::ClientboundSetPlayerTeamPacket,
+ 0x55: clientbound_set_score_packet::ClientboundSetScorePacket,
+ 0x56: clientbound_set_simulation_distance_packet::ClientboundSetSimulationDistancePacket,
+ 0x57: clientbound_set_subtitle_text_packet::ClientboundSetSubtitleTextPacket,
+ 0x58: clientbound_set_time_packet::ClientboundSetTimePacket,
+ 0x59: clientbound_set_title_text_packet::ClientboundSetTitleTextPacket,
+ 0x5a: clientbound_set_titles_animation_packet::ClientboundSetTitlesAnimationPacket,
+ 0x5b: clientbound_sound_entity_packet::ClientboundSoundEntityPacket,
+ 0x5c: clientbound_sound_packet::ClientboundSoundPacket,
+ 0x5d: clientbound_stop_sound_packet::ClientboundStopSoundPacket,
+ 0x5e: clientbound_system_chat_packet::ClientboundSystemChatPacket,
+ 0x5f: clientbound_tab_list_packet::ClientboundTabListPacket,
+ 0x60: clientbound_tag_query_packet::ClientboundTagQueryPacket,
+ 0x61: clientbound_take_item_entity_packet::ClientboundTakeItemEntityPacket,
+ 0x62: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
+ 0x63: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
+ 0x64: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
+ 0x68: clientbound_update_enabled_features_packet::ClientboundUpdateEnabledFeaturesPacket,
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
index 19c51de8..998e96d2 100644
--- a/azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs
+++ b/azalea-protocol/src/packets/game/serverbound_chat_ack_packet.rs
@@ -1,8 +1,8 @@
-use crate::packets::game::clientbound_player_chat_packet::LastSeenMessagesUpdate;
use azalea_buf::McBuf;
use azalea_protocol_macros::ServerboundGamePacket;
#[derive(Clone, Debug, McBuf, ServerboundGamePacket)]
pub struct ServerboundChatAckPacket {
- pub last_seen_messages: LastSeenMessagesUpdate,
+ #[var]
+ pub offset: u32,
}
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 a840e44f..412468f1 100644
--- a/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs
+++ b/azalea-protocol/src/packets/game/serverbound_chat_command_packet.rs
@@ -1,22 +1,5 @@
use azalea_buf::McBuf;
-use azalea_crypto::MessageSignature;
use azalea_protocol_macros::ServerboundGamePacket;
-use super::clientbound_player_chat_packet::LastSeenMessagesUpdate;
-
#[derive(Clone, Debug, McBuf, ServerboundGamePacket)]
-pub struct ServerboundChatCommandPacket {
- pub command: String,
- // TODO: Choose a real timestamp type
- pub timestamp: u64,
- pub salt: u64,
- pub argument_signatures: Vec,
- pub signed_preview: bool,
- pub last_seen_messages: LastSeenMessagesUpdate,
-}
-
-#[derive(Clone, Debug, McBuf)]
-pub struct ArgumentSignature {
- pub name: String,
- pub signature: MessageSignature,
-}
+pub struct ServerboundChatCommandPacket {}
diff --git a/azalea-protocol/src/packets/game/serverbound_chat_packet.rs b/azalea-protocol/src/packets/game/serverbound_chat_packet.rs
index 434474a2..1e9bc3dd 100644
--- a/azalea-protocol/src/packets/game/serverbound_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/serverbound_chat_packet.rs
@@ -1,14 +1,5 @@
-use crate::packets::game::clientbound_player_chat_packet::LastSeenMessagesUpdate;
use azalea_buf::McBuf;
-use azalea_crypto::MessageSignature;
use azalea_protocol_macros::ServerboundGamePacket;
#[derive(Clone, Debug, McBuf, ServerboundGamePacket)]
-pub struct ServerboundChatPacket {
- pub message: String,
- pub timestamp: u64,
- pub salt: u64,
- pub signature: MessageSignature,
- pub signed_preview: bool,
- pub last_seen_messages: LastSeenMessagesUpdate,
-}
+pub struct ServerboundChatPacket {}
diff --git a/azalea-protocol/src/packets/login/serverbound_hello_packet.rs b/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
index 5e1422fb..f4172a27 100755
--- a/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
+++ b/azalea-protocol/src/packets/login/serverbound_hello_packet.rs
@@ -2,37 +2,10 @@ use azalea_buf::McBuf;
use azalea_protocol_macros::ServerboundLoginPacket;
use uuid::Uuid;
-#[derive(Clone, Debug, ServerboundLoginPacket, McBuf, PartialEq, Eq)]
+#[derive(Clone, Debug, McBuf, ServerboundLoginPacket)]
pub struct ServerboundHelloPacket {
- pub username: String,
- pub public_key: Option,
+ pub name: String,
+ // TODO: {'field': 'b.b', 'operation': 'write', 'type': 'uuid'}
+ pub chat_session: Option<(u64, u32, Vec, u32, Vec)>,
pub profile_id: Option,
}
-
-#[derive(Clone, Debug, McBuf, PartialEq, Eq)]
-pub struct ProfilePublicKeyData {
- pub expires_at: u64,
- pub key: Vec,
- pub key_signature: Vec,
-}
-
-#[cfg(test)]
-mod tests {
- use std::io::Cursor;
-
- use super::*;
- use azalea_buf::{McBufReadable, McBufWritable};
-
- #[test]
- fn test_read_write() {
- let packet = ServerboundHelloPacket {
- username: "test".to_string(),
- public_key: None,
- profile_id: Some(Uuid::from_u128(0)),
- };
- let mut buf: Vec = Vec::new();
- packet.write_into(&mut buf).unwrap();
- let packet2 = ServerboundHelloPacket::read_from(&mut Cursor::new(&buf)).unwrap();
- assert_eq!(packet, packet2);
- }
-}
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs
index f7270b51..6066e729 100644
--- a/azalea-protocol/src/packets/mod.rs
+++ b/azalea-protocol/src/packets/mod.rs
@@ -9,7 +9,7 @@ use std::io::{Cursor, Write};
// TODO: rename the packet files to just like clientbound_add_entity instead of clientbound_add_entity_packet
-pub const PROTOCOL_VERSION: u32 = 760;
+pub const PROTOCOL_VERSION: u32 = 1073741928;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {
diff --git a/codegen/lib/code/utils.py b/codegen/lib/code/utils.py
index d91e0634..3cb73e15 100644
--- a/codegen/lib/code/utils.py
+++ b/codegen/lib/code/utils.py
@@ -80,8 +80,14 @@ def burger_type_to_rust_type(burger_type, field_name: Optional[str] = None, inst
enum_first_part_name)
print('enum_first_part_obfuscated_name',
enum_first_part_obfuscated_name)
- enum_name = mappings.get_method_type(
- enum_first_part_obfuscated_name, enum_field.split('.')[1].split('(')[0], '')
+ print('enum field', enum_field.split('.')[1].split('(')[0])
+ try:
+ enum_name = mappings.get_method_type(
+ enum_first_part_obfuscated_name, enum_field.split('.')[1].split('(')[0], '')
+ except KeyError:
+ # sometimes enums are fields instead of methods
+ enum_name = mappings.get_field_type(
+ enum_first_part_obfuscated_name, enum_field.split('.')[1].split('(')[0])
print('hm', enum_name)
else: