Pumpkin/pumpkin-data/build/chunk_status.rs
Alexander Medvedev fb13004b47 fix: apply clippy lints to workspace
also add contributors to /pumpkin command

Co-Authored-By: Fyor <90567841+fyordev@users.noreply.github.com>
Co-Authored-By: MartV0 <34748938+martv0@users.noreply.github.com>
Co-Authored-By: FabseGP <fabsegp@fabseman.space>
2026-01-28 00:52:47 +01:00

34 lines
965 B
Rust

use std::fs;
use heck::ToPascalCase;
use proc_macro2::TokenStream;
use quote::{format_ident, quote};
pub(crate) fn build() -> TokenStream {
println!("cargo:rerun-if-changed=../assets/chunk_status.json");
let chunk_status: Vec<String> =
serde_json::from_str(&fs::read_to_string("../assets/chunk_status.json").unwrap())
.expect("Failed to parse chunk_status.json");
let variants: Vec<TokenStream> = chunk_status
.into_iter()
.map(|status| {
let full_name = format!("minecraft:{status}");
let name = format_ident!("{}", status.to_pascal_case());
quote! {
#[serde(rename = #full_name)]
#name,
}
})
.collect();
quote! {
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy)]
pub enum ChunkStatus {
#(#variants)*
}
}
}