From b6ddde99eaf03466744bc4448bc3a4117ea2cd86 Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 25 Jan 2025 22:16:59 +0000 Subject: [PATCH] add ProtocolPacket::name function --- .../azalea-protocol-macros/src/lib.rs | 30 +++++++++++++++++-- azalea-protocol/src/packets/mod.rs | 6 ++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/azalea-protocol/azalea-protocol-macros/src/lib.rs b/azalea-protocol/azalea-protocol-macros/src/lib.rs index 393f8de9..b536e73a 100755 --- a/azalea-protocol/azalea-protocol-macros/src/lib.rs +++ b/azalea-protocol/azalea-protocol-macros/src/lib.rs @@ -196,6 +196,8 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { let mut serverbound_enum_contents = quote!(); let mut clientbound_id_match_contents = quote!(); let mut serverbound_id_match_contents = quote!(); + let mut clientbound_name_match_contents = quote!(); + let mut serverbound_name_match_contents = quote!(); let mut clientbound_write_match_contents = quote!(); let mut serverbound_write_match_contents = quote!(); let mut clientbound_read_match_contents = quote!(); @@ -218,7 +220,10 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { #variant_name(#module_name::#struct_name), }); clientbound_id_match_contents.extend(quote! { - #clientbound_state_name::#variant_name(_packet) => #id, + #clientbound_state_name::#variant_name(..) => #id, + }); + clientbound_name_match_contents.extend(quote! { + #clientbound_state_name::#variant_name(..) => #packet_name_litstr, }); clientbound_write_match_contents.extend(quote! { #clientbound_state_name::#variant_name(packet) => packet.write(buf), @@ -267,7 +272,10 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { #variant_name(#module_name::#struct_name), }); serverbound_id_match_contents.extend(quote! { - #serverbound_state_name::#variant_name(_packet) => #id, + #serverbound_state_name::#variant_name(..) => #id, + }); + serverbound_name_match_contents.extend(quote! { + #serverbound_state_name::#variant_name(..) => #packet_name_litstr, }); serverbound_write_match_contents.extend(quote! { #serverbound_state_name::#variant_name(packet) => packet.write(buf), @@ -297,6 +305,9 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { serverbound_id_match_contents.extend(quote! { _ => unreachable!("This enum is empty and can't exist.") }); + serverbound_name_match_contents.extend(quote! { + _ => unreachable!("This enum is empty and can't exist.") + }); serverbound_write_match_contents.extend(quote! { _ => unreachable!("This enum is empty and can't exist.") }); @@ -305,6 +316,9 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { clientbound_id_match_contents.extend(quote! { _ => unreachable!("This enum is empty and can't exist.") }); + clientbound_name_match_contents.extend(quote! { + _ => unreachable!("This enum is empty and can't exist.") + }); clientbound_write_match_contents.extend(quote! { _ => unreachable!("This enum is empty and can't exist.") }); @@ -338,6 +352,12 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { } } + fn name(&self) -> &'static str { + match self { + #serverbound_name_match_contents + } + } + fn write(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> { match self { #serverbound_write_match_contents @@ -376,6 +396,12 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream { } } + fn name(&self) -> &'static str { + match self { + #clientbound_name_match_contents + } + } + fn write(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> { match self { #clientbound_write_match_contents diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs index 24a1437c..5f28e340 100755 --- a/azalea-protocol/src/packets/mod.rs +++ b/azalea-protocol/src/packets/mod.rs @@ -44,6 +44,12 @@ where { fn id(&self) -> u32; + /// Returns Mojang's resource name for the packet. + /// + /// This doesn't include the "minecraft:" prefix, it just returns a string + /// like `pong`. + fn name(&self) -> &'static str; + /// Read a packet by its id, `ConnectionProtocol`, and flow fn read(id: u32, buf: &mut Cursor<&[u8]>) -> Result>;