mineome 0.2.0

Mineome is a Rust library focusing on providing high quality type definitions for the data-driven aspects of Minecraft Java Edition.
Documentation
use super::{PositionPredicateFragment, Range, RangeOrNumber};
use crate::internal_prelude::*;

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct LocationPredicateFragment {
    pub block: Option<LocationPredicateBlock>,
    pub fluid: Option<LocationPredicateFluid>,

    pub biome: Option<String>,
    pub dimension: Option<String>,
    pub feature: Option<NamespacedId>,

    pub light: Option<RangeOrNumber<i32>>,
    pub position: Option<PositionPredicateFragment<f64>>,
}

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct LocationPredicateBlock {
    pub block: Option<NamespacedId>,
    pub tag: Option<NamespacedId>,
    pub nbt: Option<String>,
    pub state: HashMap<String, LocationPredicateBlockState>,
}

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[serde(untagged)]
pub enum LocationPredicateBlockState {
    Boolean(bool),
    Integer(i32),
    String(String),
    Range(Range<i32>),
}

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct LocationPredicateFluid {
    pub fluid: Option<NamespacedId>,
    pub tag: Option<NamespacedId>,
    pub state: HashMap<String, LocationPredicateBlockState>,
}