You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
Rust
47 lines
1.2 KiB
Rust
#[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>,
|
|
}
|