diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2024-04-23 10:34:50 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-23 10:34:50 -0500 |
| commit | 1d80f531b74bc3b31023753acb81b35efcdadd73 (patch) | |
| tree | 675635c7c41fbb456e3e0dd7b9f09c7211d356f0 /azalea-buf/azalea-buf-macros/src/write.rs | |
| parent | 0ddad8bd9c7c0e8846aec8bc90c95416418c9a63 (diff) | |
| download | azalea-drasl-1d80f531b74bc3b31023753acb81b35efcdadd73.tar.xz | |
1.20.5 (#127)
* 23w51b
* make recalculate_near_end_of_path public
so other plugins can do .after(recalculate_near_end_of_path)
* update to 24w03a i think
* start implementing 24w13a
* registries work (but a lot of packets are still broken)
* fix recipes and commands packets
* i love codecs :D i am not going insane :D mojang's java is very readable :D
* item components are "implemented" meowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeowmeow
* update to 1.20.5-pre3
* fix all the broken packets and clippy (mojang please don't do an update like this again or i will murder someone)
* 1.20.5-rc1
* fix failing tests
* 1.20.5
Diffstat (limited to 'azalea-buf/azalea-buf-macros/src/write.rs')
| -rw-r--r-- | azalea-buf/azalea-buf-macros/src/write.rs | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/azalea-buf/azalea-buf-macros/src/write.rs b/azalea-buf/azalea-buf-macros/src/write.rs index 35c2d49a..4d31f39e 100644 --- a/azalea-buf/azalea-buf-macros/src/write.rs +++ b/azalea-buf/azalea-buf-macros/src/write.rs @@ -39,23 +39,33 @@ fn write_named_fields( pub fn create_impl_mcbufwritable(ident: &Ident, data: &Data) -> proc_macro2::TokenStream { match data { - syn::Data::Struct(syn::DataStruct { fields, .. }) => { - let syn::Fields::Named(FieldsNamed { named, .. }) = fields else { - panic!("#[derive(McBuf)] can only be used on structs with named fields") - }; - - let write_fields = - write_named_fields(named, Some(&Ident::new("self", Span::call_site()))); + syn::Data::Struct(syn::DataStruct { fields, .. }) => match fields { + syn::Fields::Named(FieldsNamed { named, .. }) => { + let write_fields = + write_named_fields(named, Some(&Ident::new("self", Span::call_site()))); - quote! { - impl azalea_buf::McBufWritable for #ident { - fn write_into(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> { - #write_fields - Ok(()) + quote! { + impl azalea_buf::McBufWritable for #ident { + fn write_into(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> { + #write_fields + Ok(()) + } } } } - } + syn::Fields::Unit => { + quote! { + impl azalea_buf::McBufWritable for #ident { + fn write_into(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> { + Ok(()) + } + } + } + } + _ => { + panic!("#[derive(McBuf)] can only be used on structs with named fields") + } + }, syn::Data::Enum(syn::DataEnum { variants, .. }) => { // remember whether it's a data variant so we can do an optimization later let mut is_data_enum = false; |
