use std::collections::HashMap; #[derive(Deserialize, Debug, Clone)] #[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] pub struct Block { pub id: u32, pub display_name: String, pub name: String, pub hardness: Option, pub stack_size: u8, pub diggable: bool, pub bounding_box: BoundingBox, pub material: Option, pub harvest_tool: Option>, pub variations: Option>, pub drops: Vec, pub transparent: bool, pub emit_light: u8, pub filter_light: u8, pub min_state_id: Option, pub max_state_id: Option, pub states: Option>, pub default_state: Option, #[serde(alias = "resistance")] pub blast_resistance: Option, } #[derive(Deserialize, Debug, Clone)] #[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] pub enum BoundingBox { Block, Empty, } #[derive(Deserialize, Debug, Clone)] #[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] pub struct Variation { pub metadata: u32, pub display_name: String, pub description: Option, } #[derive(Deserialize, Debug, Clone)] // The fields in this part of the schema are not camelCase. #[serde(rename_all(serialize = "snake_case"))] pub struct State { pub name: String, #[serde(alias = "type")] pub state_type: StateType, pub values: Option>, pub num_values: u32, } #[derive(Deserialize, Debug, Clone)] #[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] pub enum StateType { Enum, Bool, Int, }