use basalt_derive::{Decode, Encode, EncodedSize, packet};
use basalt_types::{Position, Uuid, Vec3f, Vec3f64, Vec3i16};
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x3a)]
pub struct ServerboundPlayArmAnimation {
#[field(varint)]
pub hand: i32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x28)]
pub struct ServerboundPlayEntityAction {
#[field(varint)]
pub entity_id: i32,
#[field(varint)]
pub action_id: i32,
#[field(varint)]
pub jump_boost: i32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x17)]
pub struct ServerboundPlayQueryEntityNbt {
#[field(varint)]
pub transaction_id: i32,
#[field(varint)]
pub entity_id: i32,
}
#[derive(Debug, Clone, PartialEq, Encode, Decode, EncodedSize)]
pub enum ServerboundPlayUseEntityMouse {
#[variant(id = 0)]
Variant0 {
#[field(varint)]
hand: i32,
},
#[variant(id = 2)]
Variant2 {
x: f32,
y: f32,
z: f32,
#[field(varint)]
hand: i32,
},
}
impl Default for ServerboundPlayUseEntityMouse {
fn default() -> Self {
Self::Variant0 {
hand: Default::default(),
}
}
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x18)]
pub struct ServerboundPlayUseEntity {
#[field(varint)]
pub target: i32,
pub mouse: ServerboundPlayUseEntityMouse,
pub sneaking: bool,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x03)]
pub struct ClientboundPlayAnimation {
#[field(varint)]
pub entity_id: i32,
pub animation: u8,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x5e)]
pub struct ClientboundPlayAttachEntity {
pub entity_id: i32,
pub vehicle_id: i32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x06)]
pub struct ClientboundPlayBlockBreakAnimation {
#[field(varint)]
pub entity_id: i32,
pub location: Position,
pub destroy_stage: i8,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x76)]
pub struct ClientboundPlayCollect {
#[field(varint)]
pub collected_entity_id: i32,
#[field(varint)]
pub collector_entity_id: i32,
#[field(varint)]
pub pickup_item_count: i32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x1a)]
pub struct ClientboundPlayDamageEvent {
#[field(varint)]
pub entity_id: i32,
#[field(varint)]
pub source_type_id: i32,
#[field(varint)]
pub source_cause_id: i32,
#[field(varint)]
pub source_direct_id: i32,
#[field(optional)]
pub source_position: Option<Vec3f64>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x47)]
pub struct ClientboundPlayEntityDestroy {
#[field(length = "varint", element = "varint")]
pub entity_ids: Vec<i32>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x7d)]
pub struct ClientboundPlayEntityEffect {
#[field(varint)]
pub entity_id: i32,
#[field(varint)]
pub effect_id: i32,
#[field(varint)]
pub amplifier: i32,
#[field(varint)]
pub duration: i32,
pub flags: u8,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x60)]
pub struct ClientboundPlayEntityEquipment {
#[field(varint)]
pub entity_id: i32,
#[field(rest)]
pub equipments: Vec<u8>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x4d)]
pub struct ClientboundPlayEntityHeadRotation {
#[field(varint)]
pub entity_id: i32,
pub head_yaw: i8,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x32)]
pub struct ClientboundPlayEntityLook {
#[field(varint)]
pub entity_id: i32,
pub yaw: i8,
pub pitch: i8,
pub on_ground: bool,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x5d)]
pub struct ClientboundPlayEntityMetadata {
#[field(varint)]
pub entity_id: i32,
#[field(rest)]
pub metadata: Vec<u8>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x30)]
pub struct ClientboundPlayEntityMoveLook {
#[field(varint)]
pub entity_id: i32,
pub d_x: i16,
pub d_y: i16,
pub d_z: i16,
pub yaw: i8,
pub pitch: i8,
pub on_ground: bool,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x6e)]
pub struct ClientboundPlayEntitySoundEffect {
pub sound: Vec<u8>,
#[field(varint)]
pub sound_category: i32,
#[field(varint)]
pub entity_id: i32,
pub volume: f32,
pub pitch: f32,
pub seed: i64,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x1f)]
pub struct ClientboundPlayEntityStatus {
pub entity_id: i32,
pub entity_status: i8,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x77)]
pub struct ClientboundPlayEntityTeleport {
#[field(varint)]
pub entity_id: i32,
pub x: f64,
pub y: f64,
pub z: f64,
pub yaw: i8,
pub pitch: i8,
pub on_ground: bool,
}
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ClientboundPlayEntityUpdateAttributesPropertiesModifiers {
pub uuid: String,
pub amount: f64,
pub operation: i8,
}
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ClientboundPlayEntityUpdateAttributesProperties {
#[field(varint)]
pub key: i32,
pub value: f64,
#[field(length = "varint")]
pub modifiers: Vec<ClientboundPlayEntityUpdateAttributesPropertiesModifiers>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x7c)]
pub struct ClientboundPlayEntityUpdateAttributes {
#[field(varint)]
pub entity_id: i32,
#[field(length = "varint")]
pub properties: Vec<ClientboundPlayEntityUpdateAttributesProperties>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x5f)]
pub struct ClientboundPlayEntityVelocity {
#[field(varint)]
pub entity_id: i32,
pub velocity: Vec3i16,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x25)]
pub struct ClientboundPlayHurtAnimation {
#[field(varint)]
pub entity_id: i32,
pub yaw: f32,
}
#[derive(Debug, Clone, Default, PartialEq, Encode, Decode, EncodedSize)]
pub struct ClientboundPlayMoveMinecartSteps {
pub position: Vec3f,
pub movement: Vec3f,
pub yaw: f32,
pub pitch: f32,
pub weight: f32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x31)]
pub struct ClientboundPlayMoveMinecart {
#[field(varint)]
pub entity_id: i32,
#[field(length = "varint")]
pub steps: Vec<ClientboundPlayMoveMinecartSteps>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x2f)]
pub struct ClientboundPlayRelEntityMove {
#[field(varint)]
pub entity_id: i32,
pub d_x: i16,
pub d_y: i16,
pub d_z: i16,
pub on_ground: bool,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x48)]
pub struct ClientboundPlayRemoveEntityEffect {
#[field(varint)]
pub entity_id: i32,
#[field(varint)]
pub effect_id: i32,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x65)]
pub struct ClientboundPlaySetPassengers {
#[field(varint)]
pub entity_id: i32,
#[field(length = "varint", element = "varint")]
pub passengers: Vec<i32>,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x80)]
pub struct ClientboundPlaySetProjectilePower {
#[field(varint)]
pub id: i32,
pub acceleration_power: f64,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x01)]
pub struct ClientboundPlaySpawnEntity {
#[field(varint)]
pub entity_id: i32,
pub object_uuid: Uuid,
#[field(varint)]
pub r#type: i32,
pub x: f64,
pub y: f64,
pub z: f64,
pub pitch: i8,
pub yaw: i8,
pub head_pitch: i8,
#[field(varint)]
pub object_data: i32,
pub velocity: Vec3i16,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x02)]
pub struct ClientboundPlaySpawnEntityExperienceOrb {
#[field(varint)]
pub entity_id: i32,
pub x: f64,
pub y: f64,
pub z: f64,
pub count: i16,
}
#[derive(Debug, Clone, Default, PartialEq)]
#[packet(id = 0x20)]
pub struct ClientboundPlaySyncEntityPosition {
#[field(varint)]
pub entity_id: i32,
pub x: f64,
pub y: f64,
pub z: f64,
pub dx: f64,
pub dy: f64,
pub dz: f64,
pub yaw: f32,
pub pitch: f32,
pub on_ground: bool,
}