Files
Pumpkin/pumpkin-data/build/entity_status.rs
Alexander Medvedev 74c66e25e8 fix typo
and some compilation changes,
fix https://github.com/Pumpkin-MC/Pumpkin/issues/1010
2025-12-01 11:23:57 +01:00

32 lines
912 B
Rust

use std::{collections::BTreeMap, fs};
use heck::ToPascalCase;
use proc_macro2::{Span, TokenStream};
use quote::{format_ident, quote};
use syn::LitInt;
pub(crate) fn build() -> TokenStream {
println!("cargo:rerun-if-changed=../assets/entity_statuses.json");
let events: BTreeMap<String, u8> =
serde_json::from_str(&fs::read_to_string("../assets/entity_statuses.json").unwrap())
.expect("Failed to parse entity_statuses.json");
let variants: Vec<TokenStream> = events
.into_iter()
.map(|(event_name, id)| {
let name = format_ident!("{}", event_name.to_pascal_case());
let id_lit = LitInt::new(&id.to_string(), Span::call_site());
quote! {
#name = #id_lit
}
})
.collect();
quote! {
#[repr(u8)]
pub enum EntityStatus {
#(#variants),*
}
}
}