basalt-mc-protocol 0.2.1

Minecraft packet definitions and version-aware packet registry
Documentation
//! Play state — shared type definitions.
//!
//! Auto-generated by `cargo xt codegen` from minecraft-data.
//! Do not edit manually — changes will be overwritten.

use basalt_derive::{Decode, Encode, EncodedSize};
use basalt_types::{Slot, Vec3f64};

#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum RecipeDisplay {
    #[variant(id = 0)]
    CraftingShapeless {
        #[field(length = "varint")]
        ingredients: Vec<crate::packets::play::types::SlotDisplay>,
        result: crate::packets::play::types::SlotDisplay,
        crafting_station: crate::packets::play::types::SlotDisplay,
    },
    #[variant(id = 1)]
    CraftingShaped {
        #[field(varint)]
        width: i32,
        #[field(varint)]
        height: i32,
        #[field(length = "varint")]
        ingredients: Vec<crate::packets::play::types::SlotDisplay>,
        result: crate::packets::play::types::SlotDisplay,
        crafting_station: crate::packets::play::types::SlotDisplay,
    },
    #[variant(id = 2)]
    Furnace {
        ingredient: crate::packets::play::types::SlotDisplay,
        fuel: crate::packets::play::types::SlotDisplay,
        result: crate::packets::play::types::SlotDisplay,
        crafting_station: crate::packets::play::types::SlotDisplay,
        #[field(varint)]
        duration: i32,
        experience: f32,
    },
    #[variant(id = 3)]
    Stonecutter {
        ingredient: crate::packets::play::types::SlotDisplay,
        result: crate::packets::play::types::SlotDisplay,
        crafting_station: crate::packets::play::types::SlotDisplay,
    },
    #[variant(id = 4)]
    Smithing {
        template: crate::packets::play::types::SlotDisplay,
        base: crate::packets::play::types::SlotDisplay,
        addition: crate::packets::play::types::SlotDisplay,
        result: crate::packets::play::types::SlotDisplay,
        crafting_station: crate::packets::play::types::SlotDisplay,
    },
}

impl Default for RecipeDisplay {
    fn default() -> Self {
        Self::CraftingShapeless {
            ingredients: Default::default(),
            result: Default::default(),
            crafting_station: Default::default(),
        }
    }
}
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub enum SlotDisplay {
    #[variant(id = 0)]
    #[default]
    Empty,
    #[variant(id = 1)]
    AnyFuel,
    #[variant(id = 2)]
    Item {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 3)]
    ItemStack { data: Slot },
    #[variant(id = 4)]
    Tag { data: String },
    #[variant(id = 5)]
    SmithingTrim {
        base: Box<SlotDisplay>,
        material: Box<SlotDisplay>,
        pattern: Box<SlotDisplay>,
    },
    #[variant(id = 6)]
    WithRemainder {
        input: Box<SlotDisplay>,
        remainder: Box<SlotDisplay>,
    },
    #[variant(id = 7)]
    Composite {
        #[field(length = "varint")]
        data: Vec<SlotDisplay>,
    },
}

#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum Particle {
    #[variant(id = 1)]
    Block {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 2)]
    BlockMarker {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 13)]
    Dust {
        red: f32,
        green: f32,
        blue: f32,
        scale: f32,
    },
    #[variant(id = 14)]
    DustColorTransition {
        from_red: f32,
        from_green: f32,
        from_blue: f32,
        scale: f32,
        to_red: f32,
        to_green: f32,
        to_blue: f32,
    },
    #[variant(id = 20)]
    EntityEffect { data: i32 },
    #[variant(id = 28)]
    FallingDust {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 36)]
    SculkCharge { data: f32 },
    #[variant(id = 45)]
    Item { data: Slot },
    #[variant(id = 46)]
    Vibration {
        #[field(varint)]
        position_type: i32,
        position: Vec<u8>,
        #[field(varint)]
        ticks: i32,
    },
    #[variant(id = 47)]
    Trail { target: Vec3f64, color: u8 },
    #[variant(id = 101)]
    Shriek {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 107)]
    DustPillar {
        #[field(varint)]
        data: i32,
    },
    #[variant(id = 111)]
    BlockCrumble {
        #[field(varint)]
        data: i32,
    },
}

impl Default for Particle {
    fn default() -> Self {
        Self::Block {
            data: Default::default(),
        }
    }
}