From e74ed047dbaf3877db4a89a2d589e992abd0bb11 Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Thu, 14 Aug 2025 20:40:13 -0500 Subject: Sneaking (#237) * start implementing sneaking * fix horizontal_collision being inverted and cleanup * clippy * change dimensions and eye height based on pose * proper support for automatically crouching in certain cases * fix anticheat issues * add line to changelog and update a comment --- azalea-entity/src/attributes.rs | 34 +-- azalea-entity/src/data.rs | 12 +- azalea-entity/src/dimensions.rs | 242 ++++++++++++--------- azalea-entity/src/lib.rs | 95 ++++----- azalea-entity/src/metadata.rs | 458 ++++++++++++++++++++++++---------------- azalea-entity/src/plugin/mod.rs | 53 ++++- 6 files changed, 538 insertions(+), 356 deletions(-) (limited to 'azalea-entity/src') diff --git a/azalea-entity/src/attributes.rs b/azalea-entity/src/attributes.rs index c2a22e9b..021fcd56 100644 --- a/azalea-entity/src/attributes.rs +++ b/azalea-entity/src/attributes.rs @@ -9,23 +9,26 @@ use thiserror::Error; #[derive(Clone, Debug, Component)] pub struct Attributes { - pub speed: AttributeInstance, + pub movement_speed: AttributeInstance, pub sneaking_speed: AttributeInstance, pub attack_speed: AttributeInstance, pub water_movement_efficiency: AttributeInstance, pub block_interaction_range: AttributeInstance, pub entity_interaction_range: AttributeInstance, + + pub step_height: AttributeInstance, } #[derive(Clone, Debug)] pub struct AttributeInstance { pub base: f64, modifiers_by_id: HashMap, + // TODO: add cache } #[derive(Clone, Debug, Error)] -#[error("A modifier with this UUID is already present.")] +#[error("A modifier with this ID is already present.")] pub struct AlreadyPresentError; impl AttributeInstance { @@ -40,13 +43,12 @@ impl AttributeInstance { let mut total = self.base; for modifier in self.modifiers_by_id.values() { match modifier.operation { - AttributeModifierOperation::Addition => total += modifier.amount, - AttributeModifierOperation::MultiplyBase => total += self.base * modifier.amount, - _ => {} - } - if let AttributeModifierOperation::MultiplyTotal = modifier.operation { - total *= 1.0 + modifier.amount; - } + AttributeModifierOperation::AddValue => total += modifier.amount, + AttributeModifierOperation::AddMultipliedBase => { + total += modifier.amount * self.base + } + AttributeModifierOperation::AddMultipliedTotal => total *= 1. + modifier.amount, + }; } total } @@ -85,30 +87,30 @@ pub struct AttributeModifier { #[derive(Clone, Debug, Copy, AzBuf)] pub enum AttributeModifierOperation { - Addition, - MultiplyBase, - MultiplyTotal, + AddValue, + AddMultipliedBase, + AddMultipliedTotal, } pub fn sprinting_modifier() -> AttributeModifier { AttributeModifier { id: ResourceLocation::new("sprinting"), amount: 0.3f32 as f64, - operation: AttributeModifierOperation::MultiplyTotal, + operation: AttributeModifierOperation::AddMultipliedTotal, } } pub fn base_attack_speed_modifier(amount: f64) -> AttributeModifier { AttributeModifier { id: ResourceLocation::new("base_attack_speed"), amount, - operation: AttributeModifierOperation::Addition, + operation: AttributeModifierOperation::AddValue, } } pub fn creative_block_interaction_range_modifier() -> AttributeModifier { AttributeModifier { id: ResourceLocation::new("creative_mode_block_range"), amount: 0.5, - operation: AttributeModifierOperation::Addition, + operation: AttributeModifierOperation::AddValue, } } @@ -116,6 +118,6 @@ pub fn creative_entity_interaction_range_modifier() -> AttributeModifier { AttributeModifier { id: ResourceLocation::new("creative_mode_entity_range"), amount: 2.0, - operation: AttributeModifierOperation::Addition, + operation: AttributeModifierOperation::AddValue, } } diff --git a/azalea-entity/src/data.rs b/azalea-entity/src/data.rs index 436c6571..35e8b4c5 100644 --- a/azalea-entity/src/data.rs +++ b/azalea-entity/src/data.rs @@ -152,9 +152,19 @@ pub enum Pose { Sleeping, Swimming, SpinAttack, - Sneaking, + Crouching, LongJumping, Dying, + Croaking, + UsingTongue, + Sitting, + Roaring, + Sniffing, + Emerging, + Digging, + Sliding, + Shooting, + Inhaling, } #[derive(Debug, Clone, AzBuf)] diff --git a/azalea-entity/src/dimensions.rs b/azalea-entity/src/dimensions.rs index 68e9903d..92c03e61 100644 --- a/azalea-entity/src/dimensions.rs +++ b/azalea-entity/src/dimensions.rs @@ -1,15 +1,43 @@ use azalea_core::{aabb::AABB, position::Vec3}; use azalea_registry::EntityKind; +use bevy_ecs::component::Component; -#[derive(Debug, Default, Clone)] +use crate::Pose; + +/// A component that contains the size of an entity and their eye height. +#[derive(Component, Debug, Default, Clone)] pub struct EntityDimensions { pub width: f32, pub height: f32, + /// The offset of the entity's eyes from their coordinates. + /// + /// This is used to calculate the camera position for players, when + /// spectating an entity, and when raycasting from the entity. + /// + /// The default eye height for a player is 1.62 blocks. + pub eye_height: f32, + /// Whether the entity isn't allowed to be scaled. + pub fixed: bool, } impl EntityDimensions { - pub fn new(width: f32, height: f32) -> Self { - Self { width, height } + pub const fn new(width: f32, height: f32) -> Self { + Self { + width, + height, + eye_height: default_eye_height(height), + fixed: false, + } + } + pub const fn fixed(self) -> Self { + Self { + fixed: true, + ..self + } + } + + pub const fn eye_height(self, eye_height: f32) -> Self { + Self { eye_height, ..self } } pub fn make_bounding_box(&self, pos: Vec3) -> AABB { @@ -22,55 +50,59 @@ impl EntityDimensions { } } +const fn default_eye_height(height: f32) -> f32 { + height * 0.85 +} + impl From for EntityDimensions { fn from(entity: EntityKind) -> Self { // this match statement is automatically generated by codegen/genentities.py, // don't edit it manually! match entity { - EntityKind::AcaciaBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::AcaciaChestBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::Allay => EntityDimensions::new(0.35, 0.6), + EntityKind::AcaciaBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::AcaciaChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::Allay => EntityDimensions::new(0.35, 0.6).eye_height(0.36), EntityKind::AreaEffectCloud => EntityDimensions::new(6.0, 0.5), - EntityKind::Armadillo => EntityDimensions::new(0.7, 0.65), - EntityKind::ArmorStand => EntityDimensions::new(0.5, 1.975), - EntityKind::Arrow => EntityDimensions::new(0.5, 0.5), - EntityKind::Axolotl => EntityDimensions::new(0.75, 0.42), - EntityKind::BambooChestRaft => EntityDimensions::new(1.375, 0.5625), - EntityKind::BambooRaft => EntityDimensions::new(1.375, 0.5625), - EntityKind::Bat => EntityDimensions::new(0.5, 0.9), - EntityKind::Bee => EntityDimensions::new(0.7, 0.6), - EntityKind::BirchBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::BirchChestBoat => EntityDimensions::new(1.375, 0.5625), + EntityKind::Armadillo => EntityDimensions::new(0.7, 0.65).eye_height(0.26), + EntityKind::ArmorStand => EntityDimensions::new(0.5, 1.975).eye_height(1.7775), + EntityKind::Arrow => EntityDimensions::new(0.5, 0.5).eye_height(0.13), + EntityKind::Axolotl => EntityDimensions::new(0.75, 0.42).eye_height(0.2751), + EntityKind::BambooChestRaft => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::BambooRaft => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::Bat => EntityDimensions::new(0.5, 0.9).eye_height(0.45), + EntityKind::Bee => EntityDimensions::new(0.7, 0.6).eye_height(0.3), + EntityKind::BirchBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::BirchChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), EntityKind::Blaze => EntityDimensions::new(0.6, 1.8), EntityKind::BlockDisplay => EntityDimensions::new(0.0, 0.0), - EntityKind::Bogged => EntityDimensions::new(0.6, 1.99), - EntityKind::Breeze => EntityDimensions::new(0.6, 1.77), - EntityKind::BreezeWindCharge => EntityDimensions::new(0.3125, 0.3125), - EntityKind::Camel => EntityDimensions::new(1.7, 2.375), - EntityKind::Cat => EntityDimensions::new(0.6, 0.7), - EntityKind::CaveSpider => EntityDimensions::new(0.7, 0.5), - EntityKind::CherryBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::CherryChestBoat => EntityDimensions::new(1.375, 0.5625), + EntityKind::Bogged => EntityDimensions::new(0.6, 1.99).eye_height(1.74), + EntityKind::Breeze => EntityDimensions::new(0.6, 1.77).eye_height(1.3452), + EntityKind::BreezeWindCharge => EntityDimensions::new(0.3125, 0.3125).eye_height(0.0), + EntityKind::Camel => EntityDimensions::new(1.7, 2.375).eye_height(2.275), + EntityKind::Cat => EntityDimensions::new(0.6, 0.7).eye_height(0.35), + EntityKind::CaveSpider => EntityDimensions::new(0.7, 0.5).eye_height(0.45), + EntityKind::CherryBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::CherryChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), EntityKind::ChestMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::Chicken => EntityDimensions::new(0.4, 0.7), - EntityKind::Cod => EntityDimensions::new(0.5, 0.3), + EntityKind::Chicken => EntityDimensions::new(0.4, 0.7).eye_height(0.644), + EntityKind::Cod => EntityDimensions::new(0.5, 0.3).eye_height(0.195), EntityKind::CommandBlockMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::Cow => EntityDimensions::new(0.9, 1.4), - EntityKind::Creaking => EntityDimensions::new(0.9, 2.7), + EntityKind::Cow => EntityDimensions::new(0.9, 1.4).eye_height(1.3), + EntityKind::Creaking => EntityDimensions::new(0.9, 2.7).eye_height(2.3), EntityKind::Creeper => EntityDimensions::new(0.6, 1.7), - EntityKind::DarkOakBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::DarkOakChestBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::Dolphin => EntityDimensions::new(0.9, 0.6), - EntityKind::Donkey => EntityDimensions::new(1.39648, 1.5), + EntityKind::DarkOakBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::DarkOakChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::Dolphin => EntityDimensions::new(0.9, 0.6).eye_height(0.3), + EntityKind::Donkey => EntityDimensions::new(1.39648, 1.5).eye_height(1.425), EntityKind::DragonFireball => EntityDimensions::new(1.0, 1.0), - EntityKind::Drowned => EntityDimensions::new(0.6, 1.95), + EntityKind::Drowned => EntityDimensions::new(0.6, 1.95).eye_height(1.74), EntityKind::Egg => EntityDimensions::new(0.25, 0.25), - EntityKind::ElderGuardian => EntityDimensions::new(1.9975, 1.9975), + EntityKind::ElderGuardian => EntityDimensions::new(1.9975, 1.9975).eye_height(0.99875), EntityKind::EndCrystal => EntityDimensions::new(2.0, 2.0), EntityKind::EnderDragon => EntityDimensions::new(16.0, 8.0), EntityKind::EnderPearl => EntityDimensions::new(0.25, 0.25), - EntityKind::Enderman => EntityDimensions::new(0.6, 2.9), - EntityKind::Endermite => EntityDimensions::new(0.4, 0.3), + EntityKind::Enderman => EntityDimensions::new(0.6, 2.9).eye_height(2.55), + EntityKind::Endermite => EntityDimensions::new(0.4, 0.3).eye_height(0.13), EntityKind::Evoker => EntityDimensions::new(0.6, 1.95), EntityKind::EvokerFangs => EntityDimensions::new(0.5, 0.8), EntityKind::ExperienceBottle => EntityDimensions::new(0.25, 0.25), @@ -80,104 +112,120 @@ impl From for EntityDimensions { EntityKind::Fireball => EntityDimensions::new(1.0, 1.0), EntityKind::FireworkRocket => EntityDimensions::new(0.25, 0.25), EntityKind::FishingBobber => EntityDimensions::new(0.25, 0.25), - EntityKind::Fox => EntityDimensions::new(0.6, 0.7), + EntityKind::Fox => EntityDimensions::new(0.6, 0.7).eye_height(0.4), EntityKind::Frog => EntityDimensions::new(0.5, 0.5), EntityKind::FurnaceMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::Ghast => EntityDimensions::new(4.0, 4.0), - EntityKind::Giant => EntityDimensions::new(3.6, 12.0), - EntityKind::GlowItemFrame => EntityDimensions::new(0.5, 0.5), - EntityKind::GlowSquid => EntityDimensions::new(0.8, 0.8), + EntityKind::Ghast => EntityDimensions::new(4.0, 4.0).eye_height(2.6), + EntityKind::Giant => EntityDimensions::new(3.6, 12.0).eye_height(10.44), + EntityKind::GlowItemFrame => EntityDimensions::new(0.5, 0.5).eye_height(0.0), + EntityKind::GlowSquid => EntityDimensions::new(0.8, 0.8).eye_height(0.4), EntityKind::Goat => EntityDimensions::new(0.9, 1.3), - EntityKind::Guardian => EntityDimensions::new(0.85, 0.85), - EntityKind::HappyGhast => EntityDimensions::new(4.0, 4.0), + EntityKind::Guardian => EntityDimensions::new(0.85, 0.85).eye_height(0.425), + EntityKind::HappyGhast => EntityDimensions::new(4.0, 4.0).eye_height(2.6), EntityKind::Hoglin => EntityDimensions::new(1.39648, 1.4), EntityKind::HopperMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::Horse => EntityDimensions::new(1.39648, 1.6), - EntityKind::Husk => EntityDimensions::new(0.6, 1.95), + EntityKind::Horse => EntityDimensions::new(1.39648, 1.6).eye_height(1.52), + EntityKind::Husk => EntityDimensions::new(0.6, 1.95).eye_height(1.74), EntityKind::Illusioner => EntityDimensions::new(0.6, 1.95), EntityKind::Interaction => EntityDimensions::new(0.0, 0.0), EntityKind::IronGolem => EntityDimensions::new(1.4, 2.7), - EntityKind::Item => EntityDimensions::new(0.25, 0.25), + EntityKind::Item => EntityDimensions::new(0.25, 0.25).eye_height(0.2125), EntityKind::ItemDisplay => EntityDimensions::new(0.0, 0.0), - EntityKind::ItemFrame => EntityDimensions::new(0.5, 0.5), - EntityKind::JungleBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::JungleChestBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::LeashKnot => EntityDimensions::new(0.375, 0.5), + EntityKind::ItemFrame => EntityDimensions::new(0.5, 0.5).eye_height(0.0), + EntityKind::JungleBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::JungleChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::LeashKnot => EntityDimensions::new(0.375, 0.5).eye_height(0.0625), EntityKind::LightningBolt => EntityDimensions::new(0.0, 0.0), EntityKind::LingeringPotion => EntityDimensions::new(0.25, 0.25), - EntityKind::Llama => EntityDimensions::new(0.9, 1.87), + EntityKind::Llama => EntityDimensions::new(0.9, 1.87).eye_height(1.7765), EntityKind::LlamaSpit => EntityDimensions::new(0.25, 0.25), - EntityKind::MagmaCube => EntityDimensions::new(0.52, 0.52), - EntityKind::MangroveBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::MangroveChestBoat => EntityDimensions::new(1.375, 0.5625), + EntityKind::MagmaCube => EntityDimensions::new(0.52, 0.52).eye_height(0.325), + EntityKind::MangroveBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::MangroveChestBoat => { + EntityDimensions::new(1.375, 0.5625).eye_height(0.5625) + } EntityKind::Marker => EntityDimensions::new(0.0, 0.0), EntityKind::Minecart => EntityDimensions::new(0.98, 0.7), - EntityKind::Mooshroom => EntityDimensions::new(0.9, 1.4), - EntityKind::Mule => EntityDimensions::new(1.39648, 1.6), - EntityKind::OakBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::OakChestBoat => EntityDimensions::new(1.375, 0.5625), + EntityKind::Mooshroom => EntityDimensions::new(0.9, 1.4).eye_height(1.3), + EntityKind::Mule => EntityDimensions::new(1.39648, 1.6).eye_height(1.52), + EntityKind::OakBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::OakChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), EntityKind::Ocelot => EntityDimensions::new(0.6, 0.7), EntityKind::OminousItemSpawner => EntityDimensions::new(0.25, 0.25), EntityKind::Painting => EntityDimensions::new(0.5, 0.5), - EntityKind::PaleOakBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::PaleOakChestBoat => EntityDimensions::new(1.375, 0.5625), + EntityKind::PaleOakBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::PaleOakChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), EntityKind::Panda => EntityDimensions::new(1.3, 1.25), - EntityKind::Parrot => EntityDimensions::new(0.5, 0.9), - EntityKind::Phantom => EntityDimensions::new(0.9, 0.5), + EntityKind::Parrot => EntityDimensions::new(0.5, 0.9).eye_height(0.54), + EntityKind::Phantom => EntityDimensions::new(0.9, 0.5).eye_height(0.175), EntityKind::Pig => EntityDimensions::new(0.9, 0.9), - EntityKind::Piglin => EntityDimensions::new(0.6, 1.95), - EntityKind::PiglinBrute => EntityDimensions::new(0.6, 1.95), + EntityKind::Piglin => EntityDimensions::new(0.6, 1.95).eye_height(1.79), + EntityKind::PiglinBrute => EntityDimensions::new(0.6, 1.95).eye_height(1.79), EntityKind::Pillager => EntityDimensions::new(0.6, 1.95), - EntityKind::Player => EntityDimensions::new(0.6, 1.8), + EntityKind::Player => EntityDimensions::new(0.6, 1.8).eye_height(1.62), EntityKind::PolarBear => EntityDimensions::new(1.4, 1.4), - EntityKind::Pufferfish => EntityDimensions::new(0.7, 0.7), + EntityKind::Pufferfish => EntityDimensions::new(0.7, 0.7).eye_height(0.455), EntityKind::Rabbit => EntityDimensions::new(0.4, 0.5), EntityKind::Ravager => EntityDimensions::new(1.95, 2.2), - EntityKind::Salmon => EntityDimensions::new(0.7, 0.4), - EntityKind::Sheep => EntityDimensions::new(0.9, 1.3), - EntityKind::Shulker => EntityDimensions::new(1.0, 1.0), + EntityKind::Salmon => EntityDimensions::new(0.7, 0.4).eye_height(0.26), + EntityKind::Sheep => EntityDimensions::new(0.9, 1.3).eye_height(1.235), + EntityKind::Shulker => EntityDimensions::new(1.0, 1.0).eye_height(0.5), EntityKind::ShulkerBullet => EntityDimensions::new(0.3125, 0.3125), - EntityKind::Silverfish => EntityDimensions::new(0.4, 0.3), - EntityKind::Skeleton => EntityDimensions::new(0.6, 1.99), - EntityKind::SkeletonHorse => EntityDimensions::new(1.39648, 1.6), - EntityKind::Slime => EntityDimensions::new(0.52, 0.52), + EntityKind::Silverfish => EntityDimensions::new(0.4, 0.3).eye_height(0.13), + EntityKind::Skeleton => EntityDimensions::new(0.6, 1.99).eye_height(1.74), + EntityKind::SkeletonHorse => EntityDimensions::new(1.39648, 1.6).eye_height(1.52), + EntityKind::Slime => EntityDimensions::new(0.52, 0.52).eye_height(0.325), EntityKind::SmallFireball => EntityDimensions::new(0.3125, 0.3125), - EntityKind::Sniffer => EntityDimensions::new(1.9, 1.75), - EntityKind::SnowGolem => EntityDimensions::new(0.7, 1.9), + EntityKind::Sniffer => EntityDimensions::new(1.9, 1.75).eye_height(1.05), + EntityKind::SnowGolem => EntityDimensions::new(0.7, 1.9).eye_height(1.7), EntityKind::Snowball => EntityDimensions::new(0.25, 0.25), EntityKind::SpawnerMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::SpectralArrow => EntityDimensions::new(0.5, 0.5), - EntityKind::Spider => EntityDimensions::new(1.4, 0.9), + EntityKind::SpectralArrow => EntityDimensions::new(0.5, 0.5).eye_height(0.13), + EntityKind::Spider => EntityDimensions::new(1.4, 0.9).eye_height(0.65), EntityKind::SplashPotion => EntityDimensions::new(0.25, 0.25), - EntityKind::SpruceBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::SpruceChestBoat => EntityDimensions::new(1.375, 0.5625), - EntityKind::Squid => EntityDimensions::new(0.8, 0.8), - EntityKind::Stray => EntityDimensions::new(0.6, 1.99), + EntityKind::SpruceBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::SpruceChestBoat => EntityDimensions::new(1.375, 0.5625).eye_height(0.5625), + EntityKind::Squid => EntityDimensions::new(0.8, 0.8).eye_height(0.4), + EntityKind::Stray => EntityDimensions::new(0.6, 1.99).eye_height(1.74), EntityKind::Strider => EntityDimensions::new(0.9, 1.7), - EntityKind::Tadpole => EntityDimensions::new(0.4, 0.3), + EntityKind::Tadpole => EntityDimensions::new(0.4, 0.3).eye_height(0.195), EntityKind::TextDisplay => EntityDimensions::new(0.0, 0.0), - EntityKind::Tnt => EntityDimensions::new(0.98, 0.98), + EntityKind::Tnt => EntityDimensions::new(0.98, 0.98).eye_height(0.15), EntityKind::TntMinecart => EntityDimensions::new(0.98, 0.7), - EntityKind::TraderLlama => EntityDimensions::new(0.9, 1.87), - EntityKind::Trident => EntityDimensions::new(0.5, 0.5), - EntityKind::TropicalFish => EntityDimensions::new(0.5, 0.4), + EntityKind::TraderLlama => EntityDimensions::new(0.9, 1.87).eye_height(1.7765), + EntityKind::Trident => EntityDimensions::new(0.5, 0.5).eye_height(0.13), + EntityKind::TropicalFish => EntityDimensions::new(0.5, 0.4).eye_height(0.26), EntityKind::Turtle => EntityDimensions::new(1.2, 0.4), - EntityKind::Vex => EntityDimensions::new(0.4, 0.8), - EntityKind::Villager => EntityDimensions::new(0.6, 1.95), + EntityKind::Vex => EntityDimensions::new(0.4, 0.8).eye_height(0.51875), + EntityKind::Villager => EntityDimensions::new(0.6, 1.95).eye_height(1.62), EntityKind::Vindicator => EntityDimensions::new(0.6, 1.95), - EntityKind::WanderingTrader => EntityDimensions::new(0.6, 1.95), + EntityKind::WanderingTrader => EntityDimensions::new(0.6, 1.95).eye_height(1.62), EntityKind::Warden => EntityDimensions::new(0.9, 2.9), - EntityKind::WindCharge => EntityDimensions::new(0.3125, 0.3125), - EntityKind::Witch => EntityDimensions::new(0.6, 1.95), + EntityKind::WindCharge => EntityDimensions::new(0.3125, 0.3125).eye_height(0.0), + EntityKind::Witch => EntityDimensions::new(0.6, 1.95).eye_height(1.62), EntityKind::Wither => EntityDimensions::new(0.9, 3.5), - EntityKind::WitherSkeleton => EntityDimensions::new(0.7, 2.4), + EntityKind::WitherSkeleton => EntityDimensions::new(0.7, 2.4).eye_height(2.1), EntityKind::WitherSkull => EntityDimensions::new(0.3125, 0.3125), - EntityKind::Wolf => EntityDimensions::new(0.6, 0.85), + EntityKind::Wolf => EntityDimensions::new(0.6, 0.85).eye_height(0.68), EntityKind::Zoglin => EntityDimensions::new(1.39648, 1.4), - EntityKind::Zombie => EntityDimensions::new(0.6, 1.95), - EntityKind::ZombieHorse => EntityDimensions::new(1.39648, 1.6), - EntityKind::ZombieVillager => EntityDimensions::new(0.6, 1.95), - EntityKind::ZombifiedPiglin => EntityDimensions::new(0.6, 1.95), + EntityKind::Zombie => EntityDimensions::new(0.6, 1.95).eye_height(1.74), + EntityKind::ZombieHorse => EntityDimensions::new(1.39648, 1.6).eye_height(1.52), + EntityKind::ZombieVillager => EntityDimensions::new(0.6, 1.95).eye_height(1.74), + EntityKind::ZombifiedPiglin => EntityDimensions::new(0.6, 1.95).eye_height(1.79), } } } + +/// Calculate the dimensions that an entity with the given kind and pose would +/// have.i +pub fn calculate_dimensions(kind: EntityKind, pose: Pose) -> EntityDimensions { + match (kind, pose) { + (_, Pose::Sleeping) => EntityDimensions::new(0.2, 0.2).fixed().eye_height(0.2), + (EntityKind::Player, Pose::FallFlying) => EntityDimensions::new(0.6, 0.6).eye_height(0.4), + (EntityKind::Player, Pose::Swimming) => EntityDimensions::new(0.6, 0.6).eye_height(0.4), + (EntityKind::Player, Pose::SpinAttack) => EntityDimensions::new(0.6, 0.6).eye_height(0.4), + (EntityKind::Player, Pose::Crouching) => EntityDimensions::new(0.6, 1.5).eye_height(1.27), + (EntityKind::Player, Pose::Dying) => EntityDimensions::new(0.2, 1.2).eye_height(1.62), + _ => EntityDimensions::from(kind), + } +} diff --git a/azalea-entity/src/lib.rs b/azalea-entity/src/lib.rs index 645a5534..30e00ccb 100644 --- a/azalea-entity/src/lib.rs +++ b/azalea-entity/src/lib.rs @@ -2,7 +2,7 @@ pub mod attributes; mod data; -mod dimensions; +pub mod dimensions; mod effects; mod enchantments; pub mod metadata; @@ -31,12 +31,12 @@ use azalea_world::{ChunkStorage, InstanceName}; use bevy_ecs::{bundle::Bundle, component::Component}; pub use data::*; use derive_more::{Deref, DerefMut}; -pub use dimensions::EntityDimensions; use plugin::indexing::EntityChunkPos; use uuid::Uuid; use vec_delta_codec::VecDeltaCodec; use self::attributes::AttributeInstance; +use crate::dimensions::EntityDimensions; pub use crate::plugin::*; pub fn move_relative( @@ -353,8 +353,6 @@ pub struct Physics { /// and sets to 0 if we're not trying to jump. pub no_jump_delay: u32, - /// The width and height of the entity. - pub dimensions: EntityDimensions, /// The bounding box of the entity. This is more than just width and height, /// unlike dimensions. pub bounding_box: AABB, @@ -362,21 +360,21 @@ pub struct Physics { pub has_impulse: bool, pub horizontal_collision: bool, - // pub minor_horizontal_collision: bool, + // TODO: implement minor_horizontal_collision + pub minor_horizontal_collision: bool, pub vertical_collision: bool, pub water_fluid_height: f64, pub lava_fluid_height: f64, pub was_touching_water: bool, - // TODO: implement fall_distance - pub fall_distance: f32, + pub fall_distance: f64, // TODO: implement remaining_fire_ticks pub remaining_fire_ticks: i32, } impl Physics { - pub fn new(dimensions: EntityDimensions, pos: Vec3) -> Self { + pub fn new(dimensions: &EntityDimensions, pos: Vec3) -> Self { Self { velocity: Vec3::ZERO, vec_delta_codec: VecDeltaCodec::new(pos), @@ -393,11 +391,11 @@ impl Physics { no_jump_delay: 0, bounding_box: dimensions.make_bounding_box(pos), - dimensions, has_impulse: false, horizontal_collision: false, + minor_horizontal_collision: false, vertical_collision: false, water_fluid_height: 0., @@ -455,41 +453,6 @@ impl Physics { #[derive(Component, Copy, Clone, Default)] pub struct Dead; -/// A component that contains the offset of the entity's eyes from the entity -/// coordinates. -/// -/// This is used to calculate the camera position for players, when spectating -/// an entity, and when raycasting from the entity. -/// -/// The default eye height for a player is 1.62 blocks. -#[derive(Component, Clone, Copy, Debug, PartialEq, Deref, DerefMut)] -pub struct EyeHeight(f32); -impl EyeHeight { - pub fn new(height: f32) -> Self { - Self(height) - } -} -impl From for f32 { - fn from(value: EyeHeight) -> Self { - value.0 - } -} -impl From for f64 { - fn from(value: EyeHeight) -> Self { - value.0 as f64 - } -} -impl From<&EyeHeight> for f32 { - fn from(value: &EyeHeight) -> Self { - value.0 - } -} -impl From<&EyeHeight> for f64 { - fn from(value: &EyeHeight) -> Self { - value.0 as f64 - } -} - /// A component NewType for [`azalea_registry::EntityKind`]. /// /// Most of the time, you should be using `azalea_registry::EntityKind` @@ -511,9 +474,10 @@ pub struct EntityBundle { pub physics: Physics, pub direction: LookDirection, - pub eye_height: EyeHeight, + pub dimensions: EntityDimensions, pub attributes: Attributes, pub jumping: Jumping, + pub crouching: Crouching, pub fluid_on_eyes: FluidOnEyes, pub on_climbable: OnClimbable, } @@ -526,12 +490,6 @@ impl EntityBundle { world_name: ResourceLocation, ) -> Self { let dimensions = EntityDimensions::from(kind); - let eye_height = match kind { - // TODO: codegen hardcoded eye heights, search withEyeHeight with mojmap - // also, eye height should change depending on pose (like sneaking, swimming, etc) - azalea_registry::EntityKind::Player => 1.62, - _ => dimensions.height * 0.85, - }; Self { kind: EntityKindComponent(kind), @@ -540,13 +498,14 @@ impl EntityBundle { position: Position(pos), chunk_pos: EntityChunkPos(ChunkPos::from(&pos)), last_sent_position: LastSentPosition(pos), - physics: Physics::new(dimensions, pos), - eye_height: EyeHeight(eye_height), + physics: Physics::new(&dimensions, pos), + dimensions, direction: LookDirection::default(), attributes: default_attributes(EntityKind::Player), jumping: Jumping(false), + crouching: Crouching(false), fluid_on_eyes: FluidOnEyes(FluidKind::Empty), on_climbable: OnClimbable(false), } @@ -557,12 +516,13 @@ pub fn default_attributes(_entity_kind: EntityKind) -> Attributes { // TODO: do the correct defaults for everything, some // entities have different defaults Attributes { - speed: AttributeInstance::new(0.1), + movement_speed: AttributeInstance::new(0.1f32 as f64), sneaking_speed: AttributeInstance::new(0.3), attack_speed: AttributeInstance::new(4.0), water_movement_efficiency: AttributeInstance::new(0.0), block_interaction_range: AttributeInstance::new(4.5), entity_interaction_range: AttributeInstance::new(3.0), + step_height: AttributeInstance::new(0.6), } } @@ -586,3 +546,30 @@ impl FluidOnEyes { #[derive(Component, Clone, Copy, Debug, PartialEq, Deref, DerefMut)] pub struct OnClimbable(bool); + +/// A component that indicates whether the player is currently sneaking. +/// +/// If the entity isn't a local player, then this is just a shortcut for +/// checking if the [`Pose`] is `Crouching`. +/// +/// If you need to modify this value, use +/// `azalea_client::PhysicsState::trying_to_crouch` or `Client::set_crouching` +/// instead. +#[derive(Component, Clone, Copy, Deref, DerefMut, Default)] +pub struct Crouching(bool); + +/// A component that contains the abilities the player has, like flying +/// or instantly breaking blocks. This is only present on local players. +#[derive(Clone, Debug, Component, Default)] +pub struct PlayerAbilities { + pub invulnerable: bool, + pub flying: bool, + pub can_fly: bool, + /// Whether the player can instantly break blocks and can duplicate blocks + /// in their inventory. + pub instant_break: bool, + + pub flying_speed: f32, + /// Used for the fov + pub walking_speed: f32, +} diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs index 422eabd8..6ccbad1a 100644 --- a/azalea-entity/src/metadata.rs +++ b/azalea-entity/src/metadata.rs @@ -35,7 +35,7 @@ impl From for UpdateMetadataError { #[derive(Component, Deref, DerefMut, Clone, Copy)] pub struct OnFire(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ShiftKeyDown(pub bool); +pub struct AbstractEntityShiftKeyDown(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] pub struct Sprinting(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] @@ -101,7 +101,7 @@ impl Default for AcaciaBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -158,7 +158,7 @@ impl Default for AcaciaChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -251,7 +251,7 @@ impl Default for AllayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -328,7 +328,7 @@ impl Default for AreaEffectCloudMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -394,7 +394,9 @@ impl Default for ArmadilloMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -514,7 +516,7 @@ impl Default for ArmorStandMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -594,7 +596,7 @@ impl Default for ArrowMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -673,7 +675,9 @@ impl Default for AxolotlMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -742,7 +746,7 @@ impl Default for BambooChestRaftMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -799,7 +803,7 @@ impl Default for BambooRaftMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -863,7 +867,7 @@ impl Default for BatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -953,7 +957,9 @@ impl Default for BeeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1023,7 +1029,7 @@ impl Default for BirchBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1080,7 +1086,7 @@ impl Default for BirchChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1148,7 +1154,7 @@ impl Default for BlazeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1247,7 +1253,7 @@ impl Default for BlockDisplayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1342,7 +1348,7 @@ impl Default for BoggedMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1411,7 +1417,7 @@ impl Default for BreezeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1471,7 +1477,7 @@ impl Default for BreezeWindChargeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1548,7 +1554,9 @@ impl Default for CamelMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1659,7 +1667,9 @@ impl Default for CatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1741,7 +1751,9 @@ impl Default for CaveSpiderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1807,7 +1819,7 @@ impl Default for CherryBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1864,7 +1876,7 @@ impl Default for CherryChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1925,7 +1937,7 @@ impl Default for ChestMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -1993,7 +2005,9 @@ impl Default for ChickenMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2066,7 +2080,7 @@ impl Default for CodMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2143,7 +2157,7 @@ impl Default for CommandBlockMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2213,7 +2227,9 @@ impl Default for CowMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2308,7 +2324,7 @@ impl Default for CreakingMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2398,7 +2414,7 @@ impl Default for CreeperMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2465,7 +2481,7 @@ impl Default for DarkOakBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2522,7 +2538,7 @@ impl Default for DarkOakChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2595,7 +2611,7 @@ impl Default for DolphinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2674,7 +2690,8 @@ impl Default for DonkeyMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: + AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2745,7 +2762,7 @@ impl Default for DragonFireballMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2806,7 +2823,9 @@ impl Default for DrownedMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2874,7 +2893,7 @@ impl Default for EggMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -2937,7 +2956,9 @@ impl Default for ElderGuardianMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3012,7 +3033,7 @@ impl Default for EndCrystalMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3069,7 +3090,7 @@ impl Default for EnderDragonMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3130,7 +3151,7 @@ impl Default for EnderPearlMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3205,7 +3226,7 @@ impl Default for EndermanMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3276,7 +3297,7 @@ impl Default for EndermiteMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3352,7 +3373,9 @@ impl Default for EvokerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3416,7 +3439,7 @@ impl Default for EvokerFangsMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3463,7 +3486,7 @@ impl Default for ExperienceBottleMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3518,7 +3541,7 @@ impl Default for ExperienceOrbMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3570,7 +3593,7 @@ impl Default for EyeOfEnderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3622,7 +3645,7 @@ impl Default for FallingBlockMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3674,7 +3697,7 @@ impl Default for FireballMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3738,7 +3761,7 @@ impl Default for FireworkRocketMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3798,7 +3821,7 @@ impl Default for FishingBobberMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3831,7 +3854,7 @@ pub struct Sleeping(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] pub struct Pouncing(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Crouching(pub bool); +pub struct FoxCrouching(pub bool); #[derive(Component, Deref, DerefMut, Clone, Copy)] pub struct FoxInterested(pub bool); #[derive(Component, Deref, DerefMut, Clone)] @@ -3857,7 +3880,7 @@ impl Fox { entity.insert(Defending(bitfield & 0x80 != 0)); entity.insert(Sleeping(bitfield & 0x20 != 0)); entity.insert(Pouncing(bitfield & 0x10 != 0)); - entity.insert(Crouching(bitfield & 0x4 != 0)); + entity.insert(FoxCrouching(bitfield & 0x4 != 0)); entity.insert(FoxInterested(bitfield & 0x8 != 0)); } 19 => { @@ -3882,7 +3905,7 @@ pub struct FoxMetadataBundle { defending: Defending, sleeping: Sleeping, pouncing: Pouncing, - crouching: Crouching, + fox_crouching: FoxCrouching, fox_interested: FoxInterested, trusted_id_0: TrustedId0, trusted_id_1: TrustedId1, @@ -3904,7 +3927,9 @@ impl Default for FoxMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -3941,7 +3966,7 @@ impl Default for FoxMetadataBundle { defending: Defending(false), sleeping: Sleeping(false), pouncing: Pouncing(false), - crouching: Crouching(false), + fox_crouching: FoxCrouching(false), fox_interested: FoxInterested(false), trusted_id_0: TrustedId0(None), trusted_id_1: TrustedId1(None), @@ -3998,7 +4023,9 @@ impl Default for FrogMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4072,7 +4099,7 @@ impl Default for FurnaceMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4135,7 +4162,7 @@ impl Default for GhastMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4202,7 +4229,7 @@ impl Default for GiantMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4270,7 +4297,7 @@ impl Default for GlowItemFrameMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4335,7 +4362,9 @@ impl Default for GlowSquidMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4426,7 +4455,9 @@ impl Default for GoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4507,7 +4538,7 @@ impl Default for GuardianMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4591,7 +4622,9 @@ impl Default for HappyGhastMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4671,7 +4704,9 @@ impl Default for HoglinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4738,7 +4773,7 @@ impl Default for HopperMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4808,7 +4843,9 @@ impl Default for HorseMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4886,7 +4923,9 @@ impl Default for HuskMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -4962,7 +5001,9 @@ impl Default for IllusionerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5044,7 +5085,7 @@ impl Default for InteractionMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5105,7 +5146,7 @@ impl Default for IronGolemMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5171,7 +5212,7 @@ impl Default for ItemMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5231,7 +5272,7 @@ impl Default for ItemDisplayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5325,7 +5366,7 @@ impl Default for ItemFrameMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5377,7 +5418,7 @@ impl Default for JungleBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5434,7 +5475,7 @@ impl Default for JungleChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5487,7 +5528,7 @@ impl Default for LeashKnotMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5532,7 +5573,7 @@ impl Default for LightningBoltMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5579,7 +5620,7 @@ impl Default for LingeringPotionMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5654,7 +5695,8 @@ impl Default for LlamaMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: + AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5727,7 +5769,7 @@ impl Default for LlamaSpitMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5780,7 +5822,7 @@ impl Default for MagmaCubeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5844,7 +5886,7 @@ impl Default for MangroveBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5901,7 +5943,7 @@ impl Default for MangroveChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -5954,7 +5996,7 @@ impl Default for MarkerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6003,7 +6045,7 @@ impl Default for MinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6071,7 +6113,9 @@ impl Default for MooshroomMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6148,7 +6192,8 @@ impl Default for MuleMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: + AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6223,7 +6268,7 @@ impl Default for OakBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6280,7 +6325,7 @@ impl Default for OakChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6349,7 +6394,9 @@ impl Default for OcelotMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6418,7 +6465,7 @@ impl Default for OminousItemSpawnerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6476,7 +6523,7 @@ impl Default for PaintingMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6527,7 +6574,7 @@ impl Default for PaleOakBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6584,7 +6631,7 @@ impl Default for PaleOakChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6696,7 +6743,9 @@ impl Default for PandaMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6785,7 +6834,9 @@ impl Default for ParrotMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6862,7 +6913,7 @@ impl Default for PhantomMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -6943,7 +6994,9 @@ impl Default for PigMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7037,7 +7090,9 @@ impl Default for PiglinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7112,7 +7167,9 @@ impl Default for PiglinBruteMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7190,7 +7247,9 @@ impl Default for PillagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7291,7 +7350,7 @@ impl Default for PlayerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7367,7 +7426,9 @@ impl Default for PolarBearMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7448,7 +7509,7 @@ impl Default for PufferfishMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7525,7 +7586,9 @@ impl Default for RabbitMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7598,7 +7661,9 @@ impl Default for RavagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7674,7 +7739,7 @@ impl Default for SalmonMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7753,7 +7818,9 @@ impl Default for SheepMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7840,7 +7907,7 @@ impl Default for ShulkerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7902,7 +7969,7 @@ impl Default for ShulkerBulletMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -7955,7 +8022,7 @@ impl Default for SilverfishMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8029,7 +8096,7 @@ impl Default for SkeletonMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8102,7 +8169,9 @@ impl Default for SkeletonHorseMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8177,7 +8246,7 @@ impl Default for SlimeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8242,7 +8311,7 @@ impl Default for SmallFireballMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8310,7 +8379,9 @@ impl Default for SnifferMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8387,7 +8458,7 @@ impl Default for SnowGolemMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8449,7 +8520,7 @@ impl Default for SnowballMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8502,7 +8573,7 @@ impl Default for SpawnerMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8556,7 +8627,7 @@ impl Default for SpectralArrowMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8619,7 +8690,7 @@ impl Default for SpiderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8682,7 +8753,7 @@ impl Default for SplashPotionMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8735,7 +8806,7 @@ impl Default for SpruceBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8792,7 +8863,7 @@ impl Default for SpruceChestBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8853,7 +8924,7 @@ impl Default for SquidMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -8922,7 +8993,7 @@ impl Default for StrayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9004,7 +9075,9 @@ impl Default for StriderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9080,7 +9153,7 @@ impl Default for TadpoleMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9172,7 +9245,7 @@ impl Default for TextDisplayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9269,7 +9342,7 @@ impl Default for TntMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9320,7 +9393,7 @@ impl Default for TntMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9388,7 +9461,8 @@ impl Default for TraderLlamaMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: + AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9478,7 +9552,7 @@ impl Default for TridentMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9544,7 +9618,7 @@ impl Default for TropicalFishMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9628,7 +9702,9 @@ impl Default for TurtleMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9706,7 +9782,7 @@ impl Default for VexMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9785,7 +9861,9 @@ impl Default for VillagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9863,7 +9941,9 @@ impl Default for VindicatorMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -9935,7 +10015,9 @@ impl Default for WanderingTraderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10012,7 +10094,7 @@ impl Default for WardenMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10073,7 +10155,7 @@ impl Default for WindChargeMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10134,7 +10216,9 @@ impl Default for WitchMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10229,7 +10313,7 @@ impl Default for WitherMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10301,7 +10385,7 @@ impl Default for WitherSkeletonMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10367,7 +10451,7 @@ impl Default for WitherSkullMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10455,7 +10539,9 @@ impl Default for WolfMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10540,7 +10626,7 @@ impl Default for ZoglinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10621,7 +10707,7 @@ impl Default for ZombieMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10696,7 +10782,9 @@ impl Default for ZombieHorseMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10785,7 +10873,9 @@ impl Default for ZombieVillagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10865,7 +10955,9 @@ impl Default for ZombifiedPiglinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -10939,7 +11031,7 @@ impl Default for AbstractAgeableMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11007,7 +11099,7 @@ impl Default for AbstractAnimalMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11083,7 +11175,7 @@ impl Default for AbstractArrowMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11146,7 +11238,7 @@ impl Default for AbstractBoatMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11214,7 +11306,9 @@ impl Default for AbstractChestedHorseMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11286,7 +11380,7 @@ impl Default for AbstractCreatureMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11406,7 +11500,7 @@ impl Default for AbstractDisplayMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11469,7 +11563,7 @@ impl AbstractEntity { 0 => { let bitfield = d.value.into_byte()?; entity.insert(OnFire(bitfield & 0x1 != 0)); - entity.insert(ShiftKeyDown(bitfield & 0x2 != 0)); + entity.insert(AbstractEntityShiftKeyDown(bitfield & 0x2 != 0)); entity.insert(Sprinting(bitfield & 0x8 != 0)); entity.insert(Swimming(bitfield & 0x10 != 0)); entity.insert(CurrentlyGlowing(bitfield & 0x40 != 0)); @@ -11507,7 +11601,7 @@ impl AbstractEntity { pub struct AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire, - shift_key_down: ShiftKeyDown, + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown, sprinting: Sprinting, swimming: Swimming, currently_glowing: CurrentlyGlowing, @@ -11526,7 +11620,7 @@ impl Default for AbstractEntityMetadataBundle { Self { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11580,7 +11674,7 @@ impl Default for AbstractFishMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11661,7 +11755,9 @@ impl Default for AbstractHorseMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11738,7 +11834,7 @@ impl Default for AbstractInsentientMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11826,7 +11922,7 @@ impl Default for AbstractLivingMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11889,7 +11985,7 @@ impl Default for AbstractMinecartMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -11946,7 +12042,7 @@ impl Default for AbstractMonsterMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12017,7 +12113,7 @@ impl Default for AbstractPiglinMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12090,7 +12186,7 @@ impl Default for AbstractRaiderMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12165,7 +12261,9 @@ impl Default for AbstractSpellcasterIllagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12249,7 +12347,9 @@ impl Default for AbstractTameableMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown( + false, + ), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12320,7 +12420,7 @@ impl Default for AbstractThrownItemProjectileMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12380,7 +12480,7 @@ impl Default for AbstractVehicleMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), @@ -12440,7 +12540,7 @@ impl Default for AbstractVillagerMetadataBundle { parent: AbstractEntityMetadataBundle { _marker: AbstractEntity, on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), + abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false), sprinting: Sprinting(false), swimming: Swimming(false), currently_glowing: CurrentlyGlowing(false), diff --git a/azalea-entity/src/plugin/mod.rs b/azalea-entity/src/plugin/mod.rs index ee6bca61..95fcb93f 100644 --- a/azalea-entity/src/plugin/mod.rs +++ b/azalea-entity/src/plugin/mod.rs @@ -17,7 +17,9 @@ pub use relative_updates::RelativeEntityUpdate; use tracing::debug; use crate::{ - Dead, EyeHeight, FluidOnEyes, LocalEntity, LookDirection, OnClimbable, Physics, Position, + Crouching, Dead, EntityKindComponent, FluidOnEyes, LocalEntity, LookDirection, OnClimbable, + Physics, Pose, Position, + dimensions::{EntityDimensions, calculate_dimensions}, metadata::Health, }; @@ -56,12 +58,12 @@ impl Plugin for EntityPlugin { debug_new_entity, add_dead, clamp_look_direction, - update_fluid_on_eyes, update_on_climbable, + (update_dimensions, update_bounding_box, update_fluid_on_eyes).chain(), + update_crouching, ), ), ) - .add_systems(Update, update_bounding_box) .add_systems(GameTick, update_in_loaded_chunk) .init_resource::(); } @@ -91,15 +93,20 @@ pub fn add_dead(mut commands: Commands, query: Query<(Entity, &Health), Changed< } pub fn update_fluid_on_eyes( - mut query: Query<(&mut FluidOnEyes, &Position, &EyeHeight, &InstanceName)>, + mut query: Query<( + &mut FluidOnEyes, + &Position, + &EntityDimensions, + &InstanceName, + )>, instance_container: Res, ) { - for (mut fluid_on_eyes, position, eye_height, instance_name) in query.iter_mut() { + for (mut fluid_on_eyes, position, dimensions, instance_name) in query.iter_mut() { let Some(instance) = instance_container.get(instance_name) else { continue; }; - let adjusted_eye_y = position.y + (**eye_height as f64) - 0.1111111119389534; + let adjusted_eye_y = position.y + (dimensions.eye_height as f64) - 0.1111111119389534; let eye_block_pos = BlockPos::from(Vec3::new(position.x, adjusted_eye_y, position.z)); let fluid_at_eye = instance .read() @@ -201,13 +208,41 @@ pub fn apply_clamp_look_direction(mut look_direction: LookDirection) -> LookDire /// /// # Safety /// Cached position in the world must be updated. -pub fn update_bounding_box(mut query: Query<(&Position, &mut Physics), Changed>) { - for (position, mut physics) in query.iter_mut() { - let bounding_box = physics.dimensions.make_bounding_box(**position); +#[allow(clippy::type_complexity)] +pub fn update_bounding_box( + mut query: Query< + (&mut Physics, &Position, &EntityDimensions), + Or<(Changed, Changed)>, + >, +) { + for (mut physics, position, dimensions) in query.iter_mut() { + let bounding_box = dimensions.make_bounding_box(**position); physics.bounding_box = bounding_box; } } +#[allow(clippy::type_complexity)] +pub fn update_dimensions( + mut query: Query< + (&mut EntityDimensions, &EntityKindComponent, &Pose), + Or<(Changed, Changed)>, + >, +) { + for (mut dimensions, kind, pose) in query.iter_mut() { + *dimensions = calculate_dimensions(**kind, *pose); + } +} + +pub fn update_crouching(query: Query<(&mut Crouching, &Pose), Without>) { + for (mut crouching, pose) in query { + let new_crouching = *pose == Pose::Crouching; + // avoid triggering change detection + if **crouching != new_crouching { + **crouching = new_crouching; + } + } +} + /// Marks an entity that's in a loaded chunk. This is updated at the beginning /// of every tick. /// -- cgit v1.2.3