aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-05-07 21:44:11 -0500
committermat <github@matdoes.dev>2022-05-07 21:44:11 -0500
commitf62a681474df698d87deb43c71238b83a26f0f1f (patch)
tree68b26f053faf818cf6780688f41d7840cdcc7494 /azalea-protocol
parent98eee6d908a5651c55131b80dc3c153a6708052e (diff)
downloadazalea-drasl-f62a681474df698d87deb43c71238b83a26f0f1f.tar.xz
remove entities packet
Diffstat (limited to 'azalea-protocol')
-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
4 files changed, 32 insertions, 0 deletions
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,