#[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, } #[derive(Deserialize, Debug, Clone)] #[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] pub struct ShapelessRecipe { pub result: RecipeItem, pub ingredients: Vec, } pub type Shape = Vec>; #[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, pub count: Option, }