From 029fa33f557c8e0ff87a42683b17df82d801f6ef Mon Sep 17 00:00:00 2001 From: mat Date: Tue, 6 Sep 2022 23:55:39 -0500 Subject: [PATCH] fix bad enum macro generation --- azalea-buf/azalea-buf-macros/src/lib.rs | 46 +++++++++++-------- .../clientbound_set_player_team_packet.rs | 6 --- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/azalea-buf/azalea-buf-macros/src/lib.rs b/azalea-buf/azalea-buf-macros/src/lib.rs index fce3b515..07b2e5ef 100644 --- a/azalea-buf/azalea-buf-macros/src/lib.rs +++ b/azalea-buf/azalea-buf-macros/src/lib.rs @@ -53,6 +53,7 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt syn::Data::Enum(syn::DataEnum { variants, .. }) => { let mut match_contents = quote!(); let mut variant_discrim: u32 = 0; + let mut first = true; for variant in variants { let variant_name = &variant.ident; match &variant.discriminant.as_ref() { @@ -71,7 +72,11 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt } } None => { - variant_discrim += 1; + if first { + first = false; + } else { + variant_discrim += 1; + } } } let reader = match variant.fields { @@ -160,26 +165,31 @@ fn create_impl_mcbufwritable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt let mut is_data_enum = false; let mut match_arms = quote!(); let mut variant_discrim: u32 = 0; + let mut first = true; for variant in variants { - // figure out the discriminant - if let Some(discriminant) = &variant.discriminant { - variant_discrim = match &discriminant.1 { - syn::Expr::Lit(e) => match &e.lit { - syn::Lit::Int(i) => i.base10_parse().unwrap(), - _ => panic!("Error parsing enum discriminant as int"), - }, - syn::Expr::Unary(_) => { - panic!("Negative enum discriminants are not supported") + let variant_name = &variant.ident; + match &variant.discriminant.as_ref() { + Some(d) => { + variant_discrim = match &d.1 { + syn::Expr::Lit(e) => match &e.lit { + syn::Lit::Int(i) => i.base10_parse().unwrap(), + _ => panic!("Error parsing enum discriminant as int"), + }, + syn::Expr::Unary(_) => { + panic!("Negative enum discriminants are not supported") + } + _ => { + panic!("Error parsing enum discriminant as literal (is {:?})", d.1) + } } - _ => { - panic!( - "Error parsing enum discriminant as literal (is {:?})", - discriminant.1 - ) + } + None => { + if first { + first = false; + } else { + variant_discrim += 1; } - }; - } else { - variant_discrim += 1; + } } match &variant.fields { diff --git a/azalea-protocol/src/packets/game/clientbound_set_player_team_packet.rs b/azalea-protocol/src/packets/game/clientbound_set_player_team_packet.rs index 76025024..fe5a75f8 100644 --- a/azalea-protocol/src/packets/game/clientbound_set_player_team_packet.rs +++ b/azalea-protocol/src/packets/game/clientbound_set_player_team_packet.rs @@ -71,10 +71,4 @@ pub struct Parameters { pub player_suffix: Component, } -#[derive(McBuf, Copy, Clone, Debug)] -pub enum RenderType { - Integer, - Hearts, -} - type PlayerList = Vec;