aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-01-25 22:16:59 +0000
committermat <git@matdoes.dev>2025-01-25 22:20:35 +0000
commitb6ddde99eaf03466744bc4448bc3a4117ea2cd86 (patch)
tree8739dd4b8a148b477dd475755b7905e29c36dbd9
parentf2d8d4211bc9a70a4963513217d211c125a6b03f (diff)
downloadazalea-drasl-b6ddde99eaf03466744bc4448bc3a4117ea2cd86.tar.xz
add ProtocolPacket::name function
-rwxr-xr-xazalea-protocol/azalea-protocol-macros/src/lib.rs30
-rwxr-xr-xazalea-protocol/src/packets/mod.rs6
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<Self, Box<ReadPacketError>>;