minecraft-data-rs 0.8.1

A wrapper for minecraft-data
#[derive(Deserialize, Debug, Clone)]
#[serde(
    rename_all(deserialize = "camelCase", serialize = "snake_case"),
    untagged
)]
pub enum Recipe {
    Shaped(ShapedRecipe),
    Shapeless(ShapelessRecipe),
}

#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))]
pub struct ShapedRecipe {
    pub result: RecipeItem,
    pub in_shape: Shape,
    pub out_shape: Option<Shape>,
}

#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))]
pub struct ShapelessRecipe {
    pub result: RecipeItem,
    pub ingredients: Vec<RecipeItem>,
}

pub type Shape = Vec<Vec<RecipeItem>>;

#[derive(Deserialize, Debug, Clone)]
#[serde(
    rename_all(deserialize = "camelCase", serialize = "snake_case"),
    untagged
)]
pub enum RecipeItem {
    ID(u32),
    IDMetadataArray([u32; 2]),
    IDMetadataCountObject(IDMetadataCountObject),
    Null(Option<()>),
}

#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))]
pub struct IDMetadataCountObject {
    pub id: i32,
    pub metadata: Option<i32>,
    pub count: Option<u32>,
}