aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xazalea-client/src/connect.rs3
-rwxr-xr-xazalea-protocol/src/mc_buf/read.rs12
-rwxr-xr-xazalea-protocol/src/mc_buf/write.rs11
-rw-r--r--azalea-protocol/src/packets/game/clientbound_remove_entities_packet.rs7
-rwxr-xr-xazalea-protocol/src/packets/game/mod.rs2
5 files changed, 35 insertions, 0 deletions
diff --git a/azalea-client/src/connect.rs b/azalea-client/src/connect.rs
index 8713ccda..5c2ee9b8 100755
--- a/azalea-client/src/connect.rs
+++ b/azalea-client/src/connect.rs
@@ -304,6 +304,9 @@ impl Client {
.write(ServerboundKeepAlivePacket { id: p.id }.get())
.await;
}
+ GamePacket::ClientboundRemoveEntitiesPacket(p) => {
+ println!("Got remove entities packet {:?}", p);
+ }
_ => panic!("Unexpected packet {:?}", packet),
}
println!();
diff --git a/azalea-protocol/src/mc_buf/read.rs b/azalea-protocol/src/mc_buf/read.rs
index 991bf53b..98a3ee53 100755
--- a/azalea-protocol/src/mc_buf/read.rs
+++ b/azalea-protocol/src/mc_buf/read.rs
@@ -360,6 +360,18 @@ impl McBufVarReadable for u16 {
}
}
+// Vec<T> varint
+impl<T: McBufVarReadable> McBufVarReadable for Vec<T> {
+ fn var_read_into(buf: &mut impl Read) -> Result<Self, String> {
+ let length = buf.read_varint()? as usize;
+ let mut contents = Vec::with_capacity(length);
+ for _ in 0..length {
+ contents.push(T::var_read_into(buf)?);
+ }
+ Ok(contents)
+ }
+}
+
// i64
impl McBufReadable for i64 {
fn read_into(buf: &mut impl Read) -> Result<Self, String> {
diff --git a/azalea-protocol/src/mc_buf/write.rs b/azalea-protocol/src/mc_buf/write.rs
index 66f129f1..e3e7a2be 100755
--- a/azalea-protocol/src/mc_buf/write.rs
+++ b/azalea-protocol/src/mc_buf/write.rs
@@ -257,6 +257,17 @@ impl McBufVarWritable for u16 {
}
}
+// Vec<T> varint
+impl<T: McBufVarWritable> McBufVarWritable for Vec<T> {
+ fn var_write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
+ u32::var_write_into(&(self.len() as u32), buf)?;
+ for i in self {
+ i.var_write_into(buf)?;
+ }
+ Ok(())
+ }
+}
+
// u8
impl McBufWritable for u8 {
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
diff --git a/azalea-protocol/src/packets/game/clientbound_remove_entities_packet.rs b/azalea-protocol/src/packets/game/clientbound_remove_entities_packet.rs
new file mode 100644
index 00000000..265d0c64
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_remove_entities_packet.rs
@@ -0,0 +1,7 @@
+use packet_macros::GamePacket;
+
+#[derive(Clone, Debug, GamePacket)]
+pub struct ClientboundRemoveEntitiesPacket {
+ #[var]
+ pub entity_ids: Vec<u32>,
+}
diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs
index 9f1bce0d..dd3a7527 100755
--- a/azalea-protocol/src/packets/game/mod.rs
+++ b/azalea-protocol/src/packets/game/mod.rs
@@ -20,6 +20,7 @@ pub mod clientbound_player_abilities_packet;
pub mod clientbound_player_info_packet;
pub mod clientbound_player_position_packet;
pub mod clientbound_recipe_packet;
+pub mod clientbound_remove_entities_packet;
pub mod clientbound_rotate_head_packet;
pub mod clientbound_set_carried_item_packet;
pub mod clientbound_set_chunk_cache_center;
@@ -68,6 +69,7 @@ declare_state_packets!(
0x36: clientbound_player_info_packet::ClientboundPlayerInfoPacket,
0x38: clientbound_player_position_packet::ClientboundPlayerPositionPacket,
0x39: clientbound_recipe_packet::ClientboundRecipePacket,
+ 0x3a: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket,
0x3e: clientbound_rotate_head_packet::ClientboundRotateHeadPacket,
0x48: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket,
0x49: clientbound_set_chunk_cache_center::ClientboundSetChunkCacheCenterPacket,