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::super::{
    predicate::Predicate,
    predicate_fragment::{entity::EntityPredicateEffect, location::LocationPredicateBlockState, *},
};
use crate::internal_prelude::*;

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[serde(tag = "trigger", content = "conditions")]
pub enum AdvancementPredicate {
    #[serde(rename = "minecraft:impossible")]
    Impossible,
    #[serde(rename = "minecraft:bee_nest_destroyed")]
    BeeNestDestroyed {
        block: Option<NamespacedId>,
        item: Option<ItemPredicateFragment>,
        num_bees_inside: Option<i32>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:bred_animals")]
    BredAnimals {
        child: Option<EntityPredicateFragment>,
        parent: Option<EntityPredicateFragment>,
        partner: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:brewed_potion")]
    BrewedPotion {
        potion: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:changed_dimension")]
    ChangedDimension {
        from: Option<NamespacedId>,
        to: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:channeled_lightning")]
    ChanneledLightning {
        victims: Vec<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:construct_beacon")]
    ConstructBeacon {
        level: Option<RangeOrNumber<i32>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:consume_item")]
    ConsumeItem {
        item: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:cured_zombie_villager")]
    CuredZombieVillager {
        villager: Option<EntityPredicateFragment>,
        zombie: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:effects_changed")]
    EffectsChanged {
        effects: HashMap<NamespacedId, EntityPredicateEffect>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:enchanted_item")]
    EnchantedItem {
        item: Option<ItemPredicateFragment>,
        levels: Option<RangeOrNumber<i32>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:enter_block")]
    EnterBlock {
        block: Option<NamespacedId>,
        state: HashMap<String, Vec<LocationPredicateBlockState>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:entity_hurt_player")]
    EntityHurtPlayer {
        damage: Option<DamagePredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:entity_killed_player")]
    EntityKilledPlayer {
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:filled_bucket")]
    FilledBucket {
        item: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:fishing_rod_hooked")]
    FishingRodHooked {
        entity: Option<EntityPredicateFragment>,
        item: Option<ItemPredicateFragment>,
        rod: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:hero_of_the_village")]
    HeroOfTheVillage {
        location: Option<LocationPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:inventory_changed")]
    InventoryChanged {
        items: Vec<ItemPredicateFragment>,
        slots: Option<InventoryChangedPredicateSlots>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:item_durability_changed")]
    ItemDurabilityChanged {
        delta: Option<RangeOrNumber<i32>>,
        durability: Option<RangeOrNumber<i32>>,
        item: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:item_used_on_block")]
    ItemUsedOnBlock {
        location: Option<LocationPredicateFragment>,
        item: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:killed_by_crossbow")]
    KilledByCrossbow {
        unique_entity_types: Option<RangeOrNumber<i32>>,
        victims: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:levitation")]
    Levitation {
        distance: Option<DistancePredicateFragment<i32>>,
        duration: Option<RangeOrNumber<i32>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:location")]
    Location {
        location: Option<LocationPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:nether_travel")]
    NetherTravel {
        distance: Option<DistancePredicateFragment<f32>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:placed_block")]
    PlacedBlock {
        block: Option<NamespacedId>,
        item: Option<ItemPredicateFragment>,
        location: Option<LocationPredicateFragment>,
        state: HashMap<String, Vec<LocationPredicateBlockState>>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:player_generates_container_loot")]
    PlayerGeneratesContainerLoot {
        loot_table: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:player_hurt_entity")]
    PlayerHurtEntity {
        damage: Option<DamagePredicateFragment>,
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:player_interacted_with_entity")]
    PlayerInteractedWithEntity {
        item: Option<ItemPredicateFragment>,
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:player_killed_entity")]
    PlayerKilledEntity {
        entity: Option<EntityPredicateFragment>,
        killing_blow: Option<DamageTypePredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:recipe_unlocked")]
    RecipeUnlocked {
        recipe: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:shot_crossbow")]
    ShotCrossbow {
        item: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:slept_in_bed")]
    SleptInBed {
        location: Option<LocationPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:slide_down_block")]
    SlideDownBlock {
        block: Option<NamespacedId>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:summoned_entity")]
    SummonedEntity {
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:tame_animal")]
    TameAnimal {
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:target_hit")]
    TargetHit {
        signal_strength: Option<i32>,
        projectile: Option<NamespacedId>,
        shooter: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:thrown_item_picked_up_by_entity")]
    ThrownItemPickedUpByEntity {
        item: Option<ItemPredicateFragment>,
        entity: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:tick")]
    Tick { player: Option<Predicate> },
    #[serde(rename = "minecraft:used_ender_eye")]
    UsedEnderEye {
        distance: RangeOrNumber<f64>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:used_totem")]
    UsedTotem {
        item: Option<ItemPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:villager_trade")]
    VillagerTrade {
        item: Option<ItemPredicateFragment>,
        villager: Option<EntityPredicateFragment>,
        player: Option<Predicate>,
    },
    #[serde(rename = "minecraft:voluntary_exile")]
    VoluntaryExile {
        location: Option<LocationPredicateFragment>,
        player: Option<Predicate>,
    },
}

#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct InventoryChangedPredicateSlots {
    pub empty: Option<RangeOrNumber<i32>>,
    pub full: Option<RangeOrNumber<i32>>,
    pub occupied: Option<RangeOrNumber<i32>>,
}