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.1 KiB
Rust
47 lines
1.1 KiB
Rust
3 years ago
|
#[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 {
|
||
|
result: RecipeItem,
|
||
|
in_shape: Shape,
|
||
|
out_shape: Option<Shape>,
|
||
|
}
|
||
|
|
||
|
#[derive(Deserialize, Debug, Clone)]
|
||
|
#[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))]
|
||
|
pub struct ShapelessRecipe {
|
||
|
result: RecipeItem,
|
||
|
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 {
|
||
|
id: i32,
|
||
|
metadata: Option<i32>,
|
||
|
count: Option<u32>,
|
||
|
}
|