aboutsummaryrefslogtreecommitdiff
path: root/azalea-entity/src/dimensions.rs
blob: 68e9903d5658093da92c6d8df3ba03e96ceb108d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
use azalea_core::{aabb::AABB, position::Vec3};
use azalea_registry::EntityKind;

#[derive(Debug, Default, Clone)]
pub struct EntityDimensions {
    pub width: f32,
    pub height: f32,
}

impl EntityDimensions {
    pub fn new(width: f32, height: f32) -> Self {
        Self { width, height }
    }

    pub fn make_bounding_box(&self, pos: Vec3) -> AABB {
        let radius = (self.width / 2.0) as f64;
        let height = self.height as f64;
        AABB {
            min: Vec3::new(pos.x - radius, pos.y, pos.z - radius),
            max: Vec3::new(pos.x + radius, pos.y + height, pos.z + radius),
        }
    }
}

impl From<EntityKind> 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::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::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::ChestMinecart => EntityDimensions::new(0.98, 0.7),
            EntityKind::Chicken => EntityDimensions::new(0.4, 0.7),
            EntityKind::Cod => EntityDimensions::new(0.5, 0.3),
            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::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::DragonFireball => EntityDimensions::new(1.0, 1.0),
            EntityKind::Drowned => EntityDimensions::new(0.6, 1.95),
            EntityKind::Egg => EntityDimensions::new(0.25, 0.25),
            EntityKind::ElderGuardian => EntityDimensions::new(1.9975, 1.9975),
            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::Evoker => EntityDimensions::new(0.6, 1.95),
            EntityKind::EvokerFangs => EntityDimensions::new(0.5, 0.8),
            EntityKind::ExperienceBottle => EntityDimensions::new(0.25, 0.25),
            EntityKind::ExperienceOrb => EntityDimensions::new(0.5, 0.5),
            EntityKind::EyeOfEnder => EntityDimensions::new(0.25, 0.25),
            EntityKind::FallingBlock => EntityDimensions::new(0.98, 0.98),
            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::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::Goat => EntityDimensions::new(0.9, 1.3),
            EntityKind::Guardian => EntityDimensions::new(0.85, 0.85),
            EntityKind::HappyGhast => EntityDimensions::new(4.0, 4.0),
            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::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::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::LightningBolt => EntityDimensions::new(0.0, 0.0),
            EntityKind::LingeringPotion => EntityDimensions::new(0.25, 0.25),
            EntityKind::Llama => EntityDimensions::new(0.9, 1.87),
            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::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::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::Panda => EntityDimensions::new(1.3, 1.25),
            EntityKind::Parrot => EntityDimensions::new(0.5, 0.9),
            EntityKind::Phantom => EntityDimensions::new(0.9, 0.5),
            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::Pillager => EntityDimensions::new(0.6, 1.95),
            EntityKind::Player => EntityDimensions::new(0.6, 1.8),
            EntityKind::PolarBear => EntityDimensions::new(1.4, 1.4),
            EntityKind::Pufferfish => EntityDimensions::new(0.7, 0.7),
            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::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::SmallFireball => EntityDimensions::new(0.3125, 0.3125),
            EntityKind::Sniffer => EntityDimensions::new(1.9, 1.75),
            EntityKind::SnowGolem => EntityDimensions::new(0.7, 1.9),
            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::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::Strider => EntityDimensions::new(0.9, 1.7),
            EntityKind::Tadpole => EntityDimensions::new(0.4, 0.3),
            EntityKind::TextDisplay => EntityDimensions::new(0.0, 0.0),
            EntityKind::Tnt => EntityDimensions::new(0.98, 0.98),
            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::Turtle => EntityDimensions::new(1.2, 0.4),
            EntityKind::Vex => EntityDimensions::new(0.4, 0.8),
            EntityKind::Villager => EntityDimensions::new(0.6, 1.95),
            EntityKind::Vindicator => EntityDimensions::new(0.6, 1.95),
            EntityKind::WanderingTrader => EntityDimensions::new(0.6, 1.95),
            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::Wither => EntityDimensions::new(0.9, 3.5),
            EntityKind::WitherSkeleton => EntityDimensions::new(0.7, 2.4),
            EntityKind::WitherSkull => EntityDimensions::new(0.3125, 0.3125),
            EntityKind::Wolf => EntityDimensions::new(0.6, 0.85),
            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),
        }
    }
}