1use serde::{Deserialize, Serialize};
7use std::fmt;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
13#[serde(rename_all = "PascalCase")]
14pub enum EntityType {
15 AcaciaBoat,
16 AcaciaChestBoat,
17 Allay,
18 AreaEffectCloud,
19 Armadillo,
20 ArmorStand,
21 Arrow,
22 Axolotl,
23 BambooChestRaft,
24 BambooRaft,
25 Bat,
26 Bee,
27 BirchBoat,
28 BirchChestBoat,
29 Blaze,
30 BlockDisplay,
31 Bogged,
32 Breeze,
33 BreezeWindCharge,
34 Camel,
35 CamelHusk,
36 Cat,
37 CaveSpider,
38 CherryBoat,
39 CherryChestBoat,
40 ChestMinecart,
41 Chicken,
42 Cod,
43 CommandBlockMinecart,
44 CopperGolem,
45 Cow,
46 Creaking,
47 Creeper,
48 DarkOakBoat,
49 DarkOakChestBoat,
50 Dolphin,
51 Donkey,
52 DragonFireball,
53 Drowned,
54 Egg,
55 ElderGuardian,
56 EndCrystal,
57 EnderDragon,
58 Enderman,
59 Endermite,
60 EnderPearl,
61 Evoker,
62 EvokerFangs,
63 ExperienceBottle,
64 ExperienceOrb,
65 EyeOfEnder,
66 FallingBlock,
67 Fireball,
68 FireworkRocket,
69 FishingBobber,
70 Fox,
71 Frog,
72 FurnaceMinecart,
73 Ghast,
74 Giant,
75 GlowItemFrame,
76 GlowSquid,
77 Goat,
78 Guardian,
79 HappyGhast,
80 Hoglin,
81 HopperMinecart,
82 Horse,
83 Husk,
84 Illusioner,
85 Interaction,
86 IronGolem,
87 Item,
88 ItemDisplay,
89 ItemFrame,
90 JungleBoat,
91 JungleChestBoat,
92 LeashKnot,
93 LightningBolt,
94 LingeringPotion,
95 Llama,
96 LlamaSpit,
97 MagmaCube,
98 MangroveBoat,
99 MangroveChestBoat,
100 Mannequin,
101 Marker,
102 Minecart,
103 Mooshroom,
104 Mule,
105 Nautilus,
106 OakBoat,
107 OakChestBoat,
108 Ocelot,
109 OminousItemSpawner,
110 Painting,
111 PaleOakBoat,
112 PaleOakChestBoat,
113 Panda,
114 Parched,
115 Parrot,
116 Phantom,
117 Pig,
118 Piglin,
119 PiglinBrute,
120 Pillager,
121 Player,
122 PolarBear,
123 Pufferfish,
124 Rabbit,
125 Ravager,
126 Salmon,
127 Sheep,
128 Shulker,
129 ShulkerBullet,
130 Silverfish,
131 Skeleton,
132 SkeletonHorse,
133 Slime,
134 SmallFireball,
135 Sniffer,
136 Snowball,
137 SnowGolem,
138 SpawnerMinecart,
139 SpectralArrow,
140 Spider,
141 SplashPotion,
142 SpruceBoat,
143 SpruceChestBoat,
144 Squid,
145 Stray,
146 Strider,
147 Tadpole,
148 TextDisplay,
149 Tnt,
150 TntMinecart,
151 TraderLlama,
152 Trident,
153 TropicalFish,
154 Turtle,
155 Vex,
156 Villager,
157 Vindicator,
158 WanderingTrader,
159 Warden,
160 WindCharge,
161 Witch,
162 Wither,
163 WitherSkeleton,
164 WitherSkull,
165 Wolf,
166 Zoglin,
167 Zombie,
168 ZombieHorse,
169 ZombieNautilus,
170 ZombieVillager,
171 ZombifiedPiglin,
172}
173
174impl EntityType {
175 pub fn matches_config(&self, allowed: &[Self]) -> bool {
177 allowed.is_empty() || allowed.contains(self)
178 }
179}
180
181impl From<pumpkin_plugin_api::world::EntityType> for EntityType {
186 fn from(value: pumpkin_plugin_api::world::EntityType) -> Self {
187 #[allow(unreachable_patterns)]
188 match value {
189 pumpkin_plugin_api::world::EntityType::AcaciaBoat => Self::AcaciaBoat,
190 pumpkin_plugin_api::world::EntityType::AcaciaChestBoat => Self::AcaciaChestBoat,
191 pumpkin_plugin_api::world::EntityType::Allay => Self::Allay,
192 pumpkin_plugin_api::world::EntityType::AreaEffectCloud => Self::AreaEffectCloud,
193 pumpkin_plugin_api::world::EntityType::Armadillo => Self::Armadillo,
194 pumpkin_plugin_api::world::EntityType::ArmorStand => Self::ArmorStand,
195 pumpkin_plugin_api::world::EntityType::Arrow => Self::Arrow,
196 pumpkin_plugin_api::world::EntityType::Axolotl => Self::Axolotl,
197 pumpkin_plugin_api::world::EntityType::BambooChestRaft => Self::BambooChestRaft,
198 pumpkin_plugin_api::world::EntityType::BambooRaft => Self::BambooRaft,
199 pumpkin_plugin_api::world::EntityType::Bat => Self::Bat,
200 pumpkin_plugin_api::world::EntityType::Bee => Self::Bee,
201 pumpkin_plugin_api::world::EntityType::BirchBoat => Self::BirchBoat,
202 pumpkin_plugin_api::world::EntityType::BirchChestBoat => Self::BirchChestBoat,
203 pumpkin_plugin_api::world::EntityType::Blaze => Self::Blaze,
204 pumpkin_plugin_api::world::EntityType::BlockDisplay => Self::BlockDisplay,
205 pumpkin_plugin_api::world::EntityType::Bogged => Self::Bogged,
206 pumpkin_plugin_api::world::EntityType::Breeze => Self::Breeze,
207 pumpkin_plugin_api::world::EntityType::BreezeWindCharge => Self::BreezeWindCharge,
208 pumpkin_plugin_api::world::EntityType::Camel => Self::Camel,
209 pumpkin_plugin_api::world::EntityType::CamelHusk => Self::CamelHusk,
210 pumpkin_plugin_api::world::EntityType::Cat => Self::Cat,
211 pumpkin_plugin_api::world::EntityType::CaveSpider => Self::CaveSpider,
212 pumpkin_plugin_api::world::EntityType::CherryBoat => Self::CherryBoat,
213 pumpkin_plugin_api::world::EntityType::CherryChestBoat => Self::CherryChestBoat,
214 pumpkin_plugin_api::world::EntityType::ChestMinecart => Self::ChestMinecart,
215 pumpkin_plugin_api::world::EntityType::Chicken => Self::Chicken,
216 pumpkin_plugin_api::world::EntityType::Cod => Self::Cod,
217 pumpkin_plugin_api::world::EntityType::CommandBlockMinecart => {
218 Self::CommandBlockMinecart
219 }
220 pumpkin_plugin_api::world::EntityType::CopperGolem => Self::CopperGolem,
221 pumpkin_plugin_api::world::EntityType::Cow => Self::Cow,
222 pumpkin_plugin_api::world::EntityType::Creaking => Self::Creaking,
223 pumpkin_plugin_api::world::EntityType::Creeper => Self::Creeper,
224 pumpkin_plugin_api::world::EntityType::DarkOakBoat => Self::DarkOakBoat,
225 pumpkin_plugin_api::world::EntityType::DarkOakChestBoat => Self::DarkOakChestBoat,
226 pumpkin_plugin_api::world::EntityType::Dolphin => Self::Dolphin,
227 pumpkin_plugin_api::world::EntityType::Donkey => Self::Donkey,
228 pumpkin_plugin_api::world::EntityType::DragonFireball => Self::DragonFireball,
229 pumpkin_plugin_api::world::EntityType::Drowned => Self::Drowned,
230 pumpkin_plugin_api::world::EntityType::Egg => Self::Egg,
231 pumpkin_plugin_api::world::EntityType::ElderGuardian => Self::ElderGuardian,
232 pumpkin_plugin_api::world::EntityType::EndCrystal => Self::EndCrystal,
233 pumpkin_plugin_api::world::EntityType::EnderDragon => Self::EnderDragon,
234 pumpkin_plugin_api::world::EntityType::Enderman => Self::Enderman,
235 pumpkin_plugin_api::world::EntityType::Endermite => Self::Endermite,
236 pumpkin_plugin_api::world::EntityType::EnderPearl => Self::EnderPearl,
237 pumpkin_plugin_api::world::EntityType::Evoker => Self::Evoker,
238 pumpkin_plugin_api::world::EntityType::EvokerFangs => Self::EvokerFangs,
239 pumpkin_plugin_api::world::EntityType::ExperienceBottle => Self::ExperienceBottle,
240 pumpkin_plugin_api::world::EntityType::ExperienceOrb => Self::ExperienceOrb,
241 pumpkin_plugin_api::world::EntityType::EyeOfEnder => Self::EyeOfEnder,
242 pumpkin_plugin_api::world::EntityType::FallingBlock => Self::FallingBlock,
243 pumpkin_plugin_api::world::EntityType::Fireball => Self::Fireball,
244 pumpkin_plugin_api::world::EntityType::FireworkRocket => Self::FireworkRocket,
245 pumpkin_plugin_api::world::EntityType::FishingBobber => Self::FishingBobber,
246 pumpkin_plugin_api::world::EntityType::Fox => Self::Fox,
247 pumpkin_plugin_api::world::EntityType::Frog => Self::Frog,
248 pumpkin_plugin_api::world::EntityType::FurnaceMinecart => Self::FurnaceMinecart,
249 pumpkin_plugin_api::world::EntityType::Ghast => Self::Ghast,
250 pumpkin_plugin_api::world::EntityType::Giant => Self::Giant,
251 pumpkin_plugin_api::world::EntityType::GlowItemFrame => Self::GlowItemFrame,
252 pumpkin_plugin_api::world::EntityType::GlowSquid => Self::GlowSquid,
253 pumpkin_plugin_api::world::EntityType::Goat => Self::Goat,
254 pumpkin_plugin_api::world::EntityType::Guardian => Self::Guardian,
255 pumpkin_plugin_api::world::EntityType::HappyGhast => Self::HappyGhast,
256 pumpkin_plugin_api::world::EntityType::Hoglin => Self::Hoglin,
257 pumpkin_plugin_api::world::EntityType::HopperMinecart => Self::HopperMinecart,
258 pumpkin_plugin_api::world::EntityType::Horse => Self::Horse,
259 pumpkin_plugin_api::world::EntityType::Husk => Self::Husk,
260 pumpkin_plugin_api::world::EntityType::Illusioner => Self::Illusioner,
261 pumpkin_plugin_api::world::EntityType::Interaction => Self::Interaction,
262 pumpkin_plugin_api::world::EntityType::IronGolem => Self::IronGolem,
263 pumpkin_plugin_api::world::EntityType::Item => Self::Item,
264 pumpkin_plugin_api::world::EntityType::ItemDisplay => Self::ItemDisplay,
265 pumpkin_plugin_api::world::EntityType::ItemFrame => Self::ItemFrame,
266 pumpkin_plugin_api::world::EntityType::JungleBoat => Self::JungleBoat,
267 pumpkin_plugin_api::world::EntityType::JungleChestBoat => Self::JungleChestBoat,
268 pumpkin_plugin_api::world::EntityType::LeashKnot => Self::LeashKnot,
269 pumpkin_plugin_api::world::EntityType::LightningBolt => Self::LightningBolt,
270 pumpkin_plugin_api::world::EntityType::LingeringPotion => Self::LingeringPotion,
271 pumpkin_plugin_api::world::EntityType::Llama => Self::Llama,
272 pumpkin_plugin_api::world::EntityType::LlamaSpit => Self::LlamaSpit,
273 pumpkin_plugin_api::world::EntityType::MagmaCube => Self::MagmaCube,
274 pumpkin_plugin_api::world::EntityType::MangroveBoat => Self::MangroveBoat,
275 pumpkin_plugin_api::world::EntityType::MangroveChestBoat => Self::MangroveChestBoat,
276 pumpkin_plugin_api::world::EntityType::Mannequin => Self::Mannequin,
277 pumpkin_plugin_api::world::EntityType::Marker => Self::Marker,
278 pumpkin_plugin_api::world::EntityType::Minecart => Self::Minecart,
279 pumpkin_plugin_api::world::EntityType::Mooshroom => Self::Mooshroom,
280 pumpkin_plugin_api::world::EntityType::Mule => Self::Mule,
281 pumpkin_plugin_api::world::EntityType::Nautilus => Self::Nautilus,
282 pumpkin_plugin_api::world::EntityType::OakBoat => Self::OakBoat,
283 pumpkin_plugin_api::world::EntityType::OakChestBoat => Self::OakChestBoat,
284 pumpkin_plugin_api::world::EntityType::Ocelot => Self::Ocelot,
285 pumpkin_plugin_api::world::EntityType::OminousItemSpawner => Self::OminousItemSpawner,
286 pumpkin_plugin_api::world::EntityType::Painting => Self::Painting,
287 pumpkin_plugin_api::world::EntityType::PaleOakBoat => Self::PaleOakBoat,
288 pumpkin_plugin_api::world::EntityType::PaleOakChestBoat => Self::PaleOakChestBoat,
289 pumpkin_plugin_api::world::EntityType::Panda => Self::Panda,
290 pumpkin_plugin_api::world::EntityType::Parched => Self::Parched,
291 pumpkin_plugin_api::world::EntityType::Parrot => Self::Parrot,
292 pumpkin_plugin_api::world::EntityType::Phantom => Self::Phantom,
293 pumpkin_plugin_api::world::EntityType::Pig => Self::Pig,
294 pumpkin_plugin_api::world::EntityType::Piglin => Self::Piglin,
295 pumpkin_plugin_api::world::EntityType::PiglinBrute => Self::PiglinBrute,
296 pumpkin_plugin_api::world::EntityType::Pillager => Self::Pillager,
297 pumpkin_plugin_api::world::EntityType::Player => Self::Player,
298 pumpkin_plugin_api::world::EntityType::PolarBear => Self::PolarBear,
299 pumpkin_plugin_api::world::EntityType::Pufferfish => Self::Pufferfish,
300 pumpkin_plugin_api::world::EntityType::Rabbit => Self::Rabbit,
301 pumpkin_plugin_api::world::EntityType::Ravager => Self::Ravager,
302 pumpkin_plugin_api::world::EntityType::Salmon => Self::Salmon,
303 pumpkin_plugin_api::world::EntityType::Sheep => Self::Sheep,
304 pumpkin_plugin_api::world::EntityType::Shulker => Self::Shulker,
305 pumpkin_plugin_api::world::EntityType::ShulkerBullet => Self::ShulkerBullet,
306 pumpkin_plugin_api::world::EntityType::Silverfish => Self::Silverfish,
307 pumpkin_plugin_api::world::EntityType::Skeleton => Self::Skeleton,
308 pumpkin_plugin_api::world::EntityType::SkeletonHorse => Self::SkeletonHorse,
309 pumpkin_plugin_api::world::EntityType::Slime => Self::Slime,
310 pumpkin_plugin_api::world::EntityType::SmallFireball => Self::SmallFireball,
311 pumpkin_plugin_api::world::EntityType::Sniffer => Self::Sniffer,
312 pumpkin_plugin_api::world::EntityType::Snowball => Self::Snowball,
313 pumpkin_plugin_api::world::EntityType::SnowGolem => Self::SnowGolem,
314 pumpkin_plugin_api::world::EntityType::SpawnerMinecart => Self::SpawnerMinecart,
315 pumpkin_plugin_api::world::EntityType::SpectralArrow => Self::SpectralArrow,
316 pumpkin_plugin_api::world::EntityType::Spider => Self::Spider,
317 pumpkin_plugin_api::world::EntityType::SplashPotion => Self::SplashPotion,
318 pumpkin_plugin_api::world::EntityType::SpruceBoat => Self::SpruceBoat,
319 pumpkin_plugin_api::world::EntityType::SpruceChestBoat => Self::SpruceChestBoat,
320 pumpkin_plugin_api::world::EntityType::Squid => Self::Squid,
321 pumpkin_plugin_api::world::EntityType::Stray => Self::Stray,
322 pumpkin_plugin_api::world::EntityType::Strider => Self::Strider,
323 pumpkin_plugin_api::world::EntityType::Tadpole => Self::Tadpole,
324 pumpkin_plugin_api::world::EntityType::TextDisplay => Self::TextDisplay,
325 pumpkin_plugin_api::world::EntityType::Tnt => Self::Tnt,
326 pumpkin_plugin_api::world::EntityType::TntMinecart => Self::TntMinecart,
327 pumpkin_plugin_api::world::EntityType::TraderLlama => Self::TraderLlama,
328 pumpkin_plugin_api::world::EntityType::Trident => Self::Trident,
329 pumpkin_plugin_api::world::EntityType::TropicalFish => Self::TropicalFish,
330 pumpkin_plugin_api::world::EntityType::Turtle => Self::Turtle,
331 pumpkin_plugin_api::world::EntityType::Vex => Self::Vex,
332 pumpkin_plugin_api::world::EntityType::Villager => Self::Villager,
333 pumpkin_plugin_api::world::EntityType::Vindicator => Self::Vindicator,
334 pumpkin_plugin_api::world::EntityType::WanderingTrader => Self::WanderingTrader,
335 pumpkin_plugin_api::world::EntityType::Warden => Self::Warden,
336 pumpkin_plugin_api::world::EntityType::WindCharge => Self::WindCharge,
337 pumpkin_plugin_api::world::EntityType::Witch => Self::Witch,
338 pumpkin_plugin_api::world::EntityType::Wither => Self::Wither,
339 pumpkin_plugin_api::world::EntityType::WitherSkeleton => Self::WitherSkeleton,
340 pumpkin_plugin_api::world::EntityType::WitherSkull => Self::WitherSkull,
341 pumpkin_plugin_api::world::EntityType::Wolf => Self::Wolf,
342 pumpkin_plugin_api::world::EntityType::Zoglin => Self::Zoglin,
343 pumpkin_plugin_api::world::EntityType::Zombie => Self::Zombie,
344 pumpkin_plugin_api::world::EntityType::ZombieHorse => Self::ZombieHorse,
345 pumpkin_plugin_api::world::EntityType::ZombieNautilus => Self::ZombieNautilus,
346 pumpkin_plugin_api::world::EntityType::ZombieVillager => Self::ZombieVillager,
347 pumpkin_plugin_api::world::EntityType::ZombifiedPiglin => Self::ZombifiedPiglin,
348 _ => Self::Zombie,
349 }
350 }
351}
352
353impl fmt::Display for EntityType {
354 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
355 write!(f, "{:?}", self)
356 }
357}