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 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}