azalea_entity/
dimensions.rs

1use azalea_core::{aabb::AABB, position::Vec3};
2use azalea_registry::EntityKind;
3
4#[derive(Debug, Default, Clone)]
5pub struct EntityDimensions {
6    pub width: f32,
7    pub height: f32,
8}
9
10impl EntityDimensions {
11    pub fn new(width: f32, height: f32) -> Self {
12        Self { width, height }
13    }
14
15    pub fn make_bounding_box(&self, pos: Vec3) -> AABB {
16        let radius = (self.width / 2.0) as f64;
17        let height = self.height as f64;
18        AABB {
19            min: Vec3::new(pos.x - radius, pos.y, pos.z - radius),
20            max: Vec3::new(pos.x + radius, pos.y + height, pos.z + radius),
21        }
22    }
23}
24
25impl From<EntityKind> for EntityDimensions {
26    fn from(entity: EntityKind) -> Self {
27        // this match statement is automatically generated by codegen/genentities.py,
28        // don't edit it manually!
29        match entity {
30            EntityKind::AcaciaBoat => EntityDimensions::new(1.375, 0.5625),
31            EntityKind::AcaciaChestBoat => EntityDimensions::new(1.375, 0.5625),
32            EntityKind::Allay => EntityDimensions::new(0.35, 0.6),
33            EntityKind::AreaEffectCloud => EntityDimensions::new(6.0, 0.5),
34            EntityKind::Armadillo => EntityDimensions::new(0.7, 0.65),
35            EntityKind::ArmorStand => EntityDimensions::new(0.5, 1.975),
36            EntityKind::Arrow => EntityDimensions::new(0.5, 0.5),
37            EntityKind::Axolotl => EntityDimensions::new(0.75, 0.42),
38            EntityKind::BambooChestRaft => EntityDimensions::new(1.375, 0.5625),
39            EntityKind::BambooRaft => EntityDimensions::new(1.375, 0.5625),
40            EntityKind::Bat => EntityDimensions::new(0.5, 0.9),
41            EntityKind::Bee => EntityDimensions::new(0.7, 0.6),
42            EntityKind::BirchBoat => EntityDimensions::new(1.375, 0.5625),
43            EntityKind::BirchChestBoat => EntityDimensions::new(1.375, 0.5625),
44            EntityKind::Blaze => EntityDimensions::new(0.6, 1.8),
45            EntityKind::BlockDisplay => EntityDimensions::new(0.0, 0.0),
46            EntityKind::Bogged => EntityDimensions::new(0.6, 1.99),
47            EntityKind::Breeze => EntityDimensions::new(0.6, 1.77),
48            EntityKind::BreezeWindCharge => EntityDimensions::new(0.3125, 0.3125),
49            EntityKind::Camel => EntityDimensions::new(1.7, 2.375),
50            EntityKind::Cat => EntityDimensions::new(0.6, 0.7),
51            EntityKind::CaveSpider => EntityDimensions::new(0.7, 0.5),
52            EntityKind::CherryBoat => EntityDimensions::new(1.375, 0.5625),
53            EntityKind::CherryChestBoat => EntityDimensions::new(1.375, 0.5625),
54            EntityKind::ChestMinecart => EntityDimensions::new(0.98, 0.7),
55            EntityKind::Chicken => EntityDimensions::new(0.4, 0.7),
56            EntityKind::Cod => EntityDimensions::new(0.5, 0.3),
57            EntityKind::CommandBlockMinecart => EntityDimensions::new(0.98, 0.7),
58            EntityKind::Cow => EntityDimensions::new(0.9, 1.4),
59            EntityKind::Creaking => EntityDimensions::new(0.9, 2.7),
60            EntityKind::Creeper => EntityDimensions::new(0.6, 1.7),
61            EntityKind::DarkOakBoat => EntityDimensions::new(1.375, 0.5625),
62            EntityKind::DarkOakChestBoat => EntityDimensions::new(1.375, 0.5625),
63            EntityKind::Dolphin => EntityDimensions::new(0.9, 0.6),
64            EntityKind::Donkey => EntityDimensions::new(1.39648, 1.5),
65            EntityKind::DragonFireball => EntityDimensions::new(1.0, 1.0),
66            EntityKind::Drowned => EntityDimensions::new(0.6, 1.95),
67            EntityKind::Egg => EntityDimensions::new(0.25, 0.25),
68            EntityKind::ElderGuardian => EntityDimensions::new(1.9975, 1.9975),
69            EntityKind::EndCrystal => EntityDimensions::new(2.0, 2.0),
70            EntityKind::EnderDragon => EntityDimensions::new(16.0, 8.0),
71            EntityKind::EnderPearl => EntityDimensions::new(0.25, 0.25),
72            EntityKind::Enderman => EntityDimensions::new(0.6, 2.9),
73            EntityKind::Endermite => EntityDimensions::new(0.4, 0.3),
74            EntityKind::Evoker => EntityDimensions::new(0.6, 1.95),
75            EntityKind::EvokerFangs => EntityDimensions::new(0.5, 0.8),
76            EntityKind::ExperienceBottle => EntityDimensions::new(0.25, 0.25),
77            EntityKind::ExperienceOrb => EntityDimensions::new(0.5, 0.5),
78            EntityKind::EyeOfEnder => EntityDimensions::new(0.25, 0.25),
79            EntityKind::FallingBlock => EntityDimensions::new(0.98, 0.98),
80            EntityKind::Fireball => EntityDimensions::new(1.0, 1.0),
81            EntityKind::FireworkRocket => EntityDimensions::new(0.25, 0.25),
82            EntityKind::FishingBobber => EntityDimensions::new(0.25, 0.25),
83            EntityKind::Fox => EntityDimensions::new(0.6, 0.7),
84            EntityKind::Frog => EntityDimensions::new(0.5, 0.5),
85            EntityKind::FurnaceMinecart => EntityDimensions::new(0.98, 0.7),
86            EntityKind::Ghast => EntityDimensions::new(4.0, 4.0),
87            EntityKind::Giant => EntityDimensions::new(3.6, 12.0),
88            EntityKind::GlowItemFrame => EntityDimensions::new(0.5, 0.5),
89            EntityKind::GlowSquid => EntityDimensions::new(0.8, 0.8),
90            EntityKind::Goat => EntityDimensions::new(0.9, 1.3),
91            EntityKind::Guardian => EntityDimensions::new(0.85, 0.85),
92            EntityKind::HappyGhast => EntityDimensions::new(4.0, 4.0),
93            EntityKind::Hoglin => EntityDimensions::new(1.39648, 1.4),
94            EntityKind::HopperMinecart => EntityDimensions::new(0.98, 0.7),
95            EntityKind::Horse => EntityDimensions::new(1.39648, 1.6),
96            EntityKind::Husk => EntityDimensions::new(0.6, 1.95),
97            EntityKind::Illusioner => EntityDimensions::new(0.6, 1.95),
98            EntityKind::Interaction => EntityDimensions::new(0.0, 0.0),
99            EntityKind::IronGolem => EntityDimensions::new(1.4, 2.7),
100            EntityKind::Item => EntityDimensions::new(0.25, 0.25),
101            EntityKind::ItemDisplay => EntityDimensions::new(0.0, 0.0),
102            EntityKind::ItemFrame => EntityDimensions::new(0.5, 0.5),
103            EntityKind::JungleBoat => EntityDimensions::new(1.375, 0.5625),
104            EntityKind::JungleChestBoat => EntityDimensions::new(1.375, 0.5625),
105            EntityKind::LeashKnot => EntityDimensions::new(0.375, 0.5),
106            EntityKind::LightningBolt => EntityDimensions::new(0.0, 0.0),
107            EntityKind::LingeringPotion => EntityDimensions::new(0.25, 0.25),
108            EntityKind::Llama => EntityDimensions::new(0.9, 1.87),
109            EntityKind::LlamaSpit => EntityDimensions::new(0.25, 0.25),
110            EntityKind::MagmaCube => EntityDimensions::new(0.52, 0.52),
111            EntityKind::MangroveBoat => EntityDimensions::new(1.375, 0.5625),
112            EntityKind::MangroveChestBoat => EntityDimensions::new(1.375, 0.5625),
113            EntityKind::Marker => EntityDimensions::new(0.0, 0.0),
114            EntityKind::Minecart => EntityDimensions::new(0.98, 0.7),
115            EntityKind::Mooshroom => EntityDimensions::new(0.9, 1.4),
116            EntityKind::Mule => EntityDimensions::new(1.39648, 1.6),
117            EntityKind::OakBoat => EntityDimensions::new(1.375, 0.5625),
118            EntityKind::OakChestBoat => EntityDimensions::new(1.375, 0.5625),
119            EntityKind::Ocelot => EntityDimensions::new(0.6, 0.7),
120            EntityKind::OminousItemSpawner => EntityDimensions::new(0.25, 0.25),
121            EntityKind::Painting => EntityDimensions::new(0.5, 0.5),
122            EntityKind::PaleOakBoat => EntityDimensions::new(1.375, 0.5625),
123            EntityKind::PaleOakChestBoat => EntityDimensions::new(1.375, 0.5625),
124            EntityKind::Panda => EntityDimensions::new(1.3, 1.25),
125            EntityKind::Parrot => EntityDimensions::new(0.5, 0.9),
126            EntityKind::Phantom => EntityDimensions::new(0.9, 0.5),
127            EntityKind::Pig => EntityDimensions::new(0.9, 0.9),
128            EntityKind::Piglin => EntityDimensions::new(0.6, 1.95),
129            EntityKind::PiglinBrute => EntityDimensions::new(0.6, 1.95),
130            EntityKind::Pillager => EntityDimensions::new(0.6, 1.95),
131            EntityKind::Player => EntityDimensions::new(0.6, 1.8),
132            EntityKind::PolarBear => EntityDimensions::new(1.4, 1.4),
133            EntityKind::Pufferfish => EntityDimensions::new(0.7, 0.7),
134            EntityKind::Rabbit => EntityDimensions::new(0.4, 0.5),
135            EntityKind::Ravager => EntityDimensions::new(1.95, 2.2),
136            EntityKind::Salmon => EntityDimensions::new(0.7, 0.4),
137            EntityKind::Sheep => EntityDimensions::new(0.9, 1.3),
138            EntityKind::Shulker => EntityDimensions::new(1.0, 1.0),
139            EntityKind::ShulkerBullet => EntityDimensions::new(0.3125, 0.3125),
140            EntityKind::Silverfish => EntityDimensions::new(0.4, 0.3),
141            EntityKind::Skeleton => EntityDimensions::new(0.6, 1.99),
142            EntityKind::SkeletonHorse => EntityDimensions::new(1.39648, 1.6),
143            EntityKind::Slime => EntityDimensions::new(0.52, 0.52),
144            EntityKind::SmallFireball => EntityDimensions::new(0.3125, 0.3125),
145            EntityKind::Sniffer => EntityDimensions::new(1.9, 1.75),
146            EntityKind::SnowGolem => EntityDimensions::new(0.7, 1.9),
147            EntityKind::Snowball => EntityDimensions::new(0.25, 0.25),
148            EntityKind::SpawnerMinecart => EntityDimensions::new(0.98, 0.7),
149            EntityKind::SpectralArrow => EntityDimensions::new(0.5, 0.5),
150            EntityKind::Spider => EntityDimensions::new(1.4, 0.9),
151            EntityKind::SplashPotion => EntityDimensions::new(0.25, 0.25),
152            EntityKind::SpruceBoat => EntityDimensions::new(1.375, 0.5625),
153            EntityKind::SpruceChestBoat => EntityDimensions::new(1.375, 0.5625),
154            EntityKind::Squid => EntityDimensions::new(0.8, 0.8),
155            EntityKind::Stray => EntityDimensions::new(0.6, 1.99),
156            EntityKind::Strider => EntityDimensions::new(0.9, 1.7),
157            EntityKind::Tadpole => EntityDimensions::new(0.4, 0.3),
158            EntityKind::TextDisplay => EntityDimensions::new(0.0, 0.0),
159            EntityKind::Tnt => EntityDimensions::new(0.98, 0.98),
160            EntityKind::TntMinecart => EntityDimensions::new(0.98, 0.7),
161            EntityKind::TraderLlama => EntityDimensions::new(0.9, 1.87),
162            EntityKind::Trident => EntityDimensions::new(0.5, 0.5),
163            EntityKind::TropicalFish => EntityDimensions::new(0.5, 0.4),
164            EntityKind::Turtle => EntityDimensions::new(1.2, 0.4),
165            EntityKind::Vex => EntityDimensions::new(0.4, 0.8),
166            EntityKind::Villager => EntityDimensions::new(0.6, 1.95),
167            EntityKind::Vindicator => EntityDimensions::new(0.6, 1.95),
168            EntityKind::WanderingTrader => EntityDimensions::new(0.6, 1.95),
169            EntityKind::Warden => EntityDimensions::new(0.9, 2.9),
170            EntityKind::WindCharge => EntityDimensions::new(0.3125, 0.3125),
171            EntityKind::Witch => EntityDimensions::new(0.6, 1.95),
172            EntityKind::Wither => EntityDimensions::new(0.9, 3.5),
173            EntityKind::WitherSkeleton => EntityDimensions::new(0.7, 2.4),
174            EntityKind::WitherSkull => EntityDimensions::new(0.3125, 0.3125),
175            EntityKind::Wolf => EntityDimensions::new(0.6, 0.85),
176            EntityKind::Zoglin => EntityDimensions::new(1.39648, 1.4),
177            EntityKind::Zombie => EntityDimensions::new(0.6, 1.95),
178            EntityKind::ZombieHorse => EntityDimensions::new(1.39648, 1.6),
179            EntityKind::ZombieVillager => EntityDimensions::new(0.6, 1.95),
180            EntityKind::ZombifiedPiglin => EntityDimensions::new(0.6, 1.95),
181        }
182    }
183}