Skip to main content

azalea_entity/
metadata.rs

1// This file is @generated from codegen/lib/code/entity.py.
2// Don't change it manually!
3
4//! Metadata fields stored on entities.
5//!
6//! Also see the [protocol wiki documentation](https://minecraft.wiki/w/Java_Edition_protocol/Entity_metadata).
7//!
8//! # Entities
9//!
10//! Azalea creates a marker ECS component for every entity and abstract entity.
11//! You can use these to check if an entity is of a given type with an ECS
12//! filter, such as `With<AbstractMonster>`.
13//!
14//! All marker components are shown as a tree structure below:
15//!
16//! - [AbstractEntity]
17//!   - [AreaEffectCloud]
18//!   - [BreezeWindCharge]
19//!   - [DragonFireball]
20//!   - [EndCrystal]
21//!   - [EvokerFangs]
22//!   - [ExperienceOrb]
23//!   - [EyeOfEnder]
24//!   - [FallingBlock]
25//!   - [Fireball]
26//!   - [FireworkRocket]
27//!   - [FishingBobber]
28//!   - [Interaction]
29//!   - [Item]
30//!   - [ItemFrame]
31//!     - [GlowItemFrame]
32//!   - [LeashKnot]
33//!   - [LightningBolt]
34//!   - [LlamaSpit]
35//!   - [Marker]
36//!   - [OminousItemSpawner]
37//!   - [Painting]
38//!   - [ShulkerBullet]
39//!   - [SmallFireball]
40//!   - [Tnt]
41//!   - [WindCharge]
42//!   - [WitherSkull]
43//!   - [AbstractArrow]
44//!     - [Arrow]
45//!     - [SpectralArrow]
46//!     - [Trident]
47//!   - [AbstractDisplay]
48//!     - [BlockDisplay]
49//!     - [ItemDisplay]
50//!     - [TextDisplay]
51//!   - [AbstractLiving]
52//!     - [ArmorStand]
53//!     - [AbstractAvatar]
54//!       - [Mannequin]
55//!       - [Player]
56//!     - [AbstractInsentient]
57//!       - [Bat]
58//!       - [EnderDragon]
59//!       - [Ghast]
60//!       - [Phantom]
61//!       - [Slime]
62//!         - [MagmaCube]
63//!       - [AbstractCreature]
64//!         - [Allay]
65//!         - [CopperGolem]
66//!         - [IronGolem]
67//!         - [Pufferfish]
68//!         - [Shulker]
69//!         - [SnowGolem]
70//!         - [Tadpole]
71//!         - [AbstractAgeable]
72//!           - [Dolphin]
73//!           - [Squid]
74//!             - [GlowSquid]
75//!           - [AbstractAnimal]
76//!             - [Armadillo]
77//!             - [Axolotl]
78//!             - [Bee]
79//!             - [Chicken]
80//!             - [Cow]
81//!             - [Fox]
82//!             - [Frog]
83//!             - [Goat]
84//!             - [HappyGhast]
85//!             - [Hoglin]
86//!             - [Mooshroom]
87//!             - [Ocelot]
88//!             - [Panda]
89//!             - [Pig]
90//!             - [PolarBear]
91//!             - [Rabbit]
92//!             - [Sheep]
93//!             - [Sniffer]
94//!             - [Strider]
95//!             - [Turtle]
96//!             - [AbstractHorse]
97//!               - [Camel]
98//!                 - [CamelHusk]
99//!               - [Horse]
100//!               - [SkeletonHorse]
101//!               - [ZombieHorse]
102//!               - [AbstractChestedHorse]
103//!                 - [Donkey]
104//!                 - [Llama]
105//!                   - [TraderLlama]
106//!                 - [Mule]
107//!             - [AbstractTameable]
108//!               - [Cat]
109//!               - [Parrot]
110//!               - [Wolf]
111//!               - [AbstractNautilus]
112//!                 - [Nautilus]
113//!                 - [ZombieNautilus]
114//!           - [AbstractVillager]
115//!             - [Villager]
116//!             - [WanderingTrader]
117//!         - [AbstractFish]
118//!           - [Cod]
119//!           - [Salmon]
120//!           - [TropicalFish]
121//!         - [AbstractMonster]
122//!           - [Blaze]
123//!           - [Bogged]
124//!           - [Breeze]
125//!           - [Creaking]
126//!           - [Creeper]
127//!           - [Enderman]
128//!           - [Endermite]
129//!           - [Giant]
130//!           - [Guardian]
131//!             - [ElderGuardian]
132//!           - [Parched]
133//!           - [Silverfish]
134//!           - [Skeleton]
135//!           - [Spider]
136//!             - [CaveSpider]
137//!           - [Stray]
138//!           - [Vex]
139//!           - [Warden]
140//!           - [Wither]
141//!           - [WitherSkeleton]
142//!           - [Zoglin]
143//!           - [Zombie]
144//!             - [Drowned]
145//!             - [Husk]
146//!             - [ZombieVillager]
147//!             - [ZombifiedPiglin]
148//!           - [AbstractPiglin]
149//!             - [Piglin]
150//!             - [PiglinBrute]
151//!           - [AbstractRaider]
152//!             - [Pillager]
153//!             - [Ravager]
154//!             - [Vindicator]
155//!             - [Witch]
156//!             - [AbstractSpellcasterIllager]
157//!               - [Evoker]
158//!               - [Illusioner]
159//!   - [AbstractThrownItemProjectile]
160//!     - [Egg]
161//!     - [EnderPearl]
162//!     - [ExperienceBottle]
163//!     - [LingeringPotion]
164//!     - [Snowball]
165//!     - [SplashPotion]
166//!   - [AbstractVehicle]
167//!     - [AbstractBoat]
168//!       - [AcaciaBoat]
169//!       - [AcaciaChestBoat]
170//!       - [BambooChestRaft]
171//!       - [BambooRaft]
172//!       - [BirchBoat]
173//!       - [BirchChestBoat]
174//!       - [CherryBoat]
175//!       - [CherryChestBoat]
176//!       - [DarkOakBoat]
177//!       - [DarkOakChestBoat]
178//!       - [JungleBoat]
179//!       - [JungleChestBoat]
180//!       - [MangroveBoat]
181//!       - [MangroveChestBoat]
182//!       - [OakBoat]
183//!       - [OakChestBoat]
184//!       - [PaleOakBoat]
185//!       - [PaleOakChestBoat]
186//!       - [SpruceBoat]
187//!       - [SpruceChestBoat]
188//!     - [AbstractMinecart]
189//!       - [ChestMinecart]
190//!       - [CommandBlockMinecart]
191//!       - [FurnaceMinecart]
192//!       - [HopperMinecart]
193//!       - [Minecart]
194//!       - [SpawnerMinecart]
195//!       - [TntMinecart]
196
197#![allow(clippy::single_match, non_snake_case)]
198
199use azalea_chat::FormattedText;
200use azalea_core::{
201    direction::Direction,
202    position::{BlockPos, Vec3f32},
203};
204use azalea_inventory::{ItemStack, components};
205use azalea_registry::{DataRegistry, builtin::EntityKind};
206use bevy_ecs::{bundle::Bundle, component::Component};
207use derive_more::{Deref, DerefMut};
208use thiserror::Error;
209use uuid::Uuid;
210
211use super::{
212    ArmadilloStateKind, CopperGolemStateKind, EntityDataItem, EntityDataValue, OptionalUnsignedInt,
213    Pose, Quaternion, Rotations, SnifferStateKind, VillagerData, WeatheringCopperStateKind,
214};
215use crate::{HumanoidArm, particle::Particle};
216
217#[derive(Error, Debug)]
218pub enum UpdateMetadataError {
219    #[error("Wrong type ({0:?})")]
220    WrongType(EntityDataValue),
221}
222impl From<EntityDataValue> for UpdateMetadataError {
223    fn from(value: EntityDataValue) -> Self {
224        Self::WrongType(value)
225    }
226}
227
228#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
229/// A metadata field for [AbstractEntity].
230pub struct OnFire(pub bool);
231#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
232/// A metadata field for [AbstractEntity].
233pub struct AbstractEntityShiftKeyDown(pub bool);
234#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
235/// A metadata field for [AbstractEntity].
236pub struct Sprinting(pub bool);
237#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
238/// A metadata field for [AbstractEntity].
239pub struct Swimming(pub bool);
240#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
241/// A metadata field for [AbstractEntity].
242pub struct CurrentlyGlowing(pub bool);
243#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
244/// A metadata field for [AbstractEntity].
245pub struct Invisible(pub bool);
246#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
247/// A metadata field for [AbstractEntity].
248pub struct FallFlying(pub bool);
249/// A metadata field for [AbstractEntity].
250#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
251pub struct AirSupply(pub i32);
252/// A metadata field for [AbstractEntity].
253#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
254pub struct CustomName(pub Option<Box<FormattedText>>);
255/// A metadata field for [AbstractEntity].
256#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
257pub struct CustomNameVisible(pub bool);
258/// A metadata field for [AbstractEntity].
259#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
260pub struct Silent(pub bool);
261/// A metadata field for [AbstractEntity].
262#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
263pub struct NoGravity(pub bool);
264/// A metadata field for [AbstractEntity].
265#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
266pub struct TicksFrozen(pub i32);
267/// The root entity marker component.
268///
269/// All entities that have had their metadata sent by the server will have this
270/// component.
271///
272/// # Metadata
273///
274/// These are the metadata components that all `AbstractEntity` entities are
275/// guaranteed to have, in addition to the metadata components from parent
276/// types:
277///
278/// - [OnFire]
279/// - [AbstractEntityShiftKeyDown]
280/// - [Sprinting]
281/// - [Swimming]
282/// - [CurrentlyGlowing]
283/// - [Invisible]
284/// - [FallFlying]
285/// - [AirSupply]
286/// - [CustomName]
287/// - [CustomNameVisible]
288/// - [Silent]
289/// - [NoGravity]
290/// - [TicksFrozen]
291///
292/// # Children
293///
294/// - [AreaEffectCloud]
295/// - [BreezeWindCharge]
296/// - [DragonFireball]
297/// - [EndCrystal]
298/// - [EvokerFangs]
299/// - [ExperienceOrb]
300/// - [EyeOfEnder]
301/// - [FallingBlock]
302/// - [Fireball]
303/// - [FireworkRocket]
304/// - [FishingBobber]
305/// - [Interaction]
306/// - [Item]
307/// - [ItemFrame]
308///   - [GlowItemFrame]
309/// - [LeashKnot]
310/// - [LightningBolt]
311/// - [LlamaSpit]
312/// - [Marker]
313/// - [OminousItemSpawner]
314/// - [Painting]
315/// - [ShulkerBullet]
316/// - [SmallFireball]
317/// - [Tnt]
318/// - [WindCharge]
319/// - [WitherSkull]
320/// - [AbstractArrow]
321///   - [Arrow]
322///   - [SpectralArrow]
323///   - [Trident]
324/// - [AbstractDisplay]
325///   - [BlockDisplay]
326///   - [ItemDisplay]
327///   - [TextDisplay]
328/// - [AbstractLiving]
329///   - [ArmorStand]
330///   - [AbstractAvatar]
331///     - [Mannequin]
332///     - [Player]
333///   - [AbstractInsentient]
334///     - [Bat]
335///     - [EnderDragon]
336///     - [Ghast]
337///     - [Phantom]
338///     - [Slime]
339///       - [MagmaCube]
340///     - [AbstractCreature]
341///       - [Allay]
342///       - [CopperGolem]
343///       - [IronGolem]
344///       - [Pufferfish]
345///       - [Shulker]
346///       - [SnowGolem]
347///       - [Tadpole]
348///       - [AbstractAgeable]
349///         - [Dolphin]
350///         - [Squid]
351///           - [GlowSquid]
352///         - [AbstractAnimal]
353///           - [Armadillo]
354///           - [Axolotl]
355///           - [Bee]
356///           - [Chicken]
357///           - [Cow]
358///           - [Fox]
359///           - [Frog]
360///           - [Goat]
361///           - [HappyGhast]
362///           - [Hoglin]
363///           - [Mooshroom]
364///           - [Ocelot]
365///           - [Panda]
366///           - [Pig]
367///           - [PolarBear]
368///           - [Rabbit]
369///           - [Sheep]
370///           - [Sniffer]
371///           - [Strider]
372///           - [Turtle]
373///           - [AbstractHorse]
374///             - [Camel]
375///               - [CamelHusk]
376///             - [Horse]
377///             - [SkeletonHorse]
378///             - [ZombieHorse]
379///             - [AbstractChestedHorse]
380///               - [Donkey]
381///               - [Llama]
382///                 - [TraderLlama]
383///               - [Mule]
384///           - [AbstractTameable]
385///             - [Cat]
386///             - [Parrot]
387///             - [Wolf]
388///             - [AbstractNautilus]
389///               - [Nautilus]
390///               - [ZombieNautilus]
391///         - [AbstractVillager]
392///           - [Villager]
393///           - [WanderingTrader]
394///       - [AbstractFish]
395///         - [Cod]
396///         - [Salmon]
397///         - [TropicalFish]
398///       - [AbstractMonster]
399///         - [Blaze]
400///         - [Bogged]
401///         - [Breeze]
402///         - [Creaking]
403///         - [Creeper]
404///         - [Enderman]
405///         - [Endermite]
406///         - [Giant]
407///         - [Guardian]
408///           - [ElderGuardian]
409///         - [Parched]
410///         - [Silverfish]
411///         - [Skeleton]
412///         - [Spider]
413///           - [CaveSpider]
414///         - [Stray]
415///         - [Vex]
416///         - [Warden]
417///         - [Wither]
418///         - [WitherSkeleton]
419///         - [Zoglin]
420///         - [Zombie]
421///           - [Drowned]
422///           - [Husk]
423///           - [ZombieVillager]
424///           - [ZombifiedPiglin]
425///         - [AbstractPiglin]
426///           - [Piglin]
427///           - [PiglinBrute]
428///         - [AbstractRaider]
429///           - [Pillager]
430///           - [Ravager]
431///           - [Vindicator]
432///           - [Witch]
433///           - [AbstractSpellcasterIllager]
434///             - [Evoker]
435///             - [Illusioner]
436/// - [AbstractThrownItemProjectile]
437///   - [Egg]
438///   - [EnderPearl]
439///   - [ExperienceBottle]
440///   - [LingeringPotion]
441///   - [Snowball]
442///   - [SplashPotion]
443/// - [AbstractVehicle]
444///   - [AbstractBoat]
445///     - [AcaciaBoat]
446///     - [AcaciaChestBoat]
447///     - [BambooChestRaft]
448///     - [BambooRaft]
449///     - [BirchBoat]
450///     - [BirchChestBoat]
451///     - [CherryBoat]
452///     - [CherryChestBoat]
453///     - [DarkOakBoat]
454///     - [DarkOakChestBoat]
455///     - [JungleBoat]
456///     - [JungleChestBoat]
457///     - [MangroveBoat]
458///     - [MangroveChestBoat]
459///     - [OakBoat]
460///     - [OakChestBoat]
461///     - [PaleOakBoat]
462///     - [PaleOakChestBoat]
463///     - [SpruceBoat]
464///     - [SpruceChestBoat]
465///   - [AbstractMinecart]
466///     - [ChestMinecart]
467///     - [CommandBlockMinecart]
468///     - [FurnaceMinecart]
469///     - [HopperMinecart]
470///     - [Minecart]
471///     - [SpawnerMinecart]
472///     - [TntMinecart]
473#[derive(Component)]
474pub struct AbstractEntity;
475impl AbstractEntity {
476    fn apply_metadata(
477        entity: &mut bevy_ecs::system::EntityCommands,
478        d: EntityDataItem,
479    ) -> Result<(), UpdateMetadataError> {
480        match d.index {
481            0 => {
482                let bitfield = d.value.into_byte()?;
483                entity.insert(OnFire(bitfield & 0x1 != 0));
484                entity.insert(AbstractEntityShiftKeyDown(bitfield & 0x2 != 0));
485                entity.insert(Sprinting(bitfield & 0x8 != 0));
486                entity.insert(Swimming(bitfield & 0x10 != 0));
487                entity.insert(CurrentlyGlowing(bitfield & 0x40 != 0));
488                entity.insert(Invisible(bitfield & 0x20 != 0));
489                entity.insert(FallFlying(bitfield & 0x80 != 0));
490            }
491            1 => {
492                entity.insert(AirSupply(d.value.into_int()?));
493            }
494            2 => {
495                entity.insert(CustomName(d.value.into_optional_formatted_text()?));
496            }
497            3 => {
498                entity.insert(CustomNameVisible(d.value.into_boolean()?));
499            }
500            4 => {
501                entity.insert(Silent(d.value.into_boolean()?));
502            }
503            5 => {
504                entity.insert(NoGravity(d.value.into_boolean()?));
505            }
506            6 => {
507                entity.insert(d.value.into_pose()?);
508            }
509            7 => {
510                entity.insert(TicksFrozen(d.value.into_int()?));
511            }
512            _ => {}
513        }
514        Ok(())
515    }
516}
517
518/// The metadata bundle for [AbstractEntity].
519///
520/// This type should generally not be used directly.
521#[derive(Bundle)]
522pub struct AbstractEntityMetadataBundle {
523    _marker: AbstractEntity,
524    on_fire: OnFire,
525    abstract_entity_shift_key_down: AbstractEntityShiftKeyDown,
526    sprinting: Sprinting,
527    swimming: Swimming,
528    currently_glowing: CurrentlyGlowing,
529    invisible: Invisible,
530    fall_flying: FallFlying,
531    air_supply: AirSupply,
532    custom_name: CustomName,
533    custom_name_visible: CustomNameVisible,
534    silent: Silent,
535    no_gravity: NoGravity,
536    pose: Pose,
537    ticks_frozen: TicksFrozen,
538}
539impl Default for AbstractEntityMetadataBundle {
540    fn default() -> Self {
541        Self {
542            _marker: AbstractEntity,
543            on_fire: OnFire(false),
544            abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(false),
545            sprinting: Sprinting(false),
546            swimming: Swimming(false),
547            currently_glowing: CurrentlyGlowing(false),
548            invisible: Invisible(false),
549            fall_flying: FallFlying(false),
550            air_supply: AirSupply(Default::default()),
551            custom_name: CustomName(Default::default()),
552            custom_name_visible: CustomNameVisible(Default::default()),
553            silent: Silent(Default::default()),
554            no_gravity: NoGravity(Default::default()),
555            pose: Pose::default(),
556            ticks_frozen: TicksFrozen(Default::default()),
557        }
558    }
559}
560
561/// A metadata field for [AreaEffectCloud].
562#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
563pub struct Radius(pub f32);
564/// A metadata field for [AreaEffectCloud].
565#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
566pub struct Waiting(pub bool);
567/// The marker component for entities of type `minecraft:area_effect_cloud`.
568///
569/// # Metadata
570///
571/// These are the metadata components that all `AreaEffectCloud` entities are
572/// guaranteed to have, in addition to the metadata components from parent
573/// types:
574///
575/// - [Radius]
576/// - [Waiting]
577///
578/// # Parents
579///
580/// Entities with `AreaEffectCloud` will also have the following marker
581/// components and their metadata fields:
582///
583/// - [AbstractEntity]
584///
585/// # Children
586///
587/// This entity type has no children types.
588#[derive(Component)]
589pub struct AreaEffectCloud;
590impl AreaEffectCloud {
591    fn apply_metadata(
592        entity: &mut bevy_ecs::system::EntityCommands,
593        d: EntityDataItem,
594    ) -> Result<(), UpdateMetadataError> {
595        match d.index {
596            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
597            8 => {
598                entity.insert(Radius(d.value.into_float()?));
599            }
600            9 => {
601                entity.insert(Waiting(d.value.into_boolean()?));
602            }
603            10 => {
604                entity.insert(d.value.into_particle()?);
605            }
606            _ => {}
607        }
608        Ok(())
609    }
610}
611
612/// The metadata bundle for [AreaEffectCloud].
613///
614/// This type should generally not be used directly.
615#[derive(Bundle)]
616pub struct AreaEffectCloudMetadataBundle {
617    _marker: AreaEffectCloud,
618    parent: AbstractEntityMetadataBundle,
619    radius: Radius,
620    waiting: Waiting,
621    particle: Particle,
622}
623impl Default for AreaEffectCloudMetadataBundle {
624    fn default() -> Self {
625        Self {
626            _marker: AreaEffectCloud,
627            parent: Default::default(),
628            radius: Radius(3.0),
629            waiting: Waiting(false),
630            particle: Particle::default(),
631        }
632    }
633}
634
635/// The marker component for entities of type `minecraft:breeze_wind_charge`.
636///
637/// # Metadata
638///
639/// This entity type does not add any additional metadata. It will still have
640/// metadata from parent types.
641///
642/// # Parents
643///
644/// Entities with `BreezeWindCharge` will also have the following marker
645/// components and their metadata fields:
646///
647/// - [AbstractEntity]
648///
649/// # Children
650///
651/// This entity type has no children types.
652#[derive(Component)]
653pub struct BreezeWindCharge;
654impl BreezeWindCharge {
655    fn apply_metadata(
656        entity: &mut bevy_ecs::system::EntityCommands,
657        d: EntityDataItem,
658    ) -> Result<(), UpdateMetadataError> {
659        match d.index {
660            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
661            _ => {}
662        }
663        Ok(())
664    }
665}
666
667/// The metadata bundle for [BreezeWindCharge].
668///
669/// This type should generally not be used directly.
670#[derive(Bundle)]
671pub struct BreezeWindChargeMetadataBundle {
672    _marker: BreezeWindCharge,
673    parent: AbstractEntityMetadataBundle,
674}
675impl Default for BreezeWindChargeMetadataBundle {
676    fn default() -> Self {
677        Self {
678            _marker: BreezeWindCharge,
679            parent: Default::default(),
680        }
681    }
682}
683
684/// The marker component for entities of type `minecraft:dragon_fireball`.
685///
686/// # Metadata
687///
688/// This entity type does not add any additional metadata. It will still have
689/// metadata from parent types.
690///
691/// # Parents
692///
693/// Entities with `DragonFireball` will also have the following marker
694/// components and their metadata fields:
695///
696/// - [AbstractEntity]
697///
698/// # Children
699///
700/// This entity type has no children types.
701#[derive(Component)]
702pub struct DragonFireball;
703impl DragonFireball {
704    fn apply_metadata(
705        entity: &mut bevy_ecs::system::EntityCommands,
706        d: EntityDataItem,
707    ) -> Result<(), UpdateMetadataError> {
708        match d.index {
709            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
710            _ => {}
711        }
712        Ok(())
713    }
714}
715
716/// The metadata bundle for [DragonFireball].
717///
718/// This type should generally not be used directly.
719#[derive(Bundle)]
720pub struct DragonFireballMetadataBundle {
721    _marker: DragonFireball,
722    parent: AbstractEntityMetadataBundle,
723}
724impl Default for DragonFireballMetadataBundle {
725    fn default() -> Self {
726        Self {
727            _marker: DragonFireball,
728            parent: Default::default(),
729        }
730    }
731}
732
733/// A metadata field for [EndCrystal].
734#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
735pub struct BeamTarget(pub Option<BlockPos>);
736/// A metadata field for [EndCrystal].
737#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
738pub struct ShowBottom(pub bool);
739/// The marker component for entities of type `minecraft:end_crystal`.
740///
741/// # Metadata
742///
743/// These are the metadata components that all `EndCrystal` entities are
744/// guaranteed to have, in addition to the metadata components from parent
745/// types:
746///
747/// - [BeamTarget]
748/// - [ShowBottom]
749///
750/// # Parents
751///
752/// Entities with `EndCrystal` will also have the following marker components
753/// and their metadata fields:
754///
755/// - [AbstractEntity]
756///
757/// # Children
758///
759/// This entity type has no children types.
760#[derive(Component)]
761pub struct EndCrystal;
762impl EndCrystal {
763    fn apply_metadata(
764        entity: &mut bevy_ecs::system::EntityCommands,
765        d: EntityDataItem,
766    ) -> Result<(), UpdateMetadataError> {
767        match d.index {
768            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
769            8 => {
770                entity.insert(BeamTarget(d.value.into_optional_block_pos()?));
771            }
772            9 => {
773                entity.insert(ShowBottom(d.value.into_boolean()?));
774            }
775            _ => {}
776        }
777        Ok(())
778    }
779}
780
781/// The metadata bundle for [EndCrystal].
782///
783/// This type should generally not be used directly.
784#[derive(Bundle)]
785pub struct EndCrystalMetadataBundle {
786    _marker: EndCrystal,
787    parent: AbstractEntityMetadataBundle,
788    beam_target: BeamTarget,
789    show_bottom: ShowBottom,
790}
791impl Default for EndCrystalMetadataBundle {
792    fn default() -> Self {
793        Self {
794            _marker: EndCrystal,
795            parent: Default::default(),
796            beam_target: BeamTarget(None),
797            show_bottom: ShowBottom(true),
798        }
799    }
800}
801
802/// The marker component for entities of type `minecraft:evoker_fangs`.
803///
804/// # Metadata
805///
806/// This entity type does not add any additional metadata. It will still have
807/// metadata from parent types.
808///
809/// # Parents
810///
811/// Entities with `EvokerFangs` will also have the following marker components
812/// and their metadata fields:
813///
814/// - [AbstractEntity]
815///
816/// # Children
817///
818/// This entity type has no children types.
819#[derive(Component)]
820pub struct EvokerFangs;
821impl EvokerFangs {
822    fn apply_metadata(
823        entity: &mut bevy_ecs::system::EntityCommands,
824        d: EntityDataItem,
825    ) -> Result<(), UpdateMetadataError> {
826        match d.index {
827            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
828            _ => {}
829        }
830        Ok(())
831    }
832}
833
834/// The metadata bundle for [EvokerFangs].
835///
836/// This type should generally not be used directly.
837#[derive(Bundle)]
838pub struct EvokerFangsMetadataBundle {
839    _marker: EvokerFangs,
840    parent: AbstractEntityMetadataBundle,
841}
842impl Default for EvokerFangsMetadataBundle {
843    fn default() -> Self {
844        Self {
845            _marker: EvokerFangs,
846            parent: Default::default(),
847        }
848    }
849}
850
851/// A metadata field for [ExperienceOrb].
852#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
853pub struct Value(pub i32);
854/// The marker component for entities of type `minecraft:experience_orb`.
855///
856/// # Metadata
857///
858/// These are the metadata components that all `ExperienceOrb` entities are
859/// guaranteed to have, in addition to the metadata components from parent
860/// types:
861///
862/// - [Value]
863///
864/// # Parents
865///
866/// Entities with `ExperienceOrb` will also have the following marker components
867/// and their metadata fields:
868///
869/// - [AbstractEntity]
870///
871/// # Children
872///
873/// This entity type has no children types.
874#[derive(Component)]
875pub struct ExperienceOrb;
876impl ExperienceOrb {
877    fn apply_metadata(
878        entity: &mut bevy_ecs::system::EntityCommands,
879        d: EntityDataItem,
880    ) -> Result<(), UpdateMetadataError> {
881        match d.index {
882            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
883            8 => {
884                entity.insert(Value(d.value.into_int()?));
885            }
886            _ => {}
887        }
888        Ok(())
889    }
890}
891
892/// The metadata bundle for [ExperienceOrb].
893///
894/// This type should generally not be used directly.
895#[derive(Bundle)]
896pub struct ExperienceOrbMetadataBundle {
897    _marker: ExperienceOrb,
898    parent: AbstractEntityMetadataBundle,
899    value: Value,
900}
901impl Default for ExperienceOrbMetadataBundle {
902    fn default() -> Self {
903        Self {
904            _marker: ExperienceOrb,
905            parent: Default::default(),
906            value: Value(0),
907        }
908    }
909}
910
911/// A metadata field for [EyeOfEnder].
912#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
913pub struct EyeOfEnderItemStack(pub ItemStack);
914/// The marker component for entities of type `minecraft:eye_of_ender`.
915///
916/// # Metadata
917///
918/// These are the metadata components that all `EyeOfEnder` entities are
919/// guaranteed to have, in addition to the metadata components from parent
920/// types:
921///
922/// - [EyeOfEnderItemStack]
923///
924/// # Parents
925///
926/// Entities with `EyeOfEnder` will also have the following marker components
927/// and their metadata fields:
928///
929/// - [AbstractEntity]
930///
931/// # Children
932///
933/// This entity type has no children types.
934#[derive(Component)]
935pub struct EyeOfEnder;
936impl EyeOfEnder {
937    fn apply_metadata(
938        entity: &mut bevy_ecs::system::EntityCommands,
939        d: EntityDataItem,
940    ) -> Result<(), UpdateMetadataError> {
941        match d.index {
942            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
943            8 => {
944                entity.insert(EyeOfEnderItemStack(d.value.into_item_stack()?));
945            }
946            _ => {}
947        }
948        Ok(())
949    }
950}
951
952/// The metadata bundle for [EyeOfEnder].
953///
954/// This type should generally not be used directly.
955#[derive(Bundle)]
956pub struct EyeOfEnderMetadataBundle {
957    _marker: EyeOfEnder,
958    parent: AbstractEntityMetadataBundle,
959    eye_of_ender_item_stack: EyeOfEnderItemStack,
960}
961impl Default for EyeOfEnderMetadataBundle {
962    fn default() -> Self {
963        Self {
964            _marker: EyeOfEnder,
965            parent: Default::default(),
966            eye_of_ender_item_stack: EyeOfEnderItemStack(Default::default()),
967        }
968    }
969}
970
971/// A metadata field for [FallingBlock].
972#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
973pub struct StartPos(pub BlockPos);
974/// The marker component for entities of type `minecraft:falling_block`.
975///
976/// # Metadata
977///
978/// These are the metadata components that all `FallingBlock` entities are
979/// guaranteed to have, in addition to the metadata components from parent
980/// types:
981///
982/// - [StartPos]
983///
984/// # Parents
985///
986/// Entities with `FallingBlock` will also have the following marker components
987/// and their metadata fields:
988///
989/// - [AbstractEntity]
990///
991/// # Children
992///
993/// This entity type has no children types.
994#[derive(Component)]
995pub struct FallingBlock;
996impl FallingBlock {
997    fn apply_metadata(
998        entity: &mut bevy_ecs::system::EntityCommands,
999        d: EntityDataItem,
1000    ) -> Result<(), UpdateMetadataError> {
1001        match d.index {
1002            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1003            8 => {
1004                entity.insert(StartPos(d.value.into_block_pos()?));
1005            }
1006            _ => {}
1007        }
1008        Ok(())
1009    }
1010}
1011
1012/// The metadata bundle for [FallingBlock].
1013///
1014/// This type should generally not be used directly.
1015#[derive(Bundle)]
1016pub struct FallingBlockMetadataBundle {
1017    _marker: FallingBlock,
1018    parent: AbstractEntityMetadataBundle,
1019    start_pos: StartPos,
1020}
1021impl Default for FallingBlockMetadataBundle {
1022    fn default() -> Self {
1023        Self {
1024            _marker: FallingBlock,
1025            parent: Default::default(),
1026            start_pos: StartPos(BlockPos::new(0, 0, 0)),
1027        }
1028    }
1029}
1030
1031/// A metadata field for [Fireball].
1032#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1033pub struct FireballItemStack(pub ItemStack);
1034/// The marker component for entities of type `minecraft:fireball`.
1035///
1036/// # Metadata
1037///
1038/// These are the metadata components that all `Fireball` entities are
1039/// guaranteed to have, in addition to the metadata components from parent
1040/// types:
1041///
1042/// - [FireballItemStack]
1043///
1044/// # Parents
1045///
1046/// Entities with `Fireball` will also have the following marker components and
1047/// their metadata fields:
1048///
1049/// - [AbstractEntity]
1050///
1051/// # Children
1052///
1053/// This entity type has no children types.
1054#[derive(Component)]
1055pub struct Fireball;
1056impl Fireball {
1057    fn apply_metadata(
1058        entity: &mut bevy_ecs::system::EntityCommands,
1059        d: EntityDataItem,
1060    ) -> Result<(), UpdateMetadataError> {
1061        match d.index {
1062            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1063            8 => {
1064                entity.insert(FireballItemStack(d.value.into_item_stack()?));
1065            }
1066            _ => {}
1067        }
1068        Ok(())
1069    }
1070}
1071
1072/// The metadata bundle for [Fireball].
1073///
1074/// This type should generally not be used directly.
1075#[derive(Bundle)]
1076pub struct FireballMetadataBundle {
1077    _marker: Fireball,
1078    parent: AbstractEntityMetadataBundle,
1079    fireball_item_stack: FireballItemStack,
1080}
1081impl Default for FireballMetadataBundle {
1082    fn default() -> Self {
1083        Self {
1084            _marker: Fireball,
1085            parent: Default::default(),
1086            fireball_item_stack: FireballItemStack(Default::default()),
1087        }
1088    }
1089}
1090
1091/// A metadata field for [FireworkRocket].
1092#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1093pub struct FireworksItem(pub ItemStack);
1094/// A metadata field for [FireworkRocket].
1095#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1096pub struct AttachedToTarget(pub OptionalUnsignedInt);
1097/// A metadata field for [FireworkRocket].
1098#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1099pub struct ShotAtAngle(pub bool);
1100/// The marker component for entities of type `minecraft:firework_rocket`.
1101///
1102/// # Metadata
1103///
1104/// These are the metadata components that all `FireworkRocket` entities are
1105/// guaranteed to have, in addition to the metadata components from parent
1106/// types:
1107///
1108/// - [FireworksItem]
1109/// - [AttachedToTarget]
1110/// - [ShotAtAngle]
1111///
1112/// # Parents
1113///
1114/// Entities with `FireworkRocket` will also have the following marker
1115/// components and their metadata fields:
1116///
1117/// - [AbstractEntity]
1118///
1119/// # Children
1120///
1121/// This entity type has no children types.
1122#[derive(Component)]
1123pub struct FireworkRocket;
1124impl FireworkRocket {
1125    fn apply_metadata(
1126        entity: &mut bevy_ecs::system::EntityCommands,
1127        d: EntityDataItem,
1128    ) -> Result<(), UpdateMetadataError> {
1129        match d.index {
1130            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1131            8 => {
1132                entity.insert(FireworksItem(d.value.into_item_stack()?));
1133            }
1134            9 => {
1135                entity.insert(AttachedToTarget(d.value.into_optional_unsigned_int()?));
1136            }
1137            10 => {
1138                entity.insert(ShotAtAngle(d.value.into_boolean()?));
1139            }
1140            _ => {}
1141        }
1142        Ok(())
1143    }
1144}
1145
1146/// The metadata bundle for [FireworkRocket].
1147///
1148/// This type should generally not be used directly.
1149#[derive(Bundle)]
1150pub struct FireworkRocketMetadataBundle {
1151    _marker: FireworkRocket,
1152    parent: AbstractEntityMetadataBundle,
1153    fireworks_item: FireworksItem,
1154    attached_to_target: AttachedToTarget,
1155    shot_at_angle: ShotAtAngle,
1156}
1157impl Default for FireworkRocketMetadataBundle {
1158    fn default() -> Self {
1159        Self {
1160            _marker: FireworkRocket,
1161            parent: Default::default(),
1162            fireworks_item: FireworksItem(Default::default()),
1163            attached_to_target: AttachedToTarget(OptionalUnsignedInt(None)),
1164            shot_at_angle: ShotAtAngle(false),
1165        }
1166    }
1167}
1168
1169/// A metadata field for [FishingBobber].
1170#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1171pub struct HookedEntity(pub i32);
1172/// A metadata field for [FishingBobber].
1173#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1174pub struct Biting(pub bool);
1175/// The marker component for entities of type `minecraft:fishing_bobber`.
1176///
1177/// # Metadata
1178///
1179/// These are the metadata components that all `FishingBobber` entities are
1180/// guaranteed to have, in addition to the metadata components from parent
1181/// types:
1182///
1183/// - [HookedEntity]
1184/// - [Biting]
1185///
1186/// # Parents
1187///
1188/// Entities with `FishingBobber` will also have the following marker components
1189/// and their metadata fields:
1190///
1191/// - [AbstractEntity]
1192///
1193/// # Children
1194///
1195/// This entity type has no children types.
1196#[derive(Component)]
1197pub struct FishingBobber;
1198impl FishingBobber {
1199    fn apply_metadata(
1200        entity: &mut bevy_ecs::system::EntityCommands,
1201        d: EntityDataItem,
1202    ) -> Result<(), UpdateMetadataError> {
1203        match d.index {
1204            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1205            8 => {
1206                entity.insert(HookedEntity(d.value.into_int()?));
1207            }
1208            9 => {
1209                entity.insert(Biting(d.value.into_boolean()?));
1210            }
1211            _ => {}
1212        }
1213        Ok(())
1214    }
1215}
1216
1217/// The metadata bundle for [FishingBobber].
1218///
1219/// This type should generally not be used directly.
1220#[derive(Bundle)]
1221pub struct FishingBobberMetadataBundle {
1222    _marker: FishingBobber,
1223    parent: AbstractEntityMetadataBundle,
1224    hooked_entity: HookedEntity,
1225    biting: Biting,
1226}
1227impl Default for FishingBobberMetadataBundle {
1228    fn default() -> Self {
1229        Self {
1230            _marker: FishingBobber,
1231            parent: Default::default(),
1232            hooked_entity: HookedEntity(0),
1233            biting: Biting(false),
1234        }
1235    }
1236}
1237
1238/// A metadata field for [Interaction].
1239#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1240pub struct InteractionWidth(pub f32);
1241/// A metadata field for [Interaction].
1242#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1243pub struct InteractionHeight(pub f32);
1244/// A metadata field for [Interaction].
1245#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1246pub struct Response(pub bool);
1247/// The marker component for entities of type `minecraft:interaction`.
1248///
1249/// # Metadata
1250///
1251/// These are the metadata components that all `Interaction` entities are
1252/// guaranteed to have, in addition to the metadata components from parent
1253/// types:
1254///
1255/// - [InteractionWidth]
1256/// - [InteractionHeight]
1257/// - [Response]
1258///
1259/// # Parents
1260///
1261/// Entities with `Interaction` will also have the following marker components
1262/// and their metadata fields:
1263///
1264/// - [AbstractEntity]
1265///
1266/// # Children
1267///
1268/// This entity type has no children types.
1269#[derive(Component)]
1270pub struct Interaction;
1271impl Interaction {
1272    fn apply_metadata(
1273        entity: &mut bevy_ecs::system::EntityCommands,
1274        d: EntityDataItem,
1275    ) -> Result<(), UpdateMetadataError> {
1276        match d.index {
1277            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1278            8 => {
1279                entity.insert(InteractionWidth(d.value.into_float()?));
1280            }
1281            9 => {
1282                entity.insert(InteractionHeight(d.value.into_float()?));
1283            }
1284            10 => {
1285                entity.insert(Response(d.value.into_boolean()?));
1286            }
1287            _ => {}
1288        }
1289        Ok(())
1290    }
1291}
1292
1293/// The metadata bundle for [Interaction].
1294///
1295/// This type should generally not be used directly.
1296#[derive(Bundle)]
1297pub struct InteractionMetadataBundle {
1298    _marker: Interaction,
1299    parent: AbstractEntityMetadataBundle,
1300    interaction_width: InteractionWidth,
1301    interaction_height: InteractionHeight,
1302    response: Response,
1303}
1304impl Default for InteractionMetadataBundle {
1305    fn default() -> Self {
1306        Self {
1307            _marker: Interaction,
1308            parent: Default::default(),
1309            interaction_width: InteractionWidth(1.0),
1310            interaction_height: InteractionHeight(1.0),
1311            response: Response(false),
1312        }
1313    }
1314}
1315
1316/// A metadata field for [Item].
1317#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1318pub struct ItemItem(pub ItemStack);
1319/// The marker component for entities of type `minecraft:item`.
1320///
1321/// # Metadata
1322///
1323/// These are the metadata components that all `Item` entities are guaranteed to
1324/// have, in addition to the metadata components from parent types:
1325///
1326/// - [ItemItem]
1327///
1328/// # Parents
1329///
1330/// Entities with `Item` will also have the following marker components and
1331/// their metadata fields:
1332///
1333/// - [AbstractEntity]
1334///
1335/// # Children
1336///
1337/// This entity type has no children types.
1338#[derive(Component)]
1339pub struct Item;
1340impl Item {
1341    fn apply_metadata(
1342        entity: &mut bevy_ecs::system::EntityCommands,
1343        d: EntityDataItem,
1344    ) -> Result<(), UpdateMetadataError> {
1345        match d.index {
1346            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1347            8 => {
1348                entity.insert(ItemItem(d.value.into_item_stack()?));
1349            }
1350            _ => {}
1351        }
1352        Ok(())
1353    }
1354}
1355
1356/// The metadata bundle for [Item].
1357///
1358/// This type should generally not be used directly.
1359#[derive(Bundle)]
1360pub struct ItemMetadataBundle {
1361    _marker: Item,
1362    parent: AbstractEntityMetadataBundle,
1363    item_item: ItemItem,
1364}
1365impl Default for ItemMetadataBundle {
1366    fn default() -> Self {
1367        Self {
1368            _marker: Item,
1369            parent: Default::default(),
1370            item_item: ItemItem(Default::default()),
1371        }
1372    }
1373}
1374
1375/// A metadata field for [ItemFrame].
1376#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1377pub struct ItemFrameDirection(pub Direction);
1378/// A metadata field for [ItemFrame].
1379#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1380pub struct ItemFrameItem(pub ItemStack);
1381/// A metadata field for [ItemFrame].
1382#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1383pub struct Rotation(pub i32);
1384/// The marker component for entities of type `minecraft:item_frame`.
1385///
1386/// # Metadata
1387///
1388/// These are the metadata components that all `ItemFrame` entities are
1389/// guaranteed to have, in addition to the metadata components from parent
1390/// types:
1391///
1392/// - [ItemFrameDirection]
1393/// - [ItemFrameItem]
1394/// - [Rotation]
1395///
1396/// # Parents
1397///
1398/// Entities with `ItemFrame` will also have the following marker components and
1399/// their metadata fields:
1400///
1401/// - [AbstractEntity]
1402///
1403/// # Children
1404///
1405/// - [GlowItemFrame]
1406#[derive(Component)]
1407pub struct ItemFrame;
1408impl ItemFrame {
1409    fn apply_metadata(
1410        entity: &mut bevy_ecs::system::EntityCommands,
1411        d: EntityDataItem,
1412    ) -> Result<(), UpdateMetadataError> {
1413        match d.index {
1414            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1415            8 => {
1416                entity.insert(ItemFrameDirection(d.value.into_direction()?));
1417            }
1418            9 => {
1419                entity.insert(ItemFrameItem(d.value.into_item_stack()?));
1420            }
1421            10 => {
1422                entity.insert(Rotation(d.value.into_int()?));
1423            }
1424            _ => {}
1425        }
1426        Ok(())
1427    }
1428}
1429
1430/// The metadata bundle for [ItemFrame].
1431///
1432/// This type should generally not be used directly.
1433#[derive(Bundle)]
1434pub struct ItemFrameMetadataBundle {
1435    _marker: ItemFrame,
1436    parent: AbstractEntityMetadataBundle,
1437    item_frame_direction: ItemFrameDirection,
1438    item_frame_item: ItemFrameItem,
1439    rotation: Rotation,
1440}
1441impl Default for ItemFrameMetadataBundle {
1442    fn default() -> Self {
1443        Self {
1444            _marker: ItemFrame,
1445            parent: Default::default(),
1446            item_frame_direction: ItemFrameDirection(Default::default()),
1447            item_frame_item: ItemFrameItem(Default::default()),
1448            rotation: Rotation(0),
1449        }
1450    }
1451}
1452
1453/// The marker component for entities of type `minecraft:glow_item_frame`.
1454///
1455/// # Metadata
1456///
1457/// This entity type does not add any additional metadata. It will still have
1458/// metadata from parent types.
1459///
1460/// # Parents
1461///
1462/// Entities with `GlowItemFrame` will also have the following marker components
1463/// and their metadata fields:
1464///
1465/// - [ItemFrame]
1466/// - [AbstractEntity]
1467///
1468/// # Children
1469///
1470/// This entity type has no children types.
1471#[derive(Component)]
1472pub struct GlowItemFrame;
1473impl GlowItemFrame {
1474    fn apply_metadata(
1475        entity: &mut bevy_ecs::system::EntityCommands,
1476        d: EntityDataItem,
1477    ) -> Result<(), UpdateMetadataError> {
1478        match d.index {
1479            0..=10 => ItemFrame::apply_metadata(entity, d)?,
1480            _ => {}
1481        }
1482        Ok(())
1483    }
1484}
1485
1486/// The metadata bundle for [GlowItemFrame].
1487///
1488/// This type should generally not be used directly.
1489#[derive(Bundle)]
1490pub struct GlowItemFrameMetadataBundle {
1491    _marker: GlowItemFrame,
1492    parent: ItemFrameMetadataBundle,
1493}
1494impl Default for GlowItemFrameMetadataBundle {
1495    fn default() -> Self {
1496        Self {
1497            _marker: GlowItemFrame,
1498            parent: Default::default(),
1499        }
1500    }
1501}
1502
1503/// The marker component for entities of type `minecraft:leash_knot`.
1504///
1505/// # Metadata
1506///
1507/// This entity type does not add any additional metadata. It will still have
1508/// metadata from parent types.
1509///
1510/// # Parents
1511///
1512/// Entities with `LeashKnot` will also have the following marker components and
1513/// their metadata fields:
1514///
1515/// - [AbstractEntity]
1516///
1517/// # Children
1518///
1519/// This entity type has no children types.
1520#[derive(Component)]
1521pub struct LeashKnot;
1522impl LeashKnot {
1523    fn apply_metadata(
1524        entity: &mut bevy_ecs::system::EntityCommands,
1525        d: EntityDataItem,
1526    ) -> Result<(), UpdateMetadataError> {
1527        match d.index {
1528            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1529            _ => {}
1530        }
1531        Ok(())
1532    }
1533}
1534
1535/// The metadata bundle for [LeashKnot].
1536///
1537/// This type should generally not be used directly.
1538#[derive(Bundle)]
1539pub struct LeashKnotMetadataBundle {
1540    _marker: LeashKnot,
1541    parent: AbstractEntityMetadataBundle,
1542}
1543impl Default for LeashKnotMetadataBundle {
1544    fn default() -> Self {
1545        Self {
1546            _marker: LeashKnot,
1547            parent: Default::default(),
1548        }
1549    }
1550}
1551
1552/// The marker component for entities of type `minecraft:lightning_bolt`.
1553///
1554/// # Metadata
1555///
1556/// This entity type does not add any additional metadata. It will still have
1557/// metadata from parent types.
1558///
1559/// # Parents
1560///
1561/// Entities with `LightningBolt` will also have the following marker components
1562/// and their metadata fields:
1563///
1564/// - [AbstractEntity]
1565///
1566/// # Children
1567///
1568/// This entity type has no children types.
1569#[derive(Component)]
1570pub struct LightningBolt;
1571impl LightningBolt {
1572    fn apply_metadata(
1573        entity: &mut bevy_ecs::system::EntityCommands,
1574        d: EntityDataItem,
1575    ) -> Result<(), UpdateMetadataError> {
1576        match d.index {
1577            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1578            _ => {}
1579        }
1580        Ok(())
1581    }
1582}
1583
1584/// The metadata bundle for [LightningBolt].
1585///
1586/// This type should generally not be used directly.
1587#[derive(Bundle)]
1588pub struct LightningBoltMetadataBundle {
1589    _marker: LightningBolt,
1590    parent: AbstractEntityMetadataBundle,
1591}
1592impl Default for LightningBoltMetadataBundle {
1593    fn default() -> Self {
1594        Self {
1595            _marker: LightningBolt,
1596            parent: Default::default(),
1597        }
1598    }
1599}
1600
1601/// The marker component for entities of type `minecraft:llama_spit`.
1602///
1603/// # Metadata
1604///
1605/// This entity type does not add any additional metadata. It will still have
1606/// metadata from parent types.
1607///
1608/// # Parents
1609///
1610/// Entities with `LlamaSpit` will also have the following marker components and
1611/// their metadata fields:
1612///
1613/// - [AbstractEntity]
1614///
1615/// # Children
1616///
1617/// This entity type has no children types.
1618#[derive(Component)]
1619pub struct LlamaSpit;
1620impl LlamaSpit {
1621    fn apply_metadata(
1622        entity: &mut bevy_ecs::system::EntityCommands,
1623        d: EntityDataItem,
1624    ) -> Result<(), UpdateMetadataError> {
1625        match d.index {
1626            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1627            _ => {}
1628        }
1629        Ok(())
1630    }
1631}
1632
1633/// The metadata bundle for [LlamaSpit].
1634///
1635/// This type should generally not be used directly.
1636#[derive(Bundle)]
1637pub struct LlamaSpitMetadataBundle {
1638    _marker: LlamaSpit,
1639    parent: AbstractEntityMetadataBundle,
1640}
1641impl Default for LlamaSpitMetadataBundle {
1642    fn default() -> Self {
1643        Self {
1644            _marker: LlamaSpit,
1645            parent: Default::default(),
1646        }
1647    }
1648}
1649
1650/// The marker component for entities of type `minecraft:marker`.
1651///
1652/// # Metadata
1653///
1654/// This entity type does not add any additional metadata. It will still have
1655/// metadata from parent types.
1656///
1657/// # Parents
1658///
1659/// Entities with `Marker` will also have the following marker components and
1660/// their metadata fields:
1661///
1662/// - [AbstractEntity]
1663///
1664/// # Children
1665///
1666/// This entity type has no children types.
1667#[derive(Component)]
1668pub struct Marker;
1669impl Marker {
1670    fn apply_metadata(
1671        entity: &mut bevy_ecs::system::EntityCommands,
1672        d: EntityDataItem,
1673    ) -> Result<(), UpdateMetadataError> {
1674        match d.index {
1675            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1676            _ => {}
1677        }
1678        Ok(())
1679    }
1680}
1681
1682/// The metadata bundle for [Marker].
1683///
1684/// This type should generally not be used directly.
1685#[derive(Bundle)]
1686pub struct MarkerMetadataBundle {
1687    _marker: Marker,
1688    parent: AbstractEntityMetadataBundle,
1689}
1690impl Default for MarkerMetadataBundle {
1691    fn default() -> Self {
1692        Self {
1693            _marker: Marker,
1694            parent: Default::default(),
1695        }
1696    }
1697}
1698
1699/// A metadata field for [OminousItemSpawner].
1700#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1701pub struct OminousItemSpawnerItem(pub ItemStack);
1702/// The marker component for entities of type `minecraft:ominous_item_spawner`.
1703///
1704/// # Metadata
1705///
1706/// These are the metadata components that all `OminousItemSpawner` entities are
1707/// guaranteed to have, in addition to the metadata components from parent
1708/// types:
1709///
1710/// - [OminousItemSpawnerItem]
1711///
1712/// # Parents
1713///
1714/// Entities with `OminousItemSpawner` will also have the following marker
1715/// components and their metadata fields:
1716///
1717/// - [AbstractEntity]
1718///
1719/// # Children
1720///
1721/// This entity type has no children types.
1722#[derive(Component)]
1723pub struct OminousItemSpawner;
1724impl OminousItemSpawner {
1725    fn apply_metadata(
1726        entity: &mut bevy_ecs::system::EntityCommands,
1727        d: EntityDataItem,
1728    ) -> Result<(), UpdateMetadataError> {
1729        match d.index {
1730            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1731            8 => {
1732                entity.insert(OminousItemSpawnerItem(d.value.into_item_stack()?));
1733            }
1734            _ => {}
1735        }
1736        Ok(())
1737    }
1738}
1739
1740/// The metadata bundle for [OminousItemSpawner].
1741///
1742/// This type should generally not be used directly.
1743#[derive(Bundle)]
1744pub struct OminousItemSpawnerMetadataBundle {
1745    _marker: OminousItemSpawner,
1746    parent: AbstractEntityMetadataBundle,
1747    ominous_item_spawner_item: OminousItemSpawnerItem,
1748}
1749impl Default for OminousItemSpawnerMetadataBundle {
1750    fn default() -> Self {
1751        Self {
1752            _marker: OminousItemSpawner,
1753            parent: Default::default(),
1754            ominous_item_spawner_item: OminousItemSpawnerItem(Default::default()),
1755        }
1756    }
1757}
1758
1759/// A metadata field for [Painting].
1760#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1761pub struct PaintingDirection(pub Direction);
1762/// A metadata field for [Painting].
1763#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1764pub struct PaintingVariant(pub azalea_registry::data::PaintingVariant);
1765/// The marker component for entities of type `minecraft:painting`.
1766///
1767/// # Metadata
1768///
1769/// These are the metadata components that all `Painting` entities are
1770/// guaranteed to have, in addition to the metadata components from parent
1771/// types:
1772///
1773/// - [PaintingDirection]
1774/// - [PaintingVariant]
1775///
1776/// # Parents
1777///
1778/// Entities with `Painting` will also have the following marker components and
1779/// their metadata fields:
1780///
1781/// - [AbstractEntity]
1782///
1783/// # Children
1784///
1785/// This entity type has no children types.
1786#[derive(Component)]
1787pub struct Painting;
1788impl Painting {
1789    fn apply_metadata(
1790        entity: &mut bevy_ecs::system::EntityCommands,
1791        d: EntityDataItem,
1792    ) -> Result<(), UpdateMetadataError> {
1793        match d.index {
1794            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1795            8 => {
1796                entity.insert(PaintingDirection(d.value.into_direction()?));
1797            }
1798            9 => {
1799                entity.insert(PaintingVariant(d.value.into_painting_variant()?));
1800            }
1801            _ => {}
1802        }
1803        Ok(())
1804    }
1805}
1806
1807/// The metadata bundle for [Painting].
1808///
1809/// This type should generally not be used directly.
1810#[derive(Bundle)]
1811pub struct PaintingMetadataBundle {
1812    _marker: Painting,
1813    parent: AbstractEntityMetadataBundle,
1814    painting_direction: PaintingDirection,
1815    painting_variant: PaintingVariant,
1816}
1817impl Default for PaintingMetadataBundle {
1818    fn default() -> Self {
1819        Self {
1820            _marker: Painting,
1821            parent: Default::default(),
1822            painting_direction: PaintingDirection(Default::default()),
1823            painting_variant: PaintingVariant(azalea_registry::data::PaintingVariant::new_raw(0)),
1824        }
1825    }
1826}
1827
1828/// The marker component for entities of type `minecraft:shulker_bullet`.
1829///
1830/// # Metadata
1831///
1832/// This entity type does not add any additional metadata. It will still have
1833/// metadata from parent types.
1834///
1835/// # Parents
1836///
1837/// Entities with `ShulkerBullet` will also have the following marker components
1838/// and their metadata fields:
1839///
1840/// - [AbstractEntity]
1841///
1842/// # Children
1843///
1844/// This entity type has no children types.
1845#[derive(Component)]
1846pub struct ShulkerBullet;
1847impl ShulkerBullet {
1848    fn apply_metadata(
1849        entity: &mut bevy_ecs::system::EntityCommands,
1850        d: EntityDataItem,
1851    ) -> Result<(), UpdateMetadataError> {
1852        match d.index {
1853            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1854            _ => {}
1855        }
1856        Ok(())
1857    }
1858}
1859
1860/// The metadata bundle for [ShulkerBullet].
1861///
1862/// This type should generally not be used directly.
1863#[derive(Bundle)]
1864pub struct ShulkerBulletMetadataBundle {
1865    _marker: ShulkerBullet,
1866    parent: AbstractEntityMetadataBundle,
1867}
1868impl Default for ShulkerBulletMetadataBundle {
1869    fn default() -> Self {
1870        Self {
1871            _marker: ShulkerBullet,
1872            parent: Default::default(),
1873        }
1874    }
1875}
1876
1877/// A metadata field for [SmallFireball].
1878#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1879pub struct SmallFireballItemStack(pub ItemStack);
1880/// The marker component for entities of type `minecraft:small_fireball`.
1881///
1882/// # Metadata
1883///
1884/// These are the metadata components that all `SmallFireball` entities are
1885/// guaranteed to have, in addition to the metadata components from parent
1886/// types:
1887///
1888/// - [SmallFireballItemStack]
1889///
1890/// # Parents
1891///
1892/// Entities with `SmallFireball` will also have the following marker components
1893/// and their metadata fields:
1894///
1895/// - [AbstractEntity]
1896///
1897/// # Children
1898///
1899/// This entity type has no children types.
1900#[derive(Component)]
1901pub struct SmallFireball;
1902impl SmallFireball {
1903    fn apply_metadata(
1904        entity: &mut bevy_ecs::system::EntityCommands,
1905        d: EntityDataItem,
1906    ) -> Result<(), UpdateMetadataError> {
1907        match d.index {
1908            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1909            8 => {
1910                entity.insert(SmallFireballItemStack(d.value.into_item_stack()?));
1911            }
1912            _ => {}
1913        }
1914        Ok(())
1915    }
1916}
1917
1918/// The metadata bundle for [SmallFireball].
1919///
1920/// This type should generally not be used directly.
1921#[derive(Bundle)]
1922pub struct SmallFireballMetadataBundle {
1923    _marker: SmallFireball,
1924    parent: AbstractEntityMetadataBundle,
1925    small_fireball_item_stack: SmallFireballItemStack,
1926}
1927impl Default for SmallFireballMetadataBundle {
1928    fn default() -> Self {
1929        Self {
1930            _marker: SmallFireball,
1931            parent: Default::default(),
1932            small_fireball_item_stack: SmallFireballItemStack(Default::default()),
1933        }
1934    }
1935}
1936
1937/// A metadata field for [Tnt].
1938#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1939pub struct Fuse(pub i32);
1940/// A metadata field for [Tnt].
1941#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
1942pub struct TntBlockState(pub azalea_block::BlockState);
1943/// The marker component for entities of type `minecraft:tnt`.
1944///
1945/// # Metadata
1946///
1947/// These are the metadata components that all `Tnt` entities are guaranteed to
1948/// have, in addition to the metadata components from parent types:
1949///
1950/// - [Fuse]
1951/// - [TntBlockState]
1952///
1953/// # Parents
1954///
1955/// Entities with `Tnt` will also have the following marker components and their
1956/// metadata fields:
1957///
1958/// - [AbstractEntity]
1959///
1960/// # Children
1961///
1962/// This entity type has no children types.
1963#[derive(Component)]
1964pub struct Tnt;
1965impl Tnt {
1966    fn apply_metadata(
1967        entity: &mut bevy_ecs::system::EntityCommands,
1968        d: EntityDataItem,
1969    ) -> Result<(), UpdateMetadataError> {
1970        match d.index {
1971            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
1972            8 => {
1973                entity.insert(Fuse(d.value.into_int()?));
1974            }
1975            9 => {
1976                entity.insert(TntBlockState(d.value.into_block_state()?));
1977            }
1978            _ => {}
1979        }
1980        Ok(())
1981    }
1982}
1983
1984/// The metadata bundle for [Tnt].
1985///
1986/// This type should generally not be used directly.
1987#[derive(Bundle)]
1988pub struct TntMetadataBundle {
1989    _marker: Tnt,
1990    parent: AbstractEntityMetadataBundle,
1991    fuse: Fuse,
1992    tnt_block_state: TntBlockState,
1993}
1994impl Default for TntMetadataBundle {
1995    fn default() -> Self {
1996        Self {
1997            _marker: Tnt,
1998            parent: Default::default(),
1999            fuse: Fuse(80),
2000            tnt_block_state: TntBlockState(Default::default()),
2001        }
2002    }
2003}
2004
2005/// The marker component for entities of type `minecraft:wind_charge`.
2006///
2007/// # Metadata
2008///
2009/// This entity type does not add any additional metadata. It will still have
2010/// metadata from parent types.
2011///
2012/// # Parents
2013///
2014/// Entities with `WindCharge` will also have the following marker components
2015/// and their metadata fields:
2016///
2017/// - [AbstractEntity]
2018///
2019/// # Children
2020///
2021/// This entity type has no children types.
2022#[derive(Component)]
2023pub struct WindCharge;
2024impl WindCharge {
2025    fn apply_metadata(
2026        entity: &mut bevy_ecs::system::EntityCommands,
2027        d: EntityDataItem,
2028    ) -> Result<(), UpdateMetadataError> {
2029        match d.index {
2030            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
2031            _ => {}
2032        }
2033        Ok(())
2034    }
2035}
2036
2037/// The metadata bundle for [WindCharge].
2038///
2039/// This type should generally not be used directly.
2040#[derive(Bundle)]
2041pub struct WindChargeMetadataBundle {
2042    _marker: WindCharge,
2043    parent: AbstractEntityMetadataBundle,
2044}
2045impl Default for WindChargeMetadataBundle {
2046    fn default() -> Self {
2047        Self {
2048            _marker: WindCharge,
2049            parent: Default::default(),
2050        }
2051    }
2052}
2053
2054/// A metadata field for [WitherSkull].
2055#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2056pub struct Dangerous(pub bool);
2057/// The marker component for entities of type `minecraft:wither_skull`.
2058///
2059/// # Metadata
2060///
2061/// These are the metadata components that all `WitherSkull` entities are
2062/// guaranteed to have, in addition to the metadata components from parent
2063/// types:
2064///
2065/// - [Dangerous]
2066///
2067/// # Parents
2068///
2069/// Entities with `WitherSkull` will also have the following marker components
2070/// and their metadata fields:
2071///
2072/// - [AbstractEntity]
2073///
2074/// # Children
2075///
2076/// This entity type has no children types.
2077#[derive(Component)]
2078pub struct WitherSkull;
2079impl WitherSkull {
2080    fn apply_metadata(
2081        entity: &mut bevy_ecs::system::EntityCommands,
2082        d: EntityDataItem,
2083    ) -> Result<(), UpdateMetadataError> {
2084        match d.index {
2085            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
2086            8 => {
2087                entity.insert(Dangerous(d.value.into_boolean()?));
2088            }
2089            _ => {}
2090        }
2091        Ok(())
2092    }
2093}
2094
2095/// The metadata bundle for [WitherSkull].
2096///
2097/// This type should generally not be used directly.
2098#[derive(Bundle)]
2099pub struct WitherSkullMetadataBundle {
2100    _marker: WitherSkull,
2101    parent: AbstractEntityMetadataBundle,
2102    dangerous: Dangerous,
2103}
2104impl Default for WitherSkullMetadataBundle {
2105    fn default() -> Self {
2106        Self {
2107            _marker: WitherSkull,
2108            parent: Default::default(),
2109            dangerous: Dangerous(false),
2110        }
2111    }
2112}
2113
2114#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
2115/// A metadata field for [AbstractArrow].
2116pub struct CritArrow(pub bool);
2117#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
2118/// A metadata field for [AbstractArrow].
2119pub struct NoPhysics(pub bool);
2120/// A metadata field for [AbstractArrow].
2121#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2122pub struct PierceLevel(pub u8);
2123/// A metadata field for [AbstractArrow].
2124#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2125pub struct InGround(pub bool);
2126/// An abstract entity marker component.
2127///
2128/// # Metadata
2129///
2130/// These are the metadata components that all `AbstractArrow` entities are
2131/// guaranteed to have, in addition to the metadata components from parent
2132/// types:
2133///
2134/// - [CritArrow]
2135/// - [NoPhysics]
2136/// - [PierceLevel]
2137/// - [InGround]
2138///
2139/// # Parents
2140///
2141/// Entities with `AbstractArrow` will also have the following marker components
2142/// and their metadata fields:
2143///
2144/// - [AbstractEntity]
2145///
2146/// # Children
2147///
2148/// - [Arrow]
2149/// - [SpectralArrow]
2150/// - [Trident]
2151#[derive(Component)]
2152pub struct AbstractArrow;
2153impl AbstractArrow {
2154    fn apply_metadata(
2155        entity: &mut bevy_ecs::system::EntityCommands,
2156        d: EntityDataItem,
2157    ) -> Result<(), UpdateMetadataError> {
2158        match d.index {
2159            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
2160            8 => {
2161                let bitfield = d.value.into_byte()?;
2162                entity.insert(CritArrow(bitfield & 0x1 != 0));
2163                entity.insert(NoPhysics(bitfield & 0x2 != 0));
2164            }
2165            9 => {
2166                entity.insert(PierceLevel(d.value.into_byte()?));
2167            }
2168            10 => {
2169                entity.insert(InGround(d.value.into_boolean()?));
2170            }
2171            _ => {}
2172        }
2173        Ok(())
2174    }
2175}
2176
2177/// The metadata bundle for [AbstractArrow].
2178///
2179/// This type should generally not be used directly.
2180#[derive(Bundle)]
2181pub struct AbstractArrowMetadataBundle {
2182    _marker: AbstractArrow,
2183    parent: AbstractEntityMetadataBundle,
2184    crit_arrow: CritArrow,
2185    no_physics: NoPhysics,
2186    pierce_level: PierceLevel,
2187    in_ground: InGround,
2188}
2189impl Default for AbstractArrowMetadataBundle {
2190    fn default() -> Self {
2191        Self {
2192            _marker: AbstractArrow,
2193            parent: Default::default(),
2194            crit_arrow: CritArrow(false),
2195            no_physics: NoPhysics(false),
2196            pierce_level: PierceLevel(0),
2197            in_ground: InGround(false),
2198        }
2199    }
2200}
2201
2202/// A metadata field for [Arrow].
2203#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2204pub struct EffectColor(pub i32);
2205/// The marker component for entities of type `minecraft:arrow`.
2206///
2207/// # Metadata
2208///
2209/// These are the metadata components that all `Arrow` entities are guaranteed
2210/// to have, in addition to the metadata components from parent types:
2211///
2212/// - [EffectColor]
2213///
2214/// # Parents
2215///
2216/// Entities with `Arrow` will also have the following marker components and
2217/// their metadata fields:
2218///
2219/// - [AbstractArrow]
2220/// - [AbstractEntity]
2221///
2222/// # Children
2223///
2224/// This entity type has no children types.
2225#[derive(Component)]
2226pub struct Arrow;
2227impl Arrow {
2228    fn apply_metadata(
2229        entity: &mut bevy_ecs::system::EntityCommands,
2230        d: EntityDataItem,
2231    ) -> Result<(), UpdateMetadataError> {
2232        match d.index {
2233            0..=10 => AbstractArrow::apply_metadata(entity, d)?,
2234            11 => {
2235                entity.insert(EffectColor(d.value.into_int()?));
2236            }
2237            _ => {}
2238        }
2239        Ok(())
2240    }
2241}
2242
2243/// The metadata bundle for [Arrow].
2244///
2245/// This type should generally not be used directly.
2246#[derive(Bundle)]
2247pub struct ArrowMetadataBundle {
2248    _marker: Arrow,
2249    parent: AbstractArrowMetadataBundle,
2250    effect_color: EffectColor,
2251}
2252impl Default for ArrowMetadataBundle {
2253    fn default() -> Self {
2254        Self {
2255            _marker: Arrow,
2256            parent: Default::default(),
2257            effect_color: EffectColor(-1),
2258        }
2259    }
2260}
2261
2262/// The marker component for entities of type `minecraft:spectral_arrow`.
2263///
2264/// # Metadata
2265///
2266/// This entity type does not add any additional metadata. It will still have
2267/// metadata from parent types.
2268///
2269/// # Parents
2270///
2271/// Entities with `SpectralArrow` will also have the following marker components
2272/// and their metadata fields:
2273///
2274/// - [AbstractArrow]
2275/// - [AbstractEntity]
2276///
2277/// # Children
2278///
2279/// This entity type has no children types.
2280#[derive(Component)]
2281pub struct SpectralArrow;
2282impl SpectralArrow {
2283    fn apply_metadata(
2284        entity: &mut bevy_ecs::system::EntityCommands,
2285        d: EntityDataItem,
2286    ) -> Result<(), UpdateMetadataError> {
2287        match d.index {
2288            0..=10 => AbstractArrow::apply_metadata(entity, d)?,
2289            _ => {}
2290        }
2291        Ok(())
2292    }
2293}
2294
2295/// The metadata bundle for [SpectralArrow].
2296///
2297/// This type should generally not be used directly.
2298#[derive(Bundle)]
2299pub struct SpectralArrowMetadataBundle {
2300    _marker: SpectralArrow,
2301    parent: AbstractArrowMetadataBundle,
2302}
2303impl Default for SpectralArrowMetadataBundle {
2304    fn default() -> Self {
2305        Self {
2306            _marker: SpectralArrow,
2307            parent: Default::default(),
2308        }
2309    }
2310}
2311
2312/// A metadata field for [Trident].
2313#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2314pub struct Loyalty(pub u8);
2315/// A metadata field for [Trident].
2316#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2317pub struct Foil(pub bool);
2318/// The marker component for entities of type `minecraft:trident`.
2319///
2320/// # Metadata
2321///
2322/// These are the metadata components that all `Trident` entities are guaranteed
2323/// to have, in addition to the metadata components from parent types:
2324///
2325/// - [Loyalty]
2326/// - [Foil]
2327///
2328/// # Parents
2329///
2330/// Entities with `Trident` will also have the following marker components and
2331/// their metadata fields:
2332///
2333/// - [AbstractArrow]
2334/// - [AbstractEntity]
2335///
2336/// # Children
2337///
2338/// This entity type has no children types.
2339#[derive(Component)]
2340pub struct Trident;
2341impl Trident {
2342    fn apply_metadata(
2343        entity: &mut bevy_ecs::system::EntityCommands,
2344        d: EntityDataItem,
2345    ) -> Result<(), UpdateMetadataError> {
2346        match d.index {
2347            0..=10 => AbstractArrow::apply_metadata(entity, d)?,
2348            11 => {
2349                entity.insert(Loyalty(d.value.into_byte()?));
2350            }
2351            12 => {
2352                entity.insert(Foil(d.value.into_boolean()?));
2353            }
2354            _ => {}
2355        }
2356        Ok(())
2357    }
2358}
2359
2360/// The metadata bundle for [Trident].
2361///
2362/// This type should generally not be used directly.
2363#[derive(Bundle)]
2364pub struct TridentMetadataBundle {
2365    _marker: Trident,
2366    parent: AbstractArrowMetadataBundle,
2367    loyalty: Loyalty,
2368    foil: Foil,
2369}
2370impl Default for TridentMetadataBundle {
2371    fn default() -> Self {
2372        Self {
2373            _marker: Trident,
2374            parent: Default::default(),
2375            loyalty: Loyalty(0),
2376            foil: Foil(false),
2377        }
2378    }
2379}
2380
2381/// A metadata field for [AbstractDisplay].
2382#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2383pub struct TransformationInterpolationStartDeltaTicks(pub i32);
2384/// A metadata field for [AbstractDisplay].
2385#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2386pub struct TransformationInterpolationDuration(pub i32);
2387/// A metadata field for [AbstractDisplay].
2388#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2389pub struct PosRotInterpolationDuration(pub i32);
2390/// A metadata field for [AbstractDisplay].
2391#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2392pub struct Translation(pub Vec3f32);
2393/// A metadata field for [AbstractDisplay].
2394#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2395pub struct Scale(pub Vec3f32);
2396/// A metadata field for [AbstractDisplay].
2397#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2398pub struct LeftRotation(pub Quaternion);
2399/// A metadata field for [AbstractDisplay].
2400#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2401pub struct RightRotation(pub Quaternion);
2402/// A metadata field for [AbstractDisplay].
2403#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2404pub struct BillboardRenderConstraints(pub u8);
2405/// A metadata field for [AbstractDisplay].
2406#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2407pub struct BrightnessOverride(pub i32);
2408/// A metadata field for [AbstractDisplay].
2409#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2410pub struct ViewRange(pub f32);
2411/// A metadata field for [AbstractDisplay].
2412#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2413pub struct ShadowRadius(pub f32);
2414/// A metadata field for [AbstractDisplay].
2415#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2416pub struct ShadowStrength(pub f32);
2417/// A metadata field for [AbstractDisplay].
2418#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2419pub struct AbstractDisplayWidth(pub f32);
2420/// A metadata field for [AbstractDisplay].
2421#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2422pub struct AbstractDisplayHeight(pub f32);
2423/// A metadata field for [AbstractDisplay].
2424#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2425pub struct GlowColorOverride(pub i32);
2426/// An abstract entity marker component.
2427///
2428/// # Metadata
2429///
2430/// These are the metadata components that all `AbstractDisplay` entities are
2431/// guaranteed to have, in addition to the metadata components from parent
2432/// types:
2433///
2434/// - [TransformationInterpolationStartDeltaTicks]
2435/// - [TransformationInterpolationDuration]
2436/// - [PosRotInterpolationDuration]
2437/// - [Translation]
2438/// - [Scale]
2439/// - [LeftRotation]
2440/// - [RightRotation]
2441/// - [BillboardRenderConstraints]
2442/// - [BrightnessOverride]
2443/// - [ViewRange]
2444/// - [ShadowRadius]
2445/// - [ShadowStrength]
2446/// - [AbstractDisplayWidth]
2447/// - [AbstractDisplayHeight]
2448/// - [GlowColorOverride]
2449///
2450/// # Parents
2451///
2452/// Entities with `AbstractDisplay` will also have the following marker
2453/// components and their metadata fields:
2454///
2455/// - [AbstractEntity]
2456///
2457/// # Children
2458///
2459/// - [BlockDisplay]
2460/// - [ItemDisplay]
2461/// - [TextDisplay]
2462#[derive(Component)]
2463pub struct AbstractDisplay;
2464impl AbstractDisplay {
2465    fn apply_metadata(
2466        entity: &mut bevy_ecs::system::EntityCommands,
2467        d: EntityDataItem,
2468    ) -> Result<(), UpdateMetadataError> {
2469        match d.index {
2470            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
2471            8 => {
2472                entity.insert(TransformationInterpolationStartDeltaTicks(
2473                    d.value.into_int()?,
2474                ));
2475            }
2476            9 => {
2477                entity.insert(TransformationInterpolationDuration(d.value.into_int()?));
2478            }
2479            10 => {
2480                entity.insert(PosRotInterpolationDuration(d.value.into_int()?));
2481            }
2482            11 => {
2483                entity.insert(Translation(d.value.into_vector3()?));
2484            }
2485            12 => {
2486                entity.insert(Scale(d.value.into_vector3()?));
2487            }
2488            13 => {
2489                entity.insert(LeftRotation(d.value.into_quaternion()?));
2490            }
2491            14 => {
2492                entity.insert(RightRotation(d.value.into_quaternion()?));
2493            }
2494            15 => {
2495                entity.insert(BillboardRenderConstraints(d.value.into_byte()?));
2496            }
2497            16 => {
2498                entity.insert(BrightnessOverride(d.value.into_int()?));
2499            }
2500            17 => {
2501                entity.insert(ViewRange(d.value.into_float()?));
2502            }
2503            18 => {
2504                entity.insert(ShadowRadius(d.value.into_float()?));
2505            }
2506            19 => {
2507                entity.insert(ShadowStrength(d.value.into_float()?));
2508            }
2509            20 => {
2510                entity.insert(AbstractDisplayWidth(d.value.into_float()?));
2511            }
2512            21 => {
2513                entity.insert(AbstractDisplayHeight(d.value.into_float()?));
2514            }
2515            22 => {
2516                entity.insert(GlowColorOverride(d.value.into_int()?));
2517            }
2518            _ => {}
2519        }
2520        Ok(())
2521    }
2522}
2523
2524/// The metadata bundle for [AbstractDisplay].
2525///
2526/// This type should generally not be used directly.
2527#[derive(Bundle)]
2528pub struct AbstractDisplayMetadataBundle {
2529    _marker: AbstractDisplay,
2530    parent: AbstractEntityMetadataBundle,
2531    transformation_interpolation_start_delta_ticks: TransformationInterpolationStartDeltaTicks,
2532    transformation_interpolation_duration: TransformationInterpolationDuration,
2533    pos_rot_interpolation_duration: PosRotInterpolationDuration,
2534    translation: Translation,
2535    scale: Scale,
2536    left_rotation: LeftRotation,
2537    right_rotation: RightRotation,
2538    billboard_render_constraints: BillboardRenderConstraints,
2539    brightness_override: BrightnessOverride,
2540    view_range: ViewRange,
2541    shadow_radius: ShadowRadius,
2542    shadow_strength: ShadowStrength,
2543    abstract_display_width: AbstractDisplayWidth,
2544    abstract_display_height: AbstractDisplayHeight,
2545    glow_color_override: GlowColorOverride,
2546}
2547impl Default for AbstractDisplayMetadataBundle {
2548    fn default() -> Self {
2549        Self {
2550            _marker: AbstractDisplay,
2551            parent: Default::default(),
2552            transformation_interpolation_start_delta_ticks:
2553                TransformationInterpolationStartDeltaTicks(0),
2554            transformation_interpolation_duration: TransformationInterpolationDuration(0),
2555            pos_rot_interpolation_duration: PosRotInterpolationDuration(0),
2556            translation: Translation(Vec3f32 {
2557                x: 0.0,
2558                y: 0.0,
2559                z: 0.0,
2560            }),
2561            scale: Scale(Vec3f32 {
2562                x: 1.0,
2563                y: 1.0,
2564                z: 1.0,
2565            }),
2566            left_rotation: LeftRotation(Quaternion {
2567                x: 0.0,
2568                y: 0.0,
2569                z: 0.0,
2570                w: 1.0,
2571            }),
2572            right_rotation: RightRotation(Quaternion {
2573                x: 0.0,
2574                y: 0.0,
2575                z: 0.0,
2576                w: 1.0,
2577            }),
2578            billboard_render_constraints: BillboardRenderConstraints(Default::default()),
2579            brightness_override: BrightnessOverride(-1),
2580            view_range: ViewRange(1.0),
2581            shadow_radius: ShadowRadius(0.0),
2582            shadow_strength: ShadowStrength(1.0),
2583            abstract_display_width: AbstractDisplayWidth(0.0),
2584            abstract_display_height: AbstractDisplayHeight(0.0),
2585            glow_color_override: GlowColorOverride(-1),
2586        }
2587    }
2588}
2589
2590/// A metadata field for [BlockDisplay].
2591#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2592pub struct BlockDisplayBlockState(pub azalea_block::BlockState);
2593/// The marker component for entities of type `minecraft:block_display`.
2594///
2595/// # Metadata
2596///
2597/// These are the metadata components that all `BlockDisplay` entities are
2598/// guaranteed to have, in addition to the metadata components from parent
2599/// types:
2600///
2601/// - [BlockDisplayBlockState]
2602///
2603/// # Parents
2604///
2605/// Entities with `BlockDisplay` will also have the following marker components
2606/// and their metadata fields:
2607///
2608/// - [AbstractDisplay]
2609/// - [AbstractEntity]
2610///
2611/// # Children
2612///
2613/// This entity type has no children types.
2614#[derive(Component)]
2615pub struct BlockDisplay;
2616impl BlockDisplay {
2617    fn apply_metadata(
2618        entity: &mut bevy_ecs::system::EntityCommands,
2619        d: EntityDataItem,
2620    ) -> Result<(), UpdateMetadataError> {
2621        match d.index {
2622            0..=22 => AbstractDisplay::apply_metadata(entity, d)?,
2623            23 => {
2624                entity.insert(BlockDisplayBlockState(d.value.into_block_state()?));
2625            }
2626            _ => {}
2627        }
2628        Ok(())
2629    }
2630}
2631
2632/// The metadata bundle for [BlockDisplay].
2633///
2634/// This type should generally not be used directly.
2635#[derive(Bundle)]
2636pub struct BlockDisplayMetadataBundle {
2637    _marker: BlockDisplay,
2638    parent: AbstractDisplayMetadataBundle,
2639    block_display_block_state: BlockDisplayBlockState,
2640}
2641impl Default for BlockDisplayMetadataBundle {
2642    fn default() -> Self {
2643        Self {
2644            _marker: BlockDisplay,
2645            parent: Default::default(),
2646            block_display_block_state: BlockDisplayBlockState(Default::default()),
2647        }
2648    }
2649}
2650
2651/// A metadata field for [ItemDisplay].
2652#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2653pub struct ItemDisplayItemStack(pub ItemStack);
2654/// A metadata field for [ItemDisplay].
2655#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2656pub struct ItemDisplayItemDisplay(pub u8);
2657/// The marker component for entities of type `minecraft:item_display`.
2658///
2659/// # Metadata
2660///
2661/// These are the metadata components that all `ItemDisplay` entities are
2662/// guaranteed to have, in addition to the metadata components from parent
2663/// types:
2664///
2665/// - [ItemDisplayItemStack]
2666/// - [ItemDisplayItemDisplay]
2667///
2668/// # Parents
2669///
2670/// Entities with `ItemDisplay` will also have the following marker components
2671/// and their metadata fields:
2672///
2673/// - [AbstractDisplay]
2674/// - [AbstractEntity]
2675///
2676/// # Children
2677///
2678/// This entity type has no children types.
2679#[derive(Component)]
2680pub struct ItemDisplay;
2681impl ItemDisplay {
2682    fn apply_metadata(
2683        entity: &mut bevy_ecs::system::EntityCommands,
2684        d: EntityDataItem,
2685    ) -> Result<(), UpdateMetadataError> {
2686        match d.index {
2687            0..=22 => AbstractDisplay::apply_metadata(entity, d)?,
2688            23 => {
2689                entity.insert(ItemDisplayItemStack(d.value.into_item_stack()?));
2690            }
2691            24 => {
2692                entity.insert(ItemDisplayItemDisplay(d.value.into_byte()?));
2693            }
2694            _ => {}
2695        }
2696        Ok(())
2697    }
2698}
2699
2700/// The metadata bundle for [ItemDisplay].
2701///
2702/// This type should generally not be used directly.
2703#[derive(Bundle)]
2704pub struct ItemDisplayMetadataBundle {
2705    _marker: ItemDisplay,
2706    parent: AbstractDisplayMetadataBundle,
2707    item_display_item_stack: ItemDisplayItemStack,
2708    item_display_item_display: ItemDisplayItemDisplay,
2709}
2710impl Default for ItemDisplayMetadataBundle {
2711    fn default() -> Self {
2712        Self {
2713            _marker: ItemDisplay,
2714            parent: Default::default(),
2715            item_display_item_stack: ItemDisplayItemStack(Default::default()),
2716            item_display_item_display: ItemDisplayItemDisplay(Default::default()),
2717        }
2718    }
2719}
2720
2721/// A metadata field for [TextDisplay].
2722#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2723pub struct Text(pub Box<FormattedText>);
2724/// A metadata field for [TextDisplay].
2725#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2726pub struct LineWidth(pub i32);
2727/// A metadata field for [TextDisplay].
2728#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2729pub struct BackgroundColor(pub i32);
2730/// A metadata field for [TextDisplay].
2731#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2732pub struct TextOpacity(pub u8);
2733/// A metadata field for [TextDisplay].
2734#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2735pub struct StyleFlags(pub u8);
2736/// The marker component for entities of type `minecraft:text_display`.
2737///
2738/// # Metadata
2739///
2740/// These are the metadata components that all `TextDisplay` entities are
2741/// guaranteed to have, in addition to the metadata components from parent
2742/// types:
2743///
2744/// - [Text]
2745/// - [LineWidth]
2746/// - [BackgroundColor]
2747/// - [TextOpacity]
2748/// - [StyleFlags]
2749///
2750/// # Parents
2751///
2752/// Entities with `TextDisplay` will also have the following marker components
2753/// and their metadata fields:
2754///
2755/// - [AbstractDisplay]
2756/// - [AbstractEntity]
2757///
2758/// # Children
2759///
2760/// This entity type has no children types.
2761#[derive(Component)]
2762pub struct TextDisplay;
2763impl TextDisplay {
2764    fn apply_metadata(
2765        entity: &mut bevy_ecs::system::EntityCommands,
2766        d: EntityDataItem,
2767    ) -> Result<(), UpdateMetadataError> {
2768        match d.index {
2769            0..=22 => AbstractDisplay::apply_metadata(entity, d)?,
2770            23 => {
2771                entity.insert(Text(d.value.into_formatted_text()?));
2772            }
2773            24 => {
2774                entity.insert(LineWidth(d.value.into_int()?));
2775            }
2776            25 => {
2777                entity.insert(BackgroundColor(d.value.into_int()?));
2778            }
2779            26 => {
2780                entity.insert(TextOpacity(d.value.into_byte()?));
2781            }
2782            27 => {
2783                entity.insert(StyleFlags(d.value.into_byte()?));
2784            }
2785            _ => {}
2786        }
2787        Ok(())
2788    }
2789}
2790
2791/// The metadata bundle for [TextDisplay].
2792///
2793/// This type should generally not be used directly.
2794#[derive(Bundle)]
2795pub struct TextDisplayMetadataBundle {
2796    _marker: TextDisplay,
2797    parent: AbstractDisplayMetadataBundle,
2798    text: Text,
2799    line_width: LineWidth,
2800    background_color: BackgroundColor,
2801    text_opacity: TextOpacity,
2802    style_flags: StyleFlags,
2803}
2804impl Default for TextDisplayMetadataBundle {
2805    fn default() -> Self {
2806        Self {
2807            _marker: TextDisplay,
2808            parent: Default::default(),
2809            text: Text(Default::default()),
2810            line_width: LineWidth(200),
2811            background_color: BackgroundColor(1073741824),
2812            text_opacity: TextOpacity(127),
2813            style_flags: StyleFlags(0),
2814        }
2815    }
2816}
2817
2818#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
2819/// A metadata field for [AbstractLiving].
2820pub struct AutoSpinAttack(pub bool);
2821#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
2822/// A metadata field for [AbstractLiving].
2823pub struct AbstractLivingUsingItem(pub bool);
2824/// A metadata field for [AbstractLiving].
2825#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2826pub struct Health(pub f32);
2827/// A metadata field for [AbstractLiving].
2828#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2829pub struct EffectParticles(pub Box<[Particle]>);
2830/// A metadata field for [AbstractLiving].
2831#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2832pub struct EffectAmbience(pub bool);
2833/// A metadata field for [AbstractLiving].
2834#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2835pub struct ArrowCount(pub i32);
2836/// A metadata field for [AbstractLiving].
2837#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2838pub struct StingerCount(pub i32);
2839/// A metadata field for [AbstractLiving].
2840#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
2841pub struct SleepingPos(pub Option<BlockPos>);
2842/// An abstract entity marker component.
2843///
2844/// # Metadata
2845///
2846/// These are the metadata components that all `AbstractLiving` entities are
2847/// guaranteed to have, in addition to the metadata components from parent
2848/// types:
2849///
2850/// - [AutoSpinAttack]
2851/// - [AbstractLivingUsingItem]
2852/// - [Health]
2853/// - [EffectParticles]
2854/// - [EffectAmbience]
2855/// - [ArrowCount]
2856/// - [StingerCount]
2857/// - [SleepingPos]
2858///
2859/// # Parents
2860///
2861/// Entities with `AbstractLiving` will also have the following marker
2862/// components and their metadata fields:
2863///
2864/// - [AbstractEntity]
2865///
2866/// # Children
2867///
2868/// - [ArmorStand]
2869/// - [AbstractAvatar]
2870///   - [Mannequin]
2871///   - [Player]
2872/// - [AbstractInsentient]
2873///   - [Bat]
2874///   - [EnderDragon]
2875///   - [Ghast]
2876///   - [Phantom]
2877///   - [Slime]
2878///     - [MagmaCube]
2879///   - [AbstractCreature]
2880///     - [Allay]
2881///     - [CopperGolem]
2882///     - [IronGolem]
2883///     - [Pufferfish]
2884///     - [Shulker]
2885///     - [SnowGolem]
2886///     - [Tadpole]
2887///     - [AbstractAgeable]
2888///       - [Dolphin]
2889///       - [Squid]
2890///         - [GlowSquid]
2891///       - [AbstractAnimal]
2892///         - [Armadillo]
2893///         - [Axolotl]
2894///         - [Bee]
2895///         - [Chicken]
2896///         - [Cow]
2897///         - [Fox]
2898///         - [Frog]
2899///         - [Goat]
2900///         - [HappyGhast]
2901///         - [Hoglin]
2902///         - [Mooshroom]
2903///         - [Ocelot]
2904///         - [Panda]
2905///         - [Pig]
2906///         - [PolarBear]
2907///         - [Rabbit]
2908///         - [Sheep]
2909///         - [Sniffer]
2910///         - [Strider]
2911///         - [Turtle]
2912///         - [AbstractHorse]
2913///           - [Camel]
2914///             - [CamelHusk]
2915///           - [Horse]
2916///           - [SkeletonHorse]
2917///           - [ZombieHorse]
2918///           - [AbstractChestedHorse]
2919///             - [Donkey]
2920///             - [Llama]
2921///               - [TraderLlama]
2922///             - [Mule]
2923///         - [AbstractTameable]
2924///           - [Cat]
2925///           - [Parrot]
2926///           - [Wolf]
2927///           - [AbstractNautilus]
2928///             - [Nautilus]
2929///             - [ZombieNautilus]
2930///       - [AbstractVillager]
2931///         - [Villager]
2932///         - [WanderingTrader]
2933///     - [AbstractFish]
2934///       - [Cod]
2935///       - [Salmon]
2936///       - [TropicalFish]
2937///     - [AbstractMonster]
2938///       - [Blaze]
2939///       - [Bogged]
2940///       - [Breeze]
2941///       - [Creaking]
2942///       - [Creeper]
2943///       - [Enderman]
2944///       - [Endermite]
2945///       - [Giant]
2946///       - [Guardian]
2947///         - [ElderGuardian]
2948///       - [Parched]
2949///       - [Silverfish]
2950///       - [Skeleton]
2951///       - [Spider]
2952///         - [CaveSpider]
2953///       - [Stray]
2954///       - [Vex]
2955///       - [Warden]
2956///       - [Wither]
2957///       - [WitherSkeleton]
2958///       - [Zoglin]
2959///       - [Zombie]
2960///         - [Drowned]
2961///         - [Husk]
2962///         - [ZombieVillager]
2963///         - [ZombifiedPiglin]
2964///       - [AbstractPiglin]
2965///         - [Piglin]
2966///         - [PiglinBrute]
2967///       - [AbstractRaider]
2968///         - [Pillager]
2969///         - [Ravager]
2970///         - [Vindicator]
2971///         - [Witch]
2972///         - [AbstractSpellcasterIllager]
2973///           - [Evoker]
2974///           - [Illusioner]
2975#[derive(Component)]
2976pub struct AbstractLiving;
2977impl AbstractLiving {
2978    fn apply_metadata(
2979        entity: &mut bevy_ecs::system::EntityCommands,
2980        d: EntityDataItem,
2981    ) -> Result<(), UpdateMetadataError> {
2982        match d.index {
2983            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
2984            8 => {
2985                let bitfield = d.value.into_byte()?;
2986                entity.insert(AutoSpinAttack(bitfield & 0x4 != 0));
2987                entity.insert(AbstractLivingUsingItem(bitfield & 0x1 != 0));
2988            }
2989            9 => {
2990                entity.insert(Health(d.value.into_float()?));
2991            }
2992            10 => {
2993                entity.insert(EffectParticles(d.value.into_particles()?));
2994            }
2995            11 => {
2996                entity.insert(EffectAmbience(d.value.into_boolean()?));
2997            }
2998            12 => {
2999                entity.insert(ArrowCount(d.value.into_int()?));
3000            }
3001            13 => {
3002                entity.insert(StingerCount(d.value.into_int()?));
3003            }
3004            14 => {
3005                entity.insert(SleepingPos(d.value.into_optional_block_pos()?));
3006            }
3007            _ => {}
3008        }
3009        Ok(())
3010    }
3011}
3012
3013/// The metadata bundle for [AbstractLiving].
3014///
3015/// This type should generally not be used directly.
3016#[derive(Bundle)]
3017pub struct AbstractLivingMetadataBundle {
3018    _marker: AbstractLiving,
3019    parent: AbstractEntityMetadataBundle,
3020    auto_spin_attack: AutoSpinAttack,
3021    abstract_living_using_item: AbstractLivingUsingItem,
3022    health: Health,
3023    effect_particles: EffectParticles,
3024    effect_ambience: EffectAmbience,
3025    arrow_count: ArrowCount,
3026    stinger_count: StingerCount,
3027    sleeping_pos: SleepingPos,
3028}
3029impl Default for AbstractLivingMetadataBundle {
3030    fn default() -> Self {
3031        Self {
3032            _marker: AbstractLiving,
3033            parent: Default::default(),
3034            auto_spin_attack: AutoSpinAttack(false),
3035            abstract_living_using_item: AbstractLivingUsingItem(false),
3036            health: Health(1.0),
3037            effect_particles: EffectParticles(Default::default()),
3038            effect_ambience: EffectAmbience(false),
3039            arrow_count: ArrowCount(0),
3040            stinger_count: StingerCount(0),
3041            sleeping_pos: SleepingPos(None),
3042        }
3043    }
3044}
3045
3046#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3047/// A metadata field for [ArmorStand].
3048pub struct Small(pub bool);
3049#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3050/// A metadata field for [ArmorStand].
3051pub struct ShowArms(pub bool);
3052#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3053/// A metadata field for [ArmorStand].
3054pub struct ShowBasePlate(pub bool);
3055#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3056/// A metadata field for [ArmorStand].
3057pub struct ArmorStandMarker(pub bool);
3058/// A metadata field for [ArmorStand].
3059#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3060pub struct HeadPose(pub Rotations);
3061/// A metadata field for [ArmorStand].
3062#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3063pub struct BodyPose(pub Rotations);
3064/// A metadata field for [ArmorStand].
3065#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3066pub struct LeftArmPose(pub Rotations);
3067/// A metadata field for [ArmorStand].
3068#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3069pub struct RightArmPose(pub Rotations);
3070/// A metadata field for [ArmorStand].
3071#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3072pub struct LeftLegPose(pub Rotations);
3073/// A metadata field for [ArmorStand].
3074#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3075pub struct RightLegPose(pub Rotations);
3076/// The marker component for entities of type `minecraft:armor_stand`.
3077///
3078/// # Metadata
3079///
3080/// These are the metadata components that all `ArmorStand` entities are
3081/// guaranteed to have, in addition to the metadata components from parent
3082/// types:
3083///
3084/// - [Small]
3085/// - [ShowArms]
3086/// - [ShowBasePlate]
3087/// - [ArmorStandMarker]
3088/// - [HeadPose]
3089/// - [BodyPose]
3090/// - [LeftArmPose]
3091/// - [RightArmPose]
3092/// - [LeftLegPose]
3093/// - [RightLegPose]
3094///
3095/// # Parents
3096///
3097/// Entities with `ArmorStand` will also have the following marker components
3098/// and their metadata fields:
3099///
3100/// - [AbstractLiving]
3101/// - [AbstractEntity]
3102///
3103/// # Children
3104///
3105/// This entity type has no children types.
3106#[derive(Component)]
3107pub struct ArmorStand;
3108impl ArmorStand {
3109    fn apply_metadata(
3110        entity: &mut bevy_ecs::system::EntityCommands,
3111        d: EntityDataItem,
3112    ) -> Result<(), UpdateMetadataError> {
3113        match d.index {
3114            0..=14 => AbstractLiving::apply_metadata(entity, d)?,
3115            15 => {
3116                let bitfield = d.value.into_byte()?;
3117                entity.insert(Small(bitfield & 0x1 != 0));
3118                entity.insert(ShowArms(bitfield & 0x4 != 0));
3119                entity.insert(ShowBasePlate(bitfield & 0x8 != 0));
3120                entity.insert(ArmorStandMarker(bitfield & 0x10 != 0));
3121            }
3122            16 => {
3123                entity.insert(HeadPose(d.value.into_rotations()?));
3124            }
3125            17 => {
3126                entity.insert(BodyPose(d.value.into_rotations()?));
3127            }
3128            18 => {
3129                entity.insert(LeftArmPose(d.value.into_rotations()?));
3130            }
3131            19 => {
3132                entity.insert(RightArmPose(d.value.into_rotations()?));
3133            }
3134            20 => {
3135                entity.insert(LeftLegPose(d.value.into_rotations()?));
3136            }
3137            21 => {
3138                entity.insert(RightLegPose(d.value.into_rotations()?));
3139            }
3140            _ => {}
3141        }
3142        Ok(())
3143    }
3144}
3145
3146/// The metadata bundle for [ArmorStand].
3147///
3148/// This type should generally not be used directly.
3149#[derive(Bundle)]
3150pub struct ArmorStandMetadataBundle {
3151    _marker: ArmorStand,
3152    parent: AbstractLivingMetadataBundle,
3153    small: Small,
3154    show_arms: ShowArms,
3155    show_base_plate: ShowBasePlate,
3156    armor_stand_marker: ArmorStandMarker,
3157    head_pose: HeadPose,
3158    body_pose: BodyPose,
3159    left_arm_pose: LeftArmPose,
3160    right_arm_pose: RightArmPose,
3161    left_leg_pose: LeftLegPose,
3162    right_leg_pose: RightLegPose,
3163}
3164impl Default for ArmorStandMetadataBundle {
3165    fn default() -> Self {
3166        Self {
3167            _marker: ArmorStand,
3168            parent: Default::default(),
3169            small: Small(false),
3170            show_arms: ShowArms(false),
3171            show_base_plate: ShowBasePlate(false),
3172            armor_stand_marker: ArmorStandMarker(false),
3173            head_pose: HeadPose(Default::default()),
3174            body_pose: BodyPose(Default::default()),
3175            left_arm_pose: LeftArmPose(Default::default()),
3176            right_arm_pose: RightArmPose(Default::default()),
3177            left_leg_pose: LeftLegPose(Default::default()),
3178            right_leg_pose: RightLegPose(Default::default()),
3179        }
3180    }
3181}
3182
3183/// A metadata field for [AbstractAvatar].
3184#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3185pub struct PlayerMainHand(pub HumanoidArm);
3186/// A metadata field for [AbstractAvatar].
3187#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3188pub struct PlayerModeCustomisation(pub u8);
3189/// An abstract entity marker component.
3190///
3191/// # Metadata
3192///
3193/// These are the metadata components that all `AbstractAvatar` entities are
3194/// guaranteed to have, in addition to the metadata components from parent
3195/// types:
3196///
3197/// - [PlayerMainHand]
3198/// - [PlayerModeCustomisation]
3199///
3200/// # Parents
3201///
3202/// Entities with `AbstractAvatar` will also have the following marker
3203/// components and their metadata fields:
3204///
3205/// - [AbstractLiving]
3206/// - [AbstractEntity]
3207///
3208/// # Children
3209///
3210/// - [Mannequin]
3211/// - [Player]
3212#[derive(Component)]
3213pub struct AbstractAvatar;
3214impl AbstractAvatar {
3215    fn apply_metadata(
3216        entity: &mut bevy_ecs::system::EntityCommands,
3217        d: EntityDataItem,
3218    ) -> Result<(), UpdateMetadataError> {
3219        match d.index {
3220            0..=14 => AbstractLiving::apply_metadata(entity, d)?,
3221            15 => {
3222                entity.insert(PlayerMainHand(d.value.into_humanoid_arm()?));
3223            }
3224            16 => {
3225                entity.insert(PlayerModeCustomisation(d.value.into_byte()?));
3226            }
3227            _ => {}
3228        }
3229        Ok(())
3230    }
3231}
3232
3233/// The metadata bundle for [AbstractAvatar].
3234///
3235/// This type should generally not be used directly.
3236#[derive(Bundle)]
3237pub struct AbstractAvatarMetadataBundle {
3238    _marker: AbstractAvatar,
3239    parent: AbstractLivingMetadataBundle,
3240    player_main_hand: PlayerMainHand,
3241    player_mode_customisation: PlayerModeCustomisation,
3242}
3243impl Default for AbstractAvatarMetadataBundle {
3244    fn default() -> Self {
3245        Self {
3246            _marker: AbstractAvatar,
3247            parent: Default::default(),
3248            player_main_hand: PlayerMainHand(Default::default()),
3249            player_mode_customisation: PlayerModeCustomisation(0),
3250        }
3251    }
3252}
3253
3254/// A metadata field for [Mannequin].
3255#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3256pub struct Profile(pub components::Profile);
3257/// A metadata field for [Mannequin].
3258#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3259pub struct Immovable(pub bool);
3260/// A metadata field for [Mannequin].
3261#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3262pub struct Description(pub Option<Box<FormattedText>>);
3263/// The marker component for entities of type `minecraft:mannequin`.
3264///
3265/// # Metadata
3266///
3267/// These are the metadata components that all `Mannequin` entities are
3268/// guaranteed to have, in addition to the metadata components from parent
3269/// types:
3270///
3271/// - [Profile]
3272/// - [Immovable]
3273/// - [Description]
3274///
3275/// # Parents
3276///
3277/// Entities with `Mannequin` will also have the following marker components and
3278/// their metadata fields:
3279///
3280/// - [AbstractAvatar]
3281/// - [AbstractLiving]
3282/// - [AbstractEntity]
3283///
3284/// # Children
3285///
3286/// This entity type has no children types.
3287#[derive(Component)]
3288pub struct Mannequin;
3289impl Mannequin {
3290    fn apply_metadata(
3291        entity: &mut bevy_ecs::system::EntityCommands,
3292        d: EntityDataItem,
3293    ) -> Result<(), UpdateMetadataError> {
3294        match d.index {
3295            0..=16 => AbstractAvatar::apply_metadata(entity, d)?,
3296            17 => {
3297                entity.insert(Profile(d.value.into_resolvable_profile()?));
3298            }
3299            18 => {
3300                entity.insert(Immovable(d.value.into_boolean()?));
3301            }
3302            19 => {
3303                entity.insert(Description(d.value.into_optional_formatted_text()?));
3304            }
3305            _ => {}
3306        }
3307        Ok(())
3308    }
3309}
3310
3311/// The metadata bundle for [Mannequin].
3312///
3313/// This type should generally not be used directly.
3314#[derive(Bundle)]
3315pub struct MannequinMetadataBundle {
3316    _marker: Mannequin,
3317    parent: AbstractAvatarMetadataBundle,
3318    profile: Profile,
3319    immovable: Immovable,
3320    description: Description,
3321}
3322impl Default for MannequinMetadataBundle {
3323    fn default() -> Self {
3324        Self {
3325            _marker: Mannequin,
3326            parent: Default::default(),
3327            profile: Profile(Default::default()),
3328            immovable: Immovable(false),
3329            description: Description(Default::default()),
3330        }
3331    }
3332}
3333
3334/// A metadata field for [Player].
3335#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3336pub struct PlayerAbsorption(pub f32);
3337/// A metadata field for [Player].
3338#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3339pub struct Score(pub i32);
3340/// A metadata field for [Player].
3341#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3342pub struct ShoulderParrotLeft(pub OptionalUnsignedInt);
3343/// A metadata field for [Player].
3344#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3345pub struct ShoulderParrotRight(pub OptionalUnsignedInt);
3346/// The marker component for entities of type `minecraft:player`.
3347///
3348/// # Metadata
3349///
3350/// These are the metadata components that all `Player` entities are guaranteed
3351/// to have, in addition to the metadata components from parent types:
3352///
3353/// - [PlayerAbsorption]
3354/// - [Score]
3355/// - [ShoulderParrotLeft]
3356/// - [ShoulderParrotRight]
3357///
3358/// # Parents
3359///
3360/// Entities with `Player` will also have the following marker components and
3361/// their metadata fields:
3362///
3363/// - [AbstractAvatar]
3364/// - [AbstractLiving]
3365/// - [AbstractEntity]
3366///
3367/// # Children
3368///
3369/// This entity type has no children types.
3370#[derive(Component)]
3371pub struct Player;
3372impl Player {
3373    fn apply_metadata(
3374        entity: &mut bevy_ecs::system::EntityCommands,
3375        d: EntityDataItem,
3376    ) -> Result<(), UpdateMetadataError> {
3377        match d.index {
3378            0..=16 => AbstractAvatar::apply_metadata(entity, d)?,
3379            17 => {
3380                entity.insert(PlayerAbsorption(d.value.into_float()?));
3381            }
3382            18 => {
3383                entity.insert(Score(d.value.into_int()?));
3384            }
3385            19 => {
3386                entity.insert(ShoulderParrotLeft(d.value.into_optional_unsigned_int()?));
3387            }
3388            20 => {
3389                entity.insert(ShoulderParrotRight(d.value.into_optional_unsigned_int()?));
3390            }
3391            _ => {}
3392        }
3393        Ok(())
3394    }
3395}
3396
3397/// The metadata bundle for [Player].
3398///
3399/// This type should generally not be used directly.
3400#[derive(Bundle)]
3401pub struct PlayerMetadataBundle {
3402    _marker: Player,
3403    parent: AbstractAvatarMetadataBundle,
3404    player_absorption: PlayerAbsorption,
3405    score: Score,
3406    shoulder_parrot_left: ShoulderParrotLeft,
3407    shoulder_parrot_right: ShoulderParrotRight,
3408}
3409impl Default for PlayerMetadataBundle {
3410    fn default() -> Self {
3411        Self {
3412            _marker: Player,
3413            parent: Default::default(),
3414            player_absorption: PlayerAbsorption(0.0),
3415            score: Score(0),
3416            shoulder_parrot_left: ShoulderParrotLeft(OptionalUnsignedInt(None)),
3417            shoulder_parrot_right: ShoulderParrotRight(OptionalUnsignedInt(None)),
3418        }
3419    }
3420}
3421
3422#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3423/// A metadata field for [AbstractInsentient].
3424pub struct NoAi(pub bool);
3425#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3426/// A metadata field for [AbstractInsentient].
3427pub struct LeftHanded(pub bool);
3428#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3429/// A metadata field for [AbstractInsentient].
3430pub struct Aggressive(pub bool);
3431/// An abstract entity marker component.
3432///
3433/// # Metadata
3434///
3435/// These are the metadata components that all `AbstractInsentient` entities are
3436/// guaranteed to have, in addition to the metadata components from parent
3437/// types:
3438///
3439/// - [NoAi]
3440/// - [LeftHanded]
3441/// - [Aggressive]
3442///
3443/// # Parents
3444///
3445/// Entities with `AbstractInsentient` will also have the following marker
3446/// components and their metadata fields:
3447///
3448/// - [AbstractLiving]
3449/// - [AbstractEntity]
3450///
3451/// # Children
3452///
3453/// - [Bat]
3454/// - [EnderDragon]
3455/// - [Ghast]
3456/// - [Phantom]
3457/// - [Slime]
3458///   - [MagmaCube]
3459/// - [AbstractCreature]
3460///   - [Allay]
3461///   - [CopperGolem]
3462///   - [IronGolem]
3463///   - [Pufferfish]
3464///   - [Shulker]
3465///   - [SnowGolem]
3466///   - [Tadpole]
3467///   - [AbstractAgeable]
3468///     - [Dolphin]
3469///     - [Squid]
3470///       - [GlowSquid]
3471///     - [AbstractAnimal]
3472///       - [Armadillo]
3473///       - [Axolotl]
3474///       - [Bee]
3475///       - [Chicken]
3476///       - [Cow]
3477///       - [Fox]
3478///       - [Frog]
3479///       - [Goat]
3480///       - [HappyGhast]
3481///       - [Hoglin]
3482///       - [Mooshroom]
3483///       - [Ocelot]
3484///       - [Panda]
3485///       - [Pig]
3486///       - [PolarBear]
3487///       - [Rabbit]
3488///       - [Sheep]
3489///       - [Sniffer]
3490///       - [Strider]
3491///       - [Turtle]
3492///       - [AbstractHorse]
3493///         - [Camel]
3494///           - [CamelHusk]
3495///         - [Horse]
3496///         - [SkeletonHorse]
3497///         - [ZombieHorse]
3498///         - [AbstractChestedHorse]
3499///           - [Donkey]
3500///           - [Llama]
3501///             - [TraderLlama]
3502///           - [Mule]
3503///       - [AbstractTameable]
3504///         - [Cat]
3505///         - [Parrot]
3506///         - [Wolf]
3507///         - [AbstractNautilus]
3508///           - [Nautilus]
3509///           - [ZombieNautilus]
3510///     - [AbstractVillager]
3511///       - [Villager]
3512///       - [WanderingTrader]
3513///   - [AbstractFish]
3514///     - [Cod]
3515///     - [Salmon]
3516///     - [TropicalFish]
3517///   - [AbstractMonster]
3518///     - [Blaze]
3519///     - [Bogged]
3520///     - [Breeze]
3521///     - [Creaking]
3522///     - [Creeper]
3523///     - [Enderman]
3524///     - [Endermite]
3525///     - [Giant]
3526///     - [Guardian]
3527///       - [ElderGuardian]
3528///     - [Parched]
3529///     - [Silverfish]
3530///     - [Skeleton]
3531///     - [Spider]
3532///       - [CaveSpider]
3533///     - [Stray]
3534///     - [Vex]
3535///     - [Warden]
3536///     - [Wither]
3537///     - [WitherSkeleton]
3538///     - [Zoglin]
3539///     - [Zombie]
3540///       - [Drowned]
3541///       - [Husk]
3542///       - [ZombieVillager]
3543///       - [ZombifiedPiglin]
3544///     - [AbstractPiglin]
3545///       - [Piglin]
3546///       - [PiglinBrute]
3547///     - [AbstractRaider]
3548///       - [Pillager]
3549///       - [Ravager]
3550///       - [Vindicator]
3551///       - [Witch]
3552///       - [AbstractSpellcasterIllager]
3553///         - [Evoker]
3554///         - [Illusioner]
3555#[derive(Component)]
3556pub struct AbstractInsentient;
3557impl AbstractInsentient {
3558    fn apply_metadata(
3559        entity: &mut bevy_ecs::system::EntityCommands,
3560        d: EntityDataItem,
3561    ) -> Result<(), UpdateMetadataError> {
3562        match d.index {
3563            0..=14 => AbstractLiving::apply_metadata(entity, d)?,
3564            15 => {
3565                let bitfield = d.value.into_byte()?;
3566                entity.insert(NoAi(bitfield & 0x1 != 0));
3567                entity.insert(LeftHanded(bitfield & 0x2 != 0));
3568                entity.insert(Aggressive(bitfield & 0x4 != 0));
3569            }
3570            _ => {}
3571        }
3572        Ok(())
3573    }
3574}
3575
3576/// The metadata bundle for [AbstractInsentient].
3577///
3578/// This type should generally not be used directly.
3579#[derive(Bundle)]
3580pub struct AbstractInsentientMetadataBundle {
3581    _marker: AbstractInsentient,
3582    parent: AbstractLivingMetadataBundle,
3583    no_ai: NoAi,
3584    left_handed: LeftHanded,
3585    aggressive: Aggressive,
3586}
3587impl Default for AbstractInsentientMetadataBundle {
3588    fn default() -> Self {
3589        Self {
3590            _marker: AbstractInsentient,
3591            parent: Default::default(),
3592            no_ai: NoAi(false),
3593            left_handed: LeftHanded(false),
3594            aggressive: Aggressive(false),
3595        }
3596    }
3597}
3598
3599#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
3600/// A metadata field for [Bat].
3601pub struct Resting(pub bool);
3602/// The marker component for entities of type `minecraft:bat`.
3603///
3604/// # Metadata
3605///
3606/// These are the metadata components that all `Bat` entities are guaranteed to
3607/// have, in addition to the metadata components from parent types:
3608///
3609/// - [Resting]
3610///
3611/// # Parents
3612///
3613/// Entities with `Bat` will also have the following marker components and their
3614/// metadata fields:
3615///
3616/// - [AbstractInsentient]
3617/// - [AbstractLiving]
3618/// - [AbstractEntity]
3619///
3620/// # Children
3621///
3622/// This entity type has no children types.
3623#[derive(Component)]
3624pub struct Bat;
3625impl Bat {
3626    fn apply_metadata(
3627        entity: &mut bevy_ecs::system::EntityCommands,
3628        d: EntityDataItem,
3629    ) -> Result<(), UpdateMetadataError> {
3630        match d.index {
3631            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
3632            16 => {
3633                let bitfield = d.value.into_byte()?;
3634                entity.insert(Resting(bitfield & 0x1 != 0));
3635            }
3636            _ => {}
3637        }
3638        Ok(())
3639    }
3640}
3641
3642/// The metadata bundle for [Bat].
3643///
3644/// This type should generally not be used directly.
3645#[derive(Bundle)]
3646pub struct BatMetadataBundle {
3647    _marker: Bat,
3648    parent: AbstractInsentientMetadataBundle,
3649    resting: Resting,
3650}
3651impl Default for BatMetadataBundle {
3652    fn default() -> Self {
3653        Self {
3654            _marker: Bat,
3655            parent: Default::default(),
3656            resting: Resting(false),
3657        }
3658    }
3659}
3660
3661/// A metadata field for [EnderDragon].
3662#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3663pub struct Phase(pub i32);
3664/// The marker component for entities of type `minecraft:ender_dragon`.
3665///
3666/// # Metadata
3667///
3668/// These are the metadata components that all `EnderDragon` entities are
3669/// guaranteed to have, in addition to the metadata components from parent
3670/// types:
3671///
3672/// - [Phase]
3673///
3674/// # Parents
3675///
3676/// Entities with `EnderDragon` will also have the following marker components
3677/// and their metadata fields:
3678///
3679/// - [AbstractInsentient]
3680/// - [AbstractLiving]
3681/// - [AbstractEntity]
3682///
3683/// # Children
3684///
3685/// This entity type has no children types.
3686#[derive(Component)]
3687pub struct EnderDragon;
3688impl EnderDragon {
3689    fn apply_metadata(
3690        entity: &mut bevy_ecs::system::EntityCommands,
3691        d: EntityDataItem,
3692    ) -> Result<(), UpdateMetadataError> {
3693        match d.index {
3694            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
3695            16 => {
3696                entity.insert(Phase(d.value.into_int()?));
3697            }
3698            _ => {}
3699        }
3700        Ok(())
3701    }
3702}
3703
3704/// The metadata bundle for [EnderDragon].
3705///
3706/// This type should generally not be used directly.
3707#[derive(Bundle)]
3708pub struct EnderDragonMetadataBundle {
3709    _marker: EnderDragon,
3710    parent: AbstractInsentientMetadataBundle,
3711    phase: Phase,
3712}
3713impl Default for EnderDragonMetadataBundle {
3714    fn default() -> Self {
3715        Self {
3716            _marker: EnderDragon,
3717            parent: Default::default(),
3718            phase: Phase(Default::default()),
3719        }
3720    }
3721}
3722
3723/// A metadata field for [Ghast].
3724#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3725pub struct IsCharging(pub bool);
3726/// The marker component for entities of type `minecraft:ghast`.
3727///
3728/// # Metadata
3729///
3730/// These are the metadata components that all `Ghast` entities are guaranteed
3731/// to have, in addition to the metadata components from parent types:
3732///
3733/// - [IsCharging]
3734///
3735/// # Parents
3736///
3737/// Entities with `Ghast` will also have the following marker components and
3738/// their metadata fields:
3739///
3740/// - [AbstractInsentient]
3741/// - [AbstractLiving]
3742/// - [AbstractEntity]
3743///
3744/// # Children
3745///
3746/// This entity type has no children types.
3747#[derive(Component)]
3748pub struct Ghast;
3749impl Ghast {
3750    fn apply_metadata(
3751        entity: &mut bevy_ecs::system::EntityCommands,
3752        d: EntityDataItem,
3753    ) -> Result<(), UpdateMetadataError> {
3754        match d.index {
3755            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
3756            16 => {
3757                entity.insert(IsCharging(d.value.into_boolean()?));
3758            }
3759            _ => {}
3760        }
3761        Ok(())
3762    }
3763}
3764
3765/// The metadata bundle for [Ghast].
3766///
3767/// This type should generally not be used directly.
3768#[derive(Bundle)]
3769pub struct GhastMetadataBundle {
3770    _marker: Ghast,
3771    parent: AbstractInsentientMetadataBundle,
3772    is_charging: IsCharging,
3773}
3774impl Default for GhastMetadataBundle {
3775    fn default() -> Self {
3776        Self {
3777            _marker: Ghast,
3778            parent: Default::default(),
3779            is_charging: IsCharging(false),
3780        }
3781    }
3782}
3783
3784/// A metadata field for [Phantom].
3785#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3786pub struct PhantomSize(pub i32);
3787/// The marker component for entities of type `minecraft:phantom`.
3788///
3789/// # Metadata
3790///
3791/// These are the metadata components that all `Phantom` entities are guaranteed
3792/// to have, in addition to the metadata components from parent types:
3793///
3794/// - [PhantomSize]
3795///
3796/// # Parents
3797///
3798/// Entities with `Phantom` will also have the following marker components and
3799/// their metadata fields:
3800///
3801/// - [AbstractInsentient]
3802/// - [AbstractLiving]
3803/// - [AbstractEntity]
3804///
3805/// # Children
3806///
3807/// This entity type has no children types.
3808#[derive(Component)]
3809pub struct Phantom;
3810impl Phantom {
3811    fn apply_metadata(
3812        entity: &mut bevy_ecs::system::EntityCommands,
3813        d: EntityDataItem,
3814    ) -> Result<(), UpdateMetadataError> {
3815        match d.index {
3816            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
3817            16 => {
3818                entity.insert(PhantomSize(d.value.into_int()?));
3819            }
3820            _ => {}
3821        }
3822        Ok(())
3823    }
3824}
3825
3826/// The metadata bundle for [Phantom].
3827///
3828/// This type should generally not be used directly.
3829#[derive(Bundle)]
3830pub struct PhantomMetadataBundle {
3831    _marker: Phantom,
3832    parent: AbstractInsentientMetadataBundle,
3833    phantom_size: PhantomSize,
3834}
3835impl Default for PhantomMetadataBundle {
3836    fn default() -> Self {
3837        Self {
3838            _marker: Phantom,
3839            parent: Default::default(),
3840            phantom_size: PhantomSize(0),
3841        }
3842    }
3843}
3844
3845/// A metadata field for [Slime].
3846#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
3847pub struct SlimeSize(pub i32);
3848/// The marker component for entities of type `minecraft:slime`.
3849///
3850/// # Metadata
3851///
3852/// These are the metadata components that all `Slime` entities are guaranteed
3853/// to have, in addition to the metadata components from parent types:
3854///
3855/// - [SlimeSize]
3856///
3857/// # Parents
3858///
3859/// Entities with `Slime` will also have the following marker components and
3860/// their metadata fields:
3861///
3862/// - [AbstractInsentient]
3863/// - [AbstractLiving]
3864/// - [AbstractEntity]
3865///
3866/// # Children
3867///
3868/// - [MagmaCube]
3869#[derive(Component)]
3870pub struct Slime;
3871impl Slime {
3872    fn apply_metadata(
3873        entity: &mut bevy_ecs::system::EntityCommands,
3874        d: EntityDataItem,
3875    ) -> Result<(), UpdateMetadataError> {
3876        match d.index {
3877            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
3878            16 => {
3879                entity.insert(SlimeSize(d.value.into_int()?));
3880            }
3881            _ => {}
3882        }
3883        Ok(())
3884    }
3885}
3886
3887/// The metadata bundle for [Slime].
3888///
3889/// This type should generally not be used directly.
3890#[derive(Bundle)]
3891pub struct SlimeMetadataBundle {
3892    _marker: Slime,
3893    parent: AbstractInsentientMetadataBundle,
3894    slime_size: SlimeSize,
3895}
3896impl Default for SlimeMetadataBundle {
3897    fn default() -> Self {
3898        Self {
3899            _marker: Slime,
3900            parent: Default::default(),
3901            slime_size: SlimeSize(1),
3902        }
3903    }
3904}
3905
3906/// The marker component for entities of type `minecraft:magma_cube`.
3907///
3908/// # Metadata
3909///
3910/// This entity type does not add any additional metadata. It will still have
3911/// metadata from parent types.
3912///
3913/// # Parents
3914///
3915/// Entities with `MagmaCube` will also have the following marker components and
3916/// their metadata fields:
3917///
3918/// - [Slime]
3919/// - [AbstractInsentient]
3920/// - [AbstractLiving]
3921/// - [AbstractEntity]
3922///
3923/// # Children
3924///
3925/// This entity type has no children types.
3926#[derive(Component)]
3927pub struct MagmaCube;
3928impl MagmaCube {
3929    fn apply_metadata(
3930        entity: &mut bevy_ecs::system::EntityCommands,
3931        d: EntityDataItem,
3932    ) -> Result<(), UpdateMetadataError> {
3933        match d.index {
3934            0..=16 => Slime::apply_metadata(entity, d)?,
3935            _ => {}
3936        }
3937        Ok(())
3938    }
3939}
3940
3941/// The metadata bundle for [MagmaCube].
3942///
3943/// This type should generally not be used directly.
3944#[derive(Bundle)]
3945pub struct MagmaCubeMetadataBundle {
3946    _marker: MagmaCube,
3947    parent: SlimeMetadataBundle,
3948}
3949impl Default for MagmaCubeMetadataBundle {
3950    fn default() -> Self {
3951        Self {
3952            _marker: MagmaCube,
3953            parent: Default::default(),
3954        }
3955    }
3956}
3957
3958/// An abstract entity marker component.
3959///
3960/// # Metadata
3961///
3962/// This entity type does not add any additional metadata. It will still have
3963/// metadata from parent types.
3964///
3965/// # Parents
3966///
3967/// Entities with `AbstractCreature` will also have the following marker
3968/// components and their metadata fields:
3969///
3970/// - [AbstractInsentient]
3971/// - [AbstractLiving]
3972/// - [AbstractEntity]
3973///
3974/// # Children
3975///
3976/// - [Allay]
3977/// - [CopperGolem]
3978/// - [IronGolem]
3979/// - [Pufferfish]
3980/// - [Shulker]
3981/// - [SnowGolem]
3982/// - [Tadpole]
3983/// - [AbstractAgeable]
3984///   - [Dolphin]
3985///   - [Squid]
3986///     - [GlowSquid]
3987///   - [AbstractAnimal]
3988///     - [Armadillo]
3989///     - [Axolotl]
3990///     - [Bee]
3991///     - [Chicken]
3992///     - [Cow]
3993///     - [Fox]
3994///     - [Frog]
3995///     - [Goat]
3996///     - [HappyGhast]
3997///     - [Hoglin]
3998///     - [Mooshroom]
3999///     - [Ocelot]
4000///     - [Panda]
4001///     - [Pig]
4002///     - [PolarBear]
4003///     - [Rabbit]
4004///     - [Sheep]
4005///     - [Sniffer]
4006///     - [Strider]
4007///     - [Turtle]
4008///     - [AbstractHorse]
4009///       - [Camel]
4010///         - [CamelHusk]
4011///       - [Horse]
4012///       - [SkeletonHorse]
4013///       - [ZombieHorse]
4014///       - [AbstractChestedHorse]
4015///         - [Donkey]
4016///         - [Llama]
4017///           - [TraderLlama]
4018///         - [Mule]
4019///     - [AbstractTameable]
4020///       - [Cat]
4021///       - [Parrot]
4022///       - [Wolf]
4023///       - [AbstractNautilus]
4024///         - [Nautilus]
4025///         - [ZombieNautilus]
4026///   - [AbstractVillager]
4027///     - [Villager]
4028///     - [WanderingTrader]
4029/// - [AbstractFish]
4030///   - [Cod]
4031///   - [Salmon]
4032///   - [TropicalFish]
4033/// - [AbstractMonster]
4034///   - [Blaze]
4035///   - [Bogged]
4036///   - [Breeze]
4037///   - [Creaking]
4038///   - [Creeper]
4039///   - [Enderman]
4040///   - [Endermite]
4041///   - [Giant]
4042///   - [Guardian]
4043///     - [ElderGuardian]
4044///   - [Parched]
4045///   - [Silverfish]
4046///   - [Skeleton]
4047///   - [Spider]
4048///     - [CaveSpider]
4049///   - [Stray]
4050///   - [Vex]
4051///   - [Warden]
4052///   - [Wither]
4053///   - [WitherSkeleton]
4054///   - [Zoglin]
4055///   - [Zombie]
4056///     - [Drowned]
4057///     - [Husk]
4058///     - [ZombieVillager]
4059///     - [ZombifiedPiglin]
4060///   - [AbstractPiglin]
4061///     - [Piglin]
4062///     - [PiglinBrute]
4063///   - [AbstractRaider]
4064///     - [Pillager]
4065///     - [Ravager]
4066///     - [Vindicator]
4067///     - [Witch]
4068///     - [AbstractSpellcasterIllager]
4069///       - [Evoker]
4070///       - [Illusioner]
4071#[derive(Component)]
4072pub struct AbstractCreature;
4073impl AbstractCreature {
4074    fn apply_metadata(
4075        entity: &mut bevy_ecs::system::EntityCommands,
4076        d: EntityDataItem,
4077    ) -> Result<(), UpdateMetadataError> {
4078        match d.index {
4079            0..=15 => AbstractInsentient::apply_metadata(entity, d)?,
4080            _ => {}
4081        }
4082        Ok(())
4083    }
4084}
4085
4086/// The metadata bundle for [AbstractCreature].
4087///
4088/// This type should generally not be used directly.
4089#[derive(Bundle)]
4090pub struct AbstractCreatureMetadataBundle {
4091    _marker: AbstractCreature,
4092    parent: AbstractInsentientMetadataBundle,
4093}
4094impl Default for AbstractCreatureMetadataBundle {
4095    fn default() -> Self {
4096        Self {
4097            _marker: AbstractCreature,
4098            parent: Default::default(),
4099        }
4100    }
4101}
4102
4103/// A metadata field for [Allay].
4104#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4105pub struct Dancing(pub bool);
4106/// A metadata field for [Allay].
4107#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4108pub struct CanDuplicate(pub bool);
4109/// The marker component for entities of type `minecraft:allay`.
4110///
4111/// # Metadata
4112///
4113/// These are the metadata components that all `Allay` entities are guaranteed
4114/// to have, in addition to the metadata components from parent types:
4115///
4116/// - [Dancing]
4117/// - [CanDuplicate]
4118///
4119/// # Parents
4120///
4121/// Entities with `Allay` will also have the following marker components and
4122/// their metadata fields:
4123///
4124/// - [AbstractCreature]
4125/// - [AbstractInsentient]
4126/// - [AbstractLiving]
4127/// - [AbstractEntity]
4128///
4129/// # Children
4130///
4131/// This entity type has no children types.
4132#[derive(Component)]
4133pub struct Allay;
4134impl Allay {
4135    fn apply_metadata(
4136        entity: &mut bevy_ecs::system::EntityCommands,
4137        d: EntityDataItem,
4138    ) -> Result<(), UpdateMetadataError> {
4139        match d.index {
4140            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4141            16 => {
4142                entity.insert(Dancing(d.value.into_boolean()?));
4143            }
4144            17 => {
4145                entity.insert(CanDuplicate(d.value.into_boolean()?));
4146            }
4147            _ => {}
4148        }
4149        Ok(())
4150    }
4151}
4152
4153/// The metadata bundle for [Allay].
4154///
4155/// This type should generally not be used directly.
4156#[derive(Bundle)]
4157pub struct AllayMetadataBundle {
4158    _marker: Allay,
4159    parent: AbstractCreatureMetadataBundle,
4160    dancing: Dancing,
4161    can_duplicate: CanDuplicate,
4162}
4163impl Default for AllayMetadataBundle {
4164    fn default() -> Self {
4165        Self {
4166            _marker: Allay,
4167            parent: Default::default(),
4168            dancing: Dancing(false),
4169            can_duplicate: CanDuplicate(true),
4170        }
4171    }
4172}
4173
4174/// A metadata field for [CopperGolem].
4175#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4176pub struct WeatherState(pub WeatheringCopperStateKind);
4177/// A metadata field for [CopperGolem].
4178#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4179pub struct CopperGolemState(pub CopperGolemStateKind);
4180/// The marker component for entities of type `minecraft:copper_golem`.
4181///
4182/// # Metadata
4183///
4184/// These are the metadata components that all `CopperGolem` entities are
4185/// guaranteed to have, in addition to the metadata components from parent
4186/// types:
4187///
4188/// - [WeatherState]
4189/// - [CopperGolemState]
4190///
4191/// # Parents
4192///
4193/// Entities with `CopperGolem` will also have the following marker components
4194/// and their metadata fields:
4195///
4196/// - [AbstractCreature]
4197/// - [AbstractInsentient]
4198/// - [AbstractLiving]
4199/// - [AbstractEntity]
4200///
4201/// # Children
4202///
4203/// This entity type has no children types.
4204#[derive(Component)]
4205pub struct CopperGolem;
4206impl CopperGolem {
4207    fn apply_metadata(
4208        entity: &mut bevy_ecs::system::EntityCommands,
4209        d: EntityDataItem,
4210    ) -> Result<(), UpdateMetadataError> {
4211        match d.index {
4212            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4213            16 => {
4214                entity.insert(WeatherState(d.value.into_weathering_copper_state()?));
4215            }
4216            17 => {
4217                entity.insert(CopperGolemState(d.value.into_copper_golem_state()?));
4218            }
4219            _ => {}
4220        }
4221        Ok(())
4222    }
4223}
4224
4225/// The metadata bundle for [CopperGolem].
4226///
4227/// This type should generally not be used directly.
4228#[derive(Bundle)]
4229pub struct CopperGolemMetadataBundle {
4230    _marker: CopperGolem,
4231    parent: AbstractCreatureMetadataBundle,
4232    weather_state: WeatherState,
4233    copper_golem_state: CopperGolemState,
4234}
4235impl Default for CopperGolemMetadataBundle {
4236    fn default() -> Self {
4237        Self {
4238            _marker: CopperGolem,
4239            parent: Default::default(),
4240            weather_state: WeatherState(Default::default()),
4241            copper_golem_state: CopperGolemState(Default::default()),
4242        }
4243    }
4244}
4245
4246#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
4247/// A metadata field for [IronGolem].
4248pub struct PlayerCreated(pub bool);
4249/// The marker component for entities of type `minecraft:iron_golem`.
4250///
4251/// # Metadata
4252///
4253/// These are the metadata components that all `IronGolem` entities are
4254/// guaranteed to have, in addition to the metadata components from parent
4255/// types:
4256///
4257/// - [PlayerCreated]
4258///
4259/// # Parents
4260///
4261/// Entities with `IronGolem` will also have the following marker components and
4262/// their metadata fields:
4263///
4264/// - [AbstractCreature]
4265/// - [AbstractInsentient]
4266/// - [AbstractLiving]
4267/// - [AbstractEntity]
4268///
4269/// # Children
4270///
4271/// This entity type has no children types.
4272#[derive(Component)]
4273pub struct IronGolem;
4274impl IronGolem {
4275    fn apply_metadata(
4276        entity: &mut bevy_ecs::system::EntityCommands,
4277        d: EntityDataItem,
4278    ) -> Result<(), UpdateMetadataError> {
4279        match d.index {
4280            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4281            16 => {
4282                let bitfield = d.value.into_byte()?;
4283                entity.insert(PlayerCreated(bitfield & 0x1 != 0));
4284            }
4285            _ => {}
4286        }
4287        Ok(())
4288    }
4289}
4290
4291/// The metadata bundle for [IronGolem].
4292///
4293/// This type should generally not be used directly.
4294#[derive(Bundle)]
4295pub struct IronGolemMetadataBundle {
4296    _marker: IronGolem,
4297    parent: AbstractCreatureMetadataBundle,
4298    player_created: PlayerCreated,
4299}
4300impl Default for IronGolemMetadataBundle {
4301    fn default() -> Self {
4302        Self {
4303            _marker: IronGolem,
4304            parent: Default::default(),
4305            player_created: PlayerCreated(false),
4306        }
4307    }
4308}
4309
4310/// A metadata field for [Pufferfish].
4311#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4312pub struct PufferfishFromBucket(pub bool);
4313/// A metadata field for [Pufferfish].
4314#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4315pub struct PuffState(pub i32);
4316/// The marker component for entities of type `minecraft:pufferfish`.
4317///
4318/// # Metadata
4319///
4320/// These are the metadata components that all `Pufferfish` entities are
4321/// guaranteed to have, in addition to the metadata components from parent
4322/// types:
4323///
4324/// - [PufferfishFromBucket]
4325/// - [PuffState]
4326///
4327/// # Parents
4328///
4329/// Entities with `Pufferfish` will also have the following marker components
4330/// and their metadata fields:
4331///
4332/// - [AbstractCreature]
4333/// - [AbstractInsentient]
4334/// - [AbstractLiving]
4335/// - [AbstractEntity]
4336///
4337/// # Children
4338///
4339/// This entity type has no children types.
4340#[derive(Component)]
4341pub struct Pufferfish;
4342impl Pufferfish {
4343    fn apply_metadata(
4344        entity: &mut bevy_ecs::system::EntityCommands,
4345        d: EntityDataItem,
4346    ) -> Result<(), UpdateMetadataError> {
4347        match d.index {
4348            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4349            16 => {
4350                entity.insert(PufferfishFromBucket(d.value.into_boolean()?));
4351            }
4352            17 => {
4353                entity.insert(PuffState(d.value.into_int()?));
4354            }
4355            _ => {}
4356        }
4357        Ok(())
4358    }
4359}
4360
4361/// The metadata bundle for [Pufferfish].
4362///
4363/// This type should generally not be used directly.
4364#[derive(Bundle)]
4365pub struct PufferfishMetadataBundle {
4366    _marker: Pufferfish,
4367    parent: AbstractCreatureMetadataBundle,
4368    pufferfish_from_bucket: PufferfishFromBucket,
4369    puff_state: PuffState,
4370}
4371impl Default for PufferfishMetadataBundle {
4372    fn default() -> Self {
4373        Self {
4374            _marker: Pufferfish,
4375            parent: Default::default(),
4376            pufferfish_from_bucket: PufferfishFromBucket(false),
4377            puff_state: PuffState(0),
4378        }
4379    }
4380}
4381
4382/// A metadata field for [Shulker].
4383#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4384pub struct AttachFace(pub Direction);
4385/// A metadata field for [Shulker].
4386#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4387pub struct Peek(pub u8);
4388/// A metadata field for [Shulker].
4389#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4390pub struct Color(pub u8);
4391/// The marker component for entities of type `minecraft:shulker`.
4392///
4393/// # Metadata
4394///
4395/// These are the metadata components that all `Shulker` entities are guaranteed
4396/// to have, in addition to the metadata components from parent types:
4397///
4398/// - [AttachFace]
4399/// - [Peek]
4400/// - [Color]
4401///
4402/// # Parents
4403///
4404/// Entities with `Shulker` will also have the following marker components and
4405/// their metadata fields:
4406///
4407/// - [AbstractCreature]
4408/// - [AbstractInsentient]
4409/// - [AbstractLiving]
4410/// - [AbstractEntity]
4411///
4412/// # Children
4413///
4414/// This entity type has no children types.
4415#[derive(Component)]
4416pub struct Shulker;
4417impl Shulker {
4418    fn apply_metadata(
4419        entity: &mut bevy_ecs::system::EntityCommands,
4420        d: EntityDataItem,
4421    ) -> Result<(), UpdateMetadataError> {
4422        match d.index {
4423            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4424            16 => {
4425                entity.insert(AttachFace(d.value.into_direction()?));
4426            }
4427            17 => {
4428                entity.insert(Peek(d.value.into_byte()?));
4429            }
4430            18 => {
4431                entity.insert(Color(d.value.into_byte()?));
4432            }
4433            _ => {}
4434        }
4435        Ok(())
4436    }
4437}
4438
4439/// The metadata bundle for [Shulker].
4440///
4441/// This type should generally not be used directly.
4442#[derive(Bundle)]
4443pub struct ShulkerMetadataBundle {
4444    _marker: Shulker,
4445    parent: AbstractCreatureMetadataBundle,
4446    attach_face: AttachFace,
4447    peek: Peek,
4448    color: Color,
4449}
4450impl Default for ShulkerMetadataBundle {
4451    fn default() -> Self {
4452        Self {
4453            _marker: Shulker,
4454            parent: Default::default(),
4455            attach_face: AttachFace(Default::default()),
4456            peek: Peek(0),
4457            color: Color(16),
4458        }
4459    }
4460}
4461
4462#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
4463/// A metadata field for [SnowGolem].
4464pub struct HasPumpkin(pub bool);
4465/// The marker component for entities of type `minecraft:snow_golem`.
4466///
4467/// # Metadata
4468///
4469/// These are the metadata components that all `SnowGolem` entities are
4470/// guaranteed to have, in addition to the metadata components from parent
4471/// types:
4472///
4473/// - [HasPumpkin]
4474///
4475/// # Parents
4476///
4477/// Entities with `SnowGolem` will also have the following marker components and
4478/// their metadata fields:
4479///
4480/// - [AbstractCreature]
4481/// - [AbstractInsentient]
4482/// - [AbstractLiving]
4483/// - [AbstractEntity]
4484///
4485/// # Children
4486///
4487/// This entity type has no children types.
4488#[derive(Component)]
4489pub struct SnowGolem;
4490impl SnowGolem {
4491    fn apply_metadata(
4492        entity: &mut bevy_ecs::system::EntityCommands,
4493        d: EntityDataItem,
4494    ) -> Result<(), UpdateMetadataError> {
4495        match d.index {
4496            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4497            16 => {
4498                let bitfield = d.value.into_byte()?;
4499                entity.insert(HasPumpkin(bitfield & 0x10 != 0));
4500            }
4501            _ => {}
4502        }
4503        Ok(())
4504    }
4505}
4506
4507/// The metadata bundle for [SnowGolem].
4508///
4509/// This type should generally not be used directly.
4510#[derive(Bundle)]
4511pub struct SnowGolemMetadataBundle {
4512    _marker: SnowGolem,
4513    parent: AbstractCreatureMetadataBundle,
4514    has_pumpkin: HasPumpkin,
4515}
4516impl Default for SnowGolemMetadataBundle {
4517    fn default() -> Self {
4518        Self {
4519            _marker: SnowGolem,
4520            parent: Default::default(),
4521            has_pumpkin: HasPumpkin(true),
4522        }
4523    }
4524}
4525
4526/// A metadata field for [Tadpole].
4527#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4528pub struct TadpoleFromBucket(pub bool);
4529/// A metadata field for [Tadpole].
4530#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4531pub struct TadpoleAgeLocked(pub bool);
4532/// The marker component for entities of type `minecraft:tadpole`.
4533///
4534/// # Metadata
4535///
4536/// These are the metadata components that all `Tadpole` entities are guaranteed
4537/// to have, in addition to the metadata components from parent types:
4538///
4539/// - [TadpoleFromBucket]
4540/// - [TadpoleAgeLocked]
4541///
4542/// # Parents
4543///
4544/// Entities with `Tadpole` will also have the following marker components and
4545/// their metadata fields:
4546///
4547/// - [AbstractCreature]
4548/// - [AbstractInsentient]
4549/// - [AbstractLiving]
4550/// - [AbstractEntity]
4551///
4552/// # Children
4553///
4554/// This entity type has no children types.
4555#[derive(Component)]
4556pub struct Tadpole;
4557impl Tadpole {
4558    fn apply_metadata(
4559        entity: &mut bevy_ecs::system::EntityCommands,
4560        d: EntityDataItem,
4561    ) -> Result<(), UpdateMetadataError> {
4562        match d.index {
4563            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4564            16 => {
4565                entity.insert(TadpoleFromBucket(d.value.into_boolean()?));
4566            }
4567            17 => {
4568                entity.insert(TadpoleAgeLocked(d.value.into_boolean()?));
4569            }
4570            _ => {}
4571        }
4572        Ok(())
4573    }
4574}
4575
4576/// The metadata bundle for [Tadpole].
4577///
4578/// This type should generally not be used directly.
4579#[derive(Bundle)]
4580pub struct TadpoleMetadataBundle {
4581    _marker: Tadpole,
4582    parent: AbstractCreatureMetadataBundle,
4583    tadpole_from_bucket: TadpoleFromBucket,
4584    tadpole_age_locked: TadpoleAgeLocked,
4585}
4586impl Default for TadpoleMetadataBundle {
4587    fn default() -> Self {
4588        Self {
4589            _marker: Tadpole,
4590            parent: Default::default(),
4591            tadpole_from_bucket: TadpoleFromBucket(false),
4592            tadpole_age_locked: TadpoleAgeLocked(false),
4593        }
4594    }
4595}
4596
4597/// A metadata field for [AbstractAgeable].
4598#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4599pub struct AbstractAgeableBaby(pub bool);
4600/// A metadata field for [AbstractAgeable].
4601#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4602pub struct AbstractAgeableAgeLocked(pub bool);
4603/// An abstract entity marker component.
4604///
4605/// # Metadata
4606///
4607/// These are the metadata components that all `AbstractAgeable` entities are
4608/// guaranteed to have, in addition to the metadata components from parent
4609/// types:
4610///
4611/// - [AbstractAgeableBaby]
4612/// - [AbstractAgeableAgeLocked]
4613///
4614/// # Parents
4615///
4616/// Entities with `AbstractAgeable` will also have the following marker
4617/// components and their metadata fields:
4618///
4619/// - [AbstractCreature]
4620/// - [AbstractInsentient]
4621/// - [AbstractLiving]
4622/// - [AbstractEntity]
4623///
4624/// # Children
4625///
4626/// - [Dolphin]
4627/// - [Squid]
4628///   - [GlowSquid]
4629/// - [AbstractAnimal]
4630///   - [Armadillo]
4631///   - [Axolotl]
4632///   - [Bee]
4633///   - [Chicken]
4634///   - [Cow]
4635///   - [Fox]
4636///   - [Frog]
4637///   - [Goat]
4638///   - [HappyGhast]
4639///   - [Hoglin]
4640///   - [Mooshroom]
4641///   - [Ocelot]
4642///   - [Panda]
4643///   - [Pig]
4644///   - [PolarBear]
4645///   - [Rabbit]
4646///   - [Sheep]
4647///   - [Sniffer]
4648///   - [Strider]
4649///   - [Turtle]
4650///   - [AbstractHorse]
4651///     - [Camel]
4652///       - [CamelHusk]
4653///     - [Horse]
4654///     - [SkeletonHorse]
4655///     - [ZombieHorse]
4656///     - [AbstractChestedHorse]
4657///       - [Donkey]
4658///       - [Llama]
4659///         - [TraderLlama]
4660///       - [Mule]
4661///   - [AbstractTameable]
4662///     - [Cat]
4663///     - [Parrot]
4664///     - [Wolf]
4665///     - [AbstractNautilus]
4666///       - [Nautilus]
4667///       - [ZombieNautilus]
4668/// - [AbstractVillager]
4669///   - [Villager]
4670///   - [WanderingTrader]
4671#[derive(Component)]
4672pub struct AbstractAgeable;
4673impl AbstractAgeable {
4674    fn apply_metadata(
4675        entity: &mut bevy_ecs::system::EntityCommands,
4676        d: EntityDataItem,
4677    ) -> Result<(), UpdateMetadataError> {
4678        match d.index {
4679            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
4680            16 => {
4681                entity.insert(AbstractAgeableBaby(d.value.into_boolean()?));
4682            }
4683            17 => {
4684                entity.insert(AbstractAgeableAgeLocked(d.value.into_boolean()?));
4685            }
4686            _ => {}
4687        }
4688        Ok(())
4689    }
4690}
4691
4692/// The metadata bundle for [AbstractAgeable].
4693///
4694/// This type should generally not be used directly.
4695#[derive(Bundle)]
4696pub struct AbstractAgeableMetadataBundle {
4697    _marker: AbstractAgeable,
4698    parent: AbstractCreatureMetadataBundle,
4699    abstract_ageable_baby: AbstractAgeableBaby,
4700    abstract_ageable_age_locked: AbstractAgeableAgeLocked,
4701}
4702impl Default for AbstractAgeableMetadataBundle {
4703    fn default() -> Self {
4704        Self {
4705            _marker: AbstractAgeable,
4706            parent: Default::default(),
4707            abstract_ageable_baby: AbstractAgeableBaby(false),
4708            abstract_ageable_age_locked: AbstractAgeableAgeLocked(false),
4709        }
4710    }
4711}
4712
4713/// A metadata field for [Dolphin].
4714#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4715pub struct GotFish(pub bool);
4716/// A metadata field for [Dolphin].
4717#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4718pub struct MoistnessLevel(pub i32);
4719/// The marker component for entities of type `minecraft:dolphin`.
4720///
4721/// # Metadata
4722///
4723/// These are the metadata components that all `Dolphin` entities are guaranteed
4724/// to have, in addition to the metadata components from parent types:
4725///
4726/// - [GotFish]
4727/// - [MoistnessLevel]
4728///
4729/// # Parents
4730///
4731/// Entities with `Dolphin` will also have the following marker components and
4732/// their metadata fields:
4733///
4734/// - [AbstractAgeable]
4735/// - [AbstractCreature]
4736/// - [AbstractInsentient]
4737/// - [AbstractLiving]
4738/// - [AbstractEntity]
4739///
4740/// # Children
4741///
4742/// This entity type has no children types.
4743#[derive(Component)]
4744pub struct Dolphin;
4745impl Dolphin {
4746    fn apply_metadata(
4747        entity: &mut bevy_ecs::system::EntityCommands,
4748        d: EntityDataItem,
4749    ) -> Result<(), UpdateMetadataError> {
4750        match d.index {
4751            0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
4752            18 => {
4753                entity.insert(GotFish(d.value.into_boolean()?));
4754            }
4755            19 => {
4756                entity.insert(MoistnessLevel(d.value.into_int()?));
4757            }
4758            _ => {}
4759        }
4760        Ok(())
4761    }
4762}
4763
4764/// The metadata bundle for [Dolphin].
4765///
4766/// This type should generally not be used directly.
4767#[derive(Bundle)]
4768pub struct DolphinMetadataBundle {
4769    _marker: Dolphin,
4770    parent: AbstractAgeableMetadataBundle,
4771    got_fish: GotFish,
4772    moistness_level: MoistnessLevel,
4773}
4774impl Default for DolphinMetadataBundle {
4775    fn default() -> Self {
4776        Self {
4777            _marker: Dolphin,
4778            parent: Default::default(),
4779            got_fish: GotFish(false),
4780            moistness_level: MoistnessLevel(2400),
4781        }
4782    }
4783}
4784
4785/// The marker component for entities of type `minecraft:squid`.
4786///
4787/// # Metadata
4788///
4789/// This entity type does not add any additional metadata. It will still have
4790/// metadata from parent types.
4791///
4792/// # Parents
4793///
4794/// Entities with `Squid` will also have the following marker components and
4795/// their metadata fields:
4796///
4797/// - [AbstractAgeable]
4798/// - [AbstractCreature]
4799/// - [AbstractInsentient]
4800/// - [AbstractLiving]
4801/// - [AbstractEntity]
4802///
4803/// # Children
4804///
4805/// - [GlowSquid]
4806#[derive(Component)]
4807pub struct Squid;
4808impl Squid {
4809    fn apply_metadata(
4810        entity: &mut bevy_ecs::system::EntityCommands,
4811        d: EntityDataItem,
4812    ) -> Result<(), UpdateMetadataError> {
4813        match d.index {
4814            0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
4815            _ => {}
4816        }
4817        Ok(())
4818    }
4819}
4820
4821/// The metadata bundle for [Squid].
4822///
4823/// This type should generally not be used directly.
4824#[derive(Bundle)]
4825pub struct SquidMetadataBundle {
4826    _marker: Squid,
4827    parent: AbstractAgeableMetadataBundle,
4828}
4829impl Default for SquidMetadataBundle {
4830    fn default() -> Self {
4831        Self {
4832            _marker: Squid,
4833            parent: Default::default(),
4834        }
4835    }
4836}
4837
4838/// A metadata field for [GlowSquid].
4839#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4840pub struct DarkTicksRemaining(pub i32);
4841/// The marker component for entities of type `minecraft:glow_squid`.
4842///
4843/// # Metadata
4844///
4845/// These are the metadata components that all `GlowSquid` entities are
4846/// guaranteed to have, in addition to the metadata components from parent
4847/// types:
4848///
4849/// - [DarkTicksRemaining]
4850///
4851/// # Parents
4852///
4853/// Entities with `GlowSquid` will also have the following marker components and
4854/// their metadata fields:
4855///
4856/// - [Squid]
4857/// - [AbstractAgeable]
4858/// - [AbstractCreature]
4859/// - [AbstractInsentient]
4860/// - [AbstractLiving]
4861/// - [AbstractEntity]
4862///
4863/// # Children
4864///
4865/// This entity type has no children types.
4866#[derive(Component)]
4867pub struct GlowSquid;
4868impl GlowSquid {
4869    fn apply_metadata(
4870        entity: &mut bevy_ecs::system::EntityCommands,
4871        d: EntityDataItem,
4872    ) -> Result<(), UpdateMetadataError> {
4873        match d.index {
4874            0..=17 => Squid::apply_metadata(entity, d)?,
4875            18 => {
4876                entity.insert(DarkTicksRemaining(d.value.into_int()?));
4877            }
4878            _ => {}
4879        }
4880        Ok(())
4881    }
4882}
4883
4884/// The metadata bundle for [GlowSquid].
4885///
4886/// This type should generally not be used directly.
4887#[derive(Bundle)]
4888pub struct GlowSquidMetadataBundle {
4889    _marker: GlowSquid,
4890    parent: SquidMetadataBundle,
4891    dark_ticks_remaining: DarkTicksRemaining,
4892}
4893impl Default for GlowSquidMetadataBundle {
4894    fn default() -> Self {
4895        Self {
4896            _marker: GlowSquid,
4897            parent: Default::default(),
4898            dark_ticks_remaining: DarkTicksRemaining(0),
4899        }
4900    }
4901}
4902
4903/// An abstract entity marker component.
4904///
4905/// # Metadata
4906///
4907/// This entity type does not add any additional metadata. It will still have
4908/// metadata from parent types.
4909///
4910/// # Parents
4911///
4912/// Entities with `AbstractAnimal` will also have the following marker
4913/// components and their metadata fields:
4914///
4915/// - [AbstractAgeable]
4916/// - [AbstractCreature]
4917/// - [AbstractInsentient]
4918/// - [AbstractLiving]
4919/// - [AbstractEntity]
4920///
4921/// # Children
4922///
4923/// - [Armadillo]
4924/// - [Axolotl]
4925/// - [Bee]
4926/// - [Chicken]
4927/// - [Cow]
4928/// - [Fox]
4929/// - [Frog]
4930/// - [Goat]
4931/// - [HappyGhast]
4932/// - [Hoglin]
4933/// - [Mooshroom]
4934/// - [Ocelot]
4935/// - [Panda]
4936/// - [Pig]
4937/// - [PolarBear]
4938/// - [Rabbit]
4939/// - [Sheep]
4940/// - [Sniffer]
4941/// - [Strider]
4942/// - [Turtle]
4943/// - [AbstractHorse]
4944///   - [Camel]
4945///     - [CamelHusk]
4946///   - [Horse]
4947///   - [SkeletonHorse]
4948///   - [ZombieHorse]
4949///   - [AbstractChestedHorse]
4950///     - [Donkey]
4951///     - [Llama]
4952///       - [TraderLlama]
4953///     - [Mule]
4954/// - [AbstractTameable]
4955///   - [Cat]
4956///   - [Parrot]
4957///   - [Wolf]
4958///   - [AbstractNautilus]
4959///     - [Nautilus]
4960///     - [ZombieNautilus]
4961#[derive(Component)]
4962pub struct AbstractAnimal;
4963impl AbstractAnimal {
4964    fn apply_metadata(
4965        entity: &mut bevy_ecs::system::EntityCommands,
4966        d: EntityDataItem,
4967    ) -> Result<(), UpdateMetadataError> {
4968        match d.index {
4969            0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
4970            _ => {}
4971        }
4972        Ok(())
4973    }
4974}
4975
4976/// The metadata bundle for [AbstractAnimal].
4977///
4978/// This type should generally not be used directly.
4979#[derive(Bundle)]
4980pub struct AbstractAnimalMetadataBundle {
4981    _marker: AbstractAnimal,
4982    parent: AbstractAgeableMetadataBundle,
4983}
4984impl Default for AbstractAnimalMetadataBundle {
4985    fn default() -> Self {
4986        Self {
4987            _marker: AbstractAnimal,
4988            parent: Default::default(),
4989        }
4990    }
4991}
4992
4993/// A metadata field for [Armadillo].
4994#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
4995pub struct ArmadilloState(pub ArmadilloStateKind);
4996/// The marker component for entities of type `minecraft:armadillo`.
4997///
4998/// # Metadata
4999///
5000/// These are the metadata components that all `Armadillo` entities are
5001/// guaranteed to have, in addition to the metadata components from parent
5002/// types:
5003///
5004/// - [ArmadilloState]
5005///
5006/// # Parents
5007///
5008/// Entities with `Armadillo` will also have the following marker components and
5009/// their metadata fields:
5010///
5011/// - [AbstractAnimal]
5012/// - [AbstractAgeable]
5013/// - [AbstractCreature]
5014/// - [AbstractInsentient]
5015/// - [AbstractLiving]
5016/// - [AbstractEntity]
5017///
5018/// # Children
5019///
5020/// This entity type has no children types.
5021#[derive(Component)]
5022pub struct Armadillo;
5023impl Armadillo {
5024    fn apply_metadata(
5025        entity: &mut bevy_ecs::system::EntityCommands,
5026        d: EntityDataItem,
5027    ) -> Result<(), UpdateMetadataError> {
5028        match d.index {
5029            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5030            18 => {
5031                entity.insert(ArmadilloState(d.value.into_armadillo_state()?));
5032            }
5033            _ => {}
5034        }
5035        Ok(())
5036    }
5037}
5038
5039/// The metadata bundle for [Armadillo].
5040///
5041/// This type should generally not be used directly.
5042#[derive(Bundle)]
5043pub struct ArmadilloMetadataBundle {
5044    _marker: Armadillo,
5045    parent: AbstractAnimalMetadataBundle,
5046    armadillo_state: ArmadilloState,
5047}
5048impl Default for ArmadilloMetadataBundle {
5049    fn default() -> Self {
5050        Self {
5051            _marker: Armadillo,
5052            parent: Default::default(),
5053            armadillo_state: ArmadilloState(Default::default()),
5054        }
5055    }
5056}
5057
5058/// A metadata field for [Axolotl].
5059#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5060pub struct AxolotlVariant(pub i32);
5061/// A metadata field for [Axolotl].
5062#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5063pub struct PlayingDead(pub bool);
5064/// A metadata field for [Axolotl].
5065#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5066pub struct AxolotlFromBucket(pub bool);
5067/// The marker component for entities of type `minecraft:axolotl`.
5068///
5069/// # Metadata
5070///
5071/// These are the metadata components that all `Axolotl` entities are guaranteed
5072/// to have, in addition to the metadata components from parent types:
5073///
5074/// - [AxolotlVariant]
5075/// - [PlayingDead]
5076/// - [AxolotlFromBucket]
5077///
5078/// # Parents
5079///
5080/// Entities with `Axolotl` will also have the following marker components and
5081/// their metadata fields:
5082///
5083/// - [AbstractAnimal]
5084/// - [AbstractAgeable]
5085/// - [AbstractCreature]
5086/// - [AbstractInsentient]
5087/// - [AbstractLiving]
5088/// - [AbstractEntity]
5089///
5090/// # Children
5091///
5092/// This entity type has no children types.
5093#[derive(Component)]
5094pub struct Axolotl;
5095impl Axolotl {
5096    fn apply_metadata(
5097        entity: &mut bevy_ecs::system::EntityCommands,
5098        d: EntityDataItem,
5099    ) -> Result<(), UpdateMetadataError> {
5100        match d.index {
5101            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5102            18 => {
5103                entity.insert(AxolotlVariant(d.value.into_int()?));
5104            }
5105            19 => {
5106                entity.insert(PlayingDead(d.value.into_boolean()?));
5107            }
5108            20 => {
5109                entity.insert(AxolotlFromBucket(d.value.into_boolean()?));
5110            }
5111            _ => {}
5112        }
5113        Ok(())
5114    }
5115}
5116
5117/// The metadata bundle for [Axolotl].
5118///
5119/// This type should generally not be used directly.
5120#[derive(Bundle)]
5121pub struct AxolotlMetadataBundle {
5122    _marker: Axolotl,
5123    parent: AbstractAnimalMetadataBundle,
5124    axolotl_variant: AxolotlVariant,
5125    playing_dead: PlayingDead,
5126    axolotl_from_bucket: AxolotlFromBucket,
5127}
5128impl Default for AxolotlMetadataBundle {
5129    fn default() -> Self {
5130        Self {
5131            _marker: Axolotl,
5132            parent: Default::default(),
5133            axolotl_variant: AxolotlVariant(0),
5134            playing_dead: PlayingDead(false),
5135            axolotl_from_bucket: AxolotlFromBucket(false),
5136        }
5137    }
5138}
5139
5140#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5141/// A metadata field for [Bee].
5142pub struct HasNectar(pub bool);
5143#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5144/// A metadata field for [Bee].
5145pub struct HasStung(pub bool);
5146#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5147/// A metadata field for [Bee].
5148pub struct BeeRolling(pub bool);
5149/// A metadata field for [Bee].
5150#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5151pub struct BeeAngerEndTime(pub i64);
5152/// The marker component for entities of type `minecraft:bee`.
5153///
5154/// # Metadata
5155///
5156/// These are the metadata components that all `Bee` entities are guaranteed to
5157/// have, in addition to the metadata components from parent types:
5158///
5159/// - [HasNectar]
5160/// - [HasStung]
5161/// - [BeeRolling]
5162/// - [BeeAngerEndTime]
5163///
5164/// # Parents
5165///
5166/// Entities with `Bee` will also have the following marker components and their
5167/// metadata fields:
5168///
5169/// - [AbstractAnimal]
5170/// - [AbstractAgeable]
5171/// - [AbstractCreature]
5172/// - [AbstractInsentient]
5173/// - [AbstractLiving]
5174/// - [AbstractEntity]
5175///
5176/// # Children
5177///
5178/// This entity type has no children types.
5179#[derive(Component)]
5180pub struct Bee;
5181impl Bee {
5182    fn apply_metadata(
5183        entity: &mut bevy_ecs::system::EntityCommands,
5184        d: EntityDataItem,
5185    ) -> Result<(), UpdateMetadataError> {
5186        match d.index {
5187            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5188            18 => {
5189                let bitfield = d.value.into_byte()?;
5190                entity.insert(HasNectar(bitfield & 0x8 != 0));
5191                entity.insert(HasStung(bitfield & 0x4 != 0));
5192                entity.insert(BeeRolling(bitfield & 0x2 != 0));
5193            }
5194            19 => {
5195                entity.insert(BeeAngerEndTime(d.value.into_long()?));
5196            }
5197            _ => {}
5198        }
5199        Ok(())
5200    }
5201}
5202
5203/// The metadata bundle for [Bee].
5204///
5205/// This type should generally not be used directly.
5206#[derive(Bundle)]
5207pub struct BeeMetadataBundle {
5208    _marker: Bee,
5209    parent: AbstractAnimalMetadataBundle,
5210    has_nectar: HasNectar,
5211    has_stung: HasStung,
5212    bee_rolling: BeeRolling,
5213    bee_anger_end_time: BeeAngerEndTime,
5214}
5215impl Default for BeeMetadataBundle {
5216    fn default() -> Self {
5217        Self {
5218            _marker: Bee,
5219            parent: Default::default(),
5220            has_nectar: HasNectar(false),
5221            has_stung: HasStung(false),
5222            bee_rolling: BeeRolling(false),
5223            bee_anger_end_time: BeeAngerEndTime(-1),
5224        }
5225    }
5226}
5227
5228/// A metadata field for [Chicken].
5229#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5230pub struct ChickenVariant(pub azalea_registry::data::ChickenVariant);
5231/// A metadata field for [Chicken].
5232#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5233pub struct ChickenSoundVariant(pub azalea_registry::data::ChickenSoundVariant);
5234/// The marker component for entities of type `minecraft:chicken`.
5235///
5236/// # Metadata
5237///
5238/// These are the metadata components that all `Chicken` entities are guaranteed
5239/// to have, in addition to the metadata components from parent types:
5240///
5241/// - [ChickenVariant]
5242/// - [ChickenSoundVariant]
5243///
5244/// # Parents
5245///
5246/// Entities with `Chicken` will also have the following marker components and
5247/// their metadata fields:
5248///
5249/// - [AbstractAnimal]
5250/// - [AbstractAgeable]
5251/// - [AbstractCreature]
5252/// - [AbstractInsentient]
5253/// - [AbstractLiving]
5254/// - [AbstractEntity]
5255///
5256/// # Children
5257///
5258/// This entity type has no children types.
5259#[derive(Component)]
5260pub struct Chicken;
5261impl Chicken {
5262    fn apply_metadata(
5263        entity: &mut bevy_ecs::system::EntityCommands,
5264        d: EntityDataItem,
5265    ) -> Result<(), UpdateMetadataError> {
5266        match d.index {
5267            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5268            18 => {
5269                entity.insert(ChickenVariant(d.value.into_chicken_variant()?));
5270            }
5271            19 => {
5272                entity.insert(ChickenSoundVariant(d.value.into_chicken_sound_variant()?));
5273            }
5274            _ => {}
5275        }
5276        Ok(())
5277    }
5278}
5279
5280/// The metadata bundle for [Chicken].
5281///
5282/// This type should generally not be used directly.
5283#[derive(Bundle)]
5284pub struct ChickenMetadataBundle {
5285    _marker: Chicken,
5286    parent: AbstractAnimalMetadataBundle,
5287    chicken_variant: ChickenVariant,
5288    chicken_sound_variant: ChickenSoundVariant,
5289}
5290impl Default for ChickenMetadataBundle {
5291    fn default() -> Self {
5292        Self {
5293            _marker: Chicken,
5294            parent: Default::default(),
5295            chicken_variant: ChickenVariant(azalea_registry::data::ChickenVariant::new_raw(0)),
5296            chicken_sound_variant: ChickenSoundVariant(
5297                azalea_registry::data::ChickenSoundVariant::new_raw(0),
5298            ),
5299        }
5300    }
5301}
5302
5303/// A metadata field for [Cow].
5304#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5305pub struct CowVariant(pub azalea_registry::data::CowVariant);
5306/// A metadata field for [Cow].
5307#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5308pub struct CowSoundVariant(pub azalea_registry::data::CowSoundVariant);
5309/// The marker component for entities of type `minecraft:cow`.
5310///
5311/// # Metadata
5312///
5313/// These are the metadata components that all `Cow` entities are guaranteed to
5314/// have, in addition to the metadata components from parent types:
5315///
5316/// - [CowVariant]
5317/// - [CowSoundVariant]
5318///
5319/// # Parents
5320///
5321/// Entities with `Cow` will also have the following marker components and their
5322/// metadata fields:
5323///
5324/// - [AbstractAnimal]
5325/// - [AbstractAgeable]
5326/// - [AbstractCreature]
5327/// - [AbstractInsentient]
5328/// - [AbstractLiving]
5329/// - [AbstractEntity]
5330///
5331/// # Children
5332///
5333/// This entity type has no children types.
5334#[derive(Component)]
5335pub struct Cow;
5336impl Cow {
5337    fn apply_metadata(
5338        entity: &mut bevy_ecs::system::EntityCommands,
5339        d: EntityDataItem,
5340    ) -> Result<(), UpdateMetadataError> {
5341        match d.index {
5342            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5343            18 => {
5344                entity.insert(CowVariant(d.value.into_cow_variant()?));
5345            }
5346            19 => {
5347                entity.insert(CowSoundVariant(d.value.into_cow_sound_variant()?));
5348            }
5349            _ => {}
5350        }
5351        Ok(())
5352    }
5353}
5354
5355/// The metadata bundle for [Cow].
5356///
5357/// This type should generally not be used directly.
5358#[derive(Bundle)]
5359pub struct CowMetadataBundle {
5360    _marker: Cow,
5361    parent: AbstractAnimalMetadataBundle,
5362    cow_variant: CowVariant,
5363    cow_sound_variant: CowSoundVariant,
5364}
5365impl Default for CowMetadataBundle {
5366    fn default() -> Self {
5367        Self {
5368            _marker: Cow,
5369            parent: Default::default(),
5370            cow_variant: CowVariant(azalea_registry::data::CowVariant::new_raw(0)),
5371            cow_sound_variant: CowSoundVariant(azalea_registry::data::CowSoundVariant::new_raw(0)),
5372        }
5373    }
5374}
5375
5376/// A metadata field for [Fox].
5377#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5378pub struct FoxKind(pub i32);
5379#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5380/// A metadata field for [Fox].
5381pub struct FoxSitting(pub bool);
5382#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5383/// A metadata field for [Fox].
5384pub struct Faceplanted(pub bool);
5385#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5386/// A metadata field for [Fox].
5387pub struct Defending(pub bool);
5388#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5389/// A metadata field for [Fox].
5390pub struct Sleeping(pub bool);
5391#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5392/// A metadata field for [Fox].
5393pub struct Pouncing(pub bool);
5394#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5395/// A metadata field for [Fox].
5396pub struct FoxCrouching(pub bool);
5397#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5398/// A metadata field for [Fox].
5399pub struct FoxInterested(pub bool);
5400/// A metadata field for [Fox].
5401#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5402pub struct TrustedId0(pub Option<Uuid>);
5403/// A metadata field for [Fox].
5404#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5405pub struct TrustedId1(pub Option<Uuid>);
5406/// The marker component for entities of type `minecraft:fox`.
5407///
5408/// # Metadata
5409///
5410/// These are the metadata components that all `Fox` entities are guaranteed to
5411/// have, in addition to the metadata components from parent types:
5412///
5413/// - [FoxKind]
5414/// - [FoxSitting]
5415/// - [Faceplanted]
5416/// - [Defending]
5417/// - [Sleeping]
5418/// - [Pouncing]
5419/// - [FoxCrouching]
5420/// - [FoxInterested]
5421/// - [TrustedId0]
5422/// - [TrustedId1]
5423///
5424/// # Parents
5425///
5426/// Entities with `Fox` will also have the following marker components and their
5427/// metadata fields:
5428///
5429/// - [AbstractAnimal]
5430/// - [AbstractAgeable]
5431/// - [AbstractCreature]
5432/// - [AbstractInsentient]
5433/// - [AbstractLiving]
5434/// - [AbstractEntity]
5435///
5436/// # Children
5437///
5438/// This entity type has no children types.
5439#[derive(Component)]
5440pub struct Fox;
5441impl Fox {
5442    fn apply_metadata(
5443        entity: &mut bevy_ecs::system::EntityCommands,
5444        d: EntityDataItem,
5445    ) -> Result<(), UpdateMetadataError> {
5446        match d.index {
5447            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5448            18 => {
5449                entity.insert(FoxKind(d.value.into_int()?));
5450            }
5451            19 => {
5452                let bitfield = d.value.into_byte()?;
5453                entity.insert(FoxSitting(bitfield & 0x1 != 0));
5454                entity.insert(Faceplanted(bitfield & 0x40 != 0));
5455                entity.insert(Defending(bitfield & 0x80 != 0));
5456                entity.insert(Sleeping(bitfield & 0x20 != 0));
5457                entity.insert(Pouncing(bitfield & 0x10 != 0));
5458                entity.insert(FoxCrouching(bitfield & 0x4 != 0));
5459                entity.insert(FoxInterested(bitfield & 0x8 != 0));
5460            }
5461            20 => {
5462                entity.insert(TrustedId0(d.value.into_optional_living_entity_reference()?));
5463            }
5464            21 => {
5465                entity.insert(TrustedId1(d.value.into_optional_living_entity_reference()?));
5466            }
5467            _ => {}
5468        }
5469        Ok(())
5470    }
5471}
5472
5473/// The metadata bundle for [Fox].
5474///
5475/// This type should generally not be used directly.
5476#[derive(Bundle)]
5477pub struct FoxMetadataBundle {
5478    _marker: Fox,
5479    parent: AbstractAnimalMetadataBundle,
5480    fox_kind: FoxKind,
5481    fox_sitting: FoxSitting,
5482    faceplanted: Faceplanted,
5483    defending: Defending,
5484    sleeping: Sleeping,
5485    pouncing: Pouncing,
5486    fox_crouching: FoxCrouching,
5487    fox_interested: FoxInterested,
5488    trusted_id_0: TrustedId0,
5489    trusted_id_1: TrustedId1,
5490}
5491impl Default for FoxMetadataBundle {
5492    fn default() -> Self {
5493        Self {
5494            _marker: Fox,
5495            parent: Default::default(),
5496            fox_kind: FoxKind(Default::default()),
5497            fox_sitting: FoxSitting(false),
5498            faceplanted: Faceplanted(false),
5499            defending: Defending(false),
5500            sleeping: Sleeping(false),
5501            pouncing: Pouncing(false),
5502            fox_crouching: FoxCrouching(false),
5503            fox_interested: FoxInterested(false),
5504            trusted_id_0: TrustedId0(None),
5505            trusted_id_1: TrustedId1(None),
5506        }
5507    }
5508}
5509
5510/// A metadata field for [Frog].
5511#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5512pub struct FrogVariant(pub azalea_registry::data::FrogVariant);
5513/// A metadata field for [Frog].
5514#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5515pub struct TongueTarget(pub OptionalUnsignedInt);
5516/// The marker component for entities of type `minecraft:frog`.
5517///
5518/// # Metadata
5519///
5520/// These are the metadata components that all `Frog` entities are guaranteed to
5521/// have, in addition to the metadata components from parent types:
5522///
5523/// - [FrogVariant]
5524/// - [TongueTarget]
5525///
5526/// # Parents
5527///
5528/// Entities with `Frog` will also have the following marker components and
5529/// their metadata fields:
5530///
5531/// - [AbstractAnimal]
5532/// - [AbstractAgeable]
5533/// - [AbstractCreature]
5534/// - [AbstractInsentient]
5535/// - [AbstractLiving]
5536/// - [AbstractEntity]
5537///
5538/// # Children
5539///
5540/// This entity type has no children types.
5541#[derive(Component)]
5542pub struct Frog;
5543impl Frog {
5544    fn apply_metadata(
5545        entity: &mut bevy_ecs::system::EntityCommands,
5546        d: EntityDataItem,
5547    ) -> Result<(), UpdateMetadataError> {
5548        match d.index {
5549            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5550            18 => {
5551                entity.insert(FrogVariant(d.value.into_frog_variant()?));
5552            }
5553            19 => {
5554                entity.insert(TongueTarget(d.value.into_optional_unsigned_int()?));
5555            }
5556            _ => {}
5557        }
5558        Ok(())
5559    }
5560}
5561
5562/// The metadata bundle for [Frog].
5563///
5564/// This type should generally not be used directly.
5565#[derive(Bundle)]
5566pub struct FrogMetadataBundle {
5567    _marker: Frog,
5568    parent: AbstractAnimalMetadataBundle,
5569    frog_variant: FrogVariant,
5570    tongue_target: TongueTarget,
5571}
5572impl Default for FrogMetadataBundle {
5573    fn default() -> Self {
5574        Self {
5575            _marker: Frog,
5576            parent: Default::default(),
5577            frog_variant: FrogVariant(azalea_registry::data::FrogVariant::new_raw(0)),
5578            tongue_target: TongueTarget(OptionalUnsignedInt(None)),
5579        }
5580    }
5581}
5582
5583/// A metadata field for [Goat].
5584#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5585pub struct IsScreamingGoat(pub bool);
5586/// A metadata field for [Goat].
5587#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5588pub struct HasLeftHorn(pub bool);
5589/// A metadata field for [Goat].
5590#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5591pub struct HasRightHorn(pub bool);
5592/// The marker component for entities of type `minecraft:goat`.
5593///
5594/// # Metadata
5595///
5596/// These are the metadata components that all `Goat` entities are guaranteed to
5597/// have, in addition to the metadata components from parent types:
5598///
5599/// - [IsScreamingGoat]
5600/// - [HasLeftHorn]
5601/// - [HasRightHorn]
5602///
5603/// # Parents
5604///
5605/// Entities with `Goat` will also have the following marker components and
5606/// their metadata fields:
5607///
5608/// - [AbstractAnimal]
5609/// - [AbstractAgeable]
5610/// - [AbstractCreature]
5611/// - [AbstractInsentient]
5612/// - [AbstractLiving]
5613/// - [AbstractEntity]
5614///
5615/// # Children
5616///
5617/// This entity type has no children types.
5618#[derive(Component)]
5619pub struct Goat;
5620impl Goat {
5621    fn apply_metadata(
5622        entity: &mut bevy_ecs::system::EntityCommands,
5623        d: EntityDataItem,
5624    ) -> Result<(), UpdateMetadataError> {
5625        match d.index {
5626            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5627            18 => {
5628                entity.insert(IsScreamingGoat(d.value.into_boolean()?));
5629            }
5630            19 => {
5631                entity.insert(HasLeftHorn(d.value.into_boolean()?));
5632            }
5633            20 => {
5634                entity.insert(HasRightHorn(d.value.into_boolean()?));
5635            }
5636            _ => {}
5637        }
5638        Ok(())
5639    }
5640}
5641
5642/// The metadata bundle for [Goat].
5643///
5644/// This type should generally not be used directly.
5645#[derive(Bundle)]
5646pub struct GoatMetadataBundle {
5647    _marker: Goat,
5648    parent: AbstractAnimalMetadataBundle,
5649    is_screaming_goat: IsScreamingGoat,
5650    has_left_horn: HasLeftHorn,
5651    has_right_horn: HasRightHorn,
5652}
5653impl Default for GoatMetadataBundle {
5654    fn default() -> Self {
5655        Self {
5656            _marker: Goat,
5657            parent: Default::default(),
5658            is_screaming_goat: IsScreamingGoat(false),
5659            has_left_horn: HasLeftHorn(true),
5660            has_right_horn: HasRightHorn(true),
5661        }
5662    }
5663}
5664
5665/// A metadata field for [HappyGhast].
5666#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5667pub struct IsLeashHolder(pub bool);
5668/// A metadata field for [HappyGhast].
5669#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5670pub struct StaysStill(pub bool);
5671/// The marker component for entities of type `minecraft:happy_ghast`.
5672///
5673/// # Metadata
5674///
5675/// These are the metadata components that all `HappyGhast` entities are
5676/// guaranteed to have, in addition to the metadata components from parent
5677/// types:
5678///
5679/// - [IsLeashHolder]
5680/// - [StaysStill]
5681///
5682/// # Parents
5683///
5684/// Entities with `HappyGhast` will also have the following marker components
5685/// and their metadata fields:
5686///
5687/// - [AbstractAnimal]
5688/// - [AbstractAgeable]
5689/// - [AbstractCreature]
5690/// - [AbstractInsentient]
5691/// - [AbstractLiving]
5692/// - [AbstractEntity]
5693///
5694/// # Children
5695///
5696/// This entity type has no children types.
5697#[derive(Component)]
5698pub struct HappyGhast;
5699impl HappyGhast {
5700    fn apply_metadata(
5701        entity: &mut bevy_ecs::system::EntityCommands,
5702        d: EntityDataItem,
5703    ) -> Result<(), UpdateMetadataError> {
5704        match d.index {
5705            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5706            18 => {
5707                entity.insert(IsLeashHolder(d.value.into_boolean()?));
5708            }
5709            19 => {
5710                entity.insert(StaysStill(d.value.into_boolean()?));
5711            }
5712            _ => {}
5713        }
5714        Ok(())
5715    }
5716}
5717
5718/// The metadata bundle for [HappyGhast].
5719///
5720/// This type should generally not be used directly.
5721#[derive(Bundle)]
5722pub struct HappyGhastMetadataBundle {
5723    _marker: HappyGhast,
5724    parent: AbstractAnimalMetadataBundle,
5725    is_leash_holder: IsLeashHolder,
5726    stays_still: StaysStill,
5727}
5728impl Default for HappyGhastMetadataBundle {
5729    fn default() -> Self {
5730        Self {
5731            _marker: HappyGhast,
5732            parent: Default::default(),
5733            is_leash_holder: IsLeashHolder(false),
5734            stays_still: StaysStill(false),
5735        }
5736    }
5737}
5738
5739/// A metadata field for [Hoglin].
5740#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5741pub struct HoglinImmuneToZombification(pub bool);
5742/// The marker component for entities of type `minecraft:hoglin`.
5743///
5744/// # Metadata
5745///
5746/// These are the metadata components that all `Hoglin` entities are guaranteed
5747/// to have, in addition to the metadata components from parent types:
5748///
5749/// - [HoglinImmuneToZombification]
5750///
5751/// # Parents
5752///
5753/// Entities with `Hoglin` will also have the following marker components and
5754/// their metadata fields:
5755///
5756/// - [AbstractAnimal]
5757/// - [AbstractAgeable]
5758/// - [AbstractCreature]
5759/// - [AbstractInsentient]
5760/// - [AbstractLiving]
5761/// - [AbstractEntity]
5762///
5763/// # Children
5764///
5765/// This entity type has no children types.
5766#[derive(Component)]
5767pub struct Hoglin;
5768impl Hoglin {
5769    fn apply_metadata(
5770        entity: &mut bevy_ecs::system::EntityCommands,
5771        d: EntityDataItem,
5772    ) -> Result<(), UpdateMetadataError> {
5773        match d.index {
5774            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5775            18 => {
5776                entity.insert(HoglinImmuneToZombification(d.value.into_boolean()?));
5777            }
5778            _ => {}
5779        }
5780        Ok(())
5781    }
5782}
5783
5784/// The metadata bundle for [Hoglin].
5785///
5786/// This type should generally not be used directly.
5787#[derive(Bundle)]
5788pub struct HoglinMetadataBundle {
5789    _marker: Hoglin,
5790    parent: AbstractAnimalMetadataBundle,
5791    hoglin_immune_to_zombification: HoglinImmuneToZombification,
5792}
5793impl Default for HoglinMetadataBundle {
5794    fn default() -> Self {
5795        Self {
5796            _marker: Hoglin,
5797            parent: Default::default(),
5798            hoglin_immune_to_zombification: HoglinImmuneToZombification(false),
5799        }
5800    }
5801}
5802
5803/// A metadata field for [Mooshroom].
5804#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5805pub struct MooshroomKind(pub i32);
5806/// The marker component for entities of type `minecraft:mooshroom`.
5807///
5808/// # Metadata
5809///
5810/// These are the metadata components that all `Mooshroom` entities are
5811/// guaranteed to have, in addition to the metadata components from parent
5812/// types:
5813///
5814/// - [MooshroomKind]
5815///
5816/// # Parents
5817///
5818/// Entities with `Mooshroom` will also have the following marker components and
5819/// their metadata fields:
5820///
5821/// - [AbstractAnimal]
5822/// - [AbstractAgeable]
5823/// - [AbstractCreature]
5824/// - [AbstractInsentient]
5825/// - [AbstractLiving]
5826/// - [AbstractEntity]
5827///
5828/// # Children
5829///
5830/// This entity type has no children types.
5831#[derive(Component)]
5832pub struct Mooshroom;
5833impl Mooshroom {
5834    fn apply_metadata(
5835        entity: &mut bevy_ecs::system::EntityCommands,
5836        d: EntityDataItem,
5837    ) -> Result<(), UpdateMetadataError> {
5838        match d.index {
5839            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5840            18 => {
5841                entity.insert(MooshroomKind(d.value.into_int()?));
5842            }
5843            _ => {}
5844        }
5845        Ok(())
5846    }
5847}
5848
5849/// The metadata bundle for [Mooshroom].
5850///
5851/// This type should generally not be used directly.
5852#[derive(Bundle)]
5853pub struct MooshroomMetadataBundle {
5854    _marker: Mooshroom,
5855    parent: AbstractAnimalMetadataBundle,
5856    mooshroom_kind: MooshroomKind,
5857}
5858impl Default for MooshroomMetadataBundle {
5859    fn default() -> Self {
5860        Self {
5861            _marker: Mooshroom,
5862            parent: Default::default(),
5863            mooshroom_kind: MooshroomKind(Default::default()),
5864        }
5865    }
5866}
5867
5868/// A metadata field for [Ocelot].
5869#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5870pub struct Trusting(pub bool);
5871/// The marker component for entities of type `minecraft:ocelot`.
5872///
5873/// # Metadata
5874///
5875/// These are the metadata components that all `Ocelot` entities are guaranteed
5876/// to have, in addition to the metadata components from parent types:
5877///
5878/// - [Trusting]
5879///
5880/// # Parents
5881///
5882/// Entities with `Ocelot` will also have the following marker components and
5883/// their metadata fields:
5884///
5885/// - [AbstractAnimal]
5886/// - [AbstractAgeable]
5887/// - [AbstractCreature]
5888/// - [AbstractInsentient]
5889/// - [AbstractLiving]
5890/// - [AbstractEntity]
5891///
5892/// # Children
5893///
5894/// This entity type has no children types.
5895#[derive(Component)]
5896pub struct Ocelot;
5897impl Ocelot {
5898    fn apply_metadata(
5899        entity: &mut bevy_ecs::system::EntityCommands,
5900        d: EntityDataItem,
5901    ) -> Result<(), UpdateMetadataError> {
5902        match d.index {
5903            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
5904            18 => {
5905                entity.insert(Trusting(d.value.into_boolean()?));
5906            }
5907            _ => {}
5908        }
5909        Ok(())
5910    }
5911}
5912
5913/// The metadata bundle for [Ocelot].
5914///
5915/// This type should generally not be used directly.
5916#[derive(Bundle)]
5917pub struct OcelotMetadataBundle {
5918    _marker: Ocelot,
5919    parent: AbstractAnimalMetadataBundle,
5920    trusting: Trusting,
5921}
5922impl Default for OcelotMetadataBundle {
5923    fn default() -> Self {
5924        Self {
5925            _marker: Ocelot,
5926            parent: Default::default(),
5927            trusting: Trusting(false),
5928        }
5929    }
5930}
5931
5932/// A metadata field for [Panda].
5933#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5934pub struct PandaUnhappyCounter(pub i32);
5935/// A metadata field for [Panda].
5936#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5937pub struct SneezeCounter(pub i32);
5938/// A metadata field for [Panda].
5939#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5940pub struct EatCounter(pub i32);
5941#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5942/// A metadata field for [Panda].
5943pub struct Sneezing(pub bool);
5944#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5945/// A metadata field for [Panda].
5946pub struct PandaSitting(pub bool);
5947#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5948/// A metadata field for [Panda].
5949pub struct OnBack(pub bool);
5950#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
5951/// A metadata field for [Panda].
5952pub struct PandaRolling(pub bool);
5953/// A metadata field for [Panda].
5954#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5955pub struct HiddenGene(pub u8);
5956/// A metadata field for [Panda].
5957#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
5958pub struct PandaFlags(pub u8);
5959/// The marker component for entities of type `minecraft:panda`.
5960///
5961/// # Metadata
5962///
5963/// These are the metadata components that all `Panda` entities are guaranteed
5964/// to have, in addition to the metadata components from parent types:
5965///
5966/// - [PandaUnhappyCounter]
5967/// - [SneezeCounter]
5968/// - [EatCounter]
5969/// - [Sneezing]
5970/// - [PandaSitting]
5971/// - [OnBack]
5972/// - [PandaRolling]
5973/// - [HiddenGene]
5974/// - [PandaFlags]
5975///
5976/// # Parents
5977///
5978/// Entities with `Panda` will also have the following marker components and
5979/// their metadata fields:
5980///
5981/// - [AbstractAnimal]
5982/// - [AbstractAgeable]
5983/// - [AbstractCreature]
5984/// - [AbstractInsentient]
5985/// - [AbstractLiving]
5986/// - [AbstractEntity]
5987///
5988/// # Children
5989///
5990/// This entity type has no children types.
5991#[derive(Component)]
5992pub struct Panda;
5993impl Panda {
5994    fn apply_metadata(
5995        entity: &mut bevy_ecs::system::EntityCommands,
5996        d: EntityDataItem,
5997    ) -> Result<(), UpdateMetadataError> {
5998        match d.index {
5999            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6000            18 => {
6001                entity.insert(PandaUnhappyCounter(d.value.into_int()?));
6002            }
6003            19 => {
6004                entity.insert(SneezeCounter(d.value.into_int()?));
6005            }
6006            20 => {
6007                entity.insert(EatCounter(d.value.into_int()?));
6008            }
6009            21 => {
6010                let bitfield = d.value.into_byte()?;
6011                entity.insert(Sneezing(bitfield & 0x2 != 0));
6012                entity.insert(PandaSitting(bitfield & 0x8 != 0));
6013                entity.insert(OnBack(bitfield & 0x10 != 0));
6014                entity.insert(PandaRolling(bitfield & 0x4 != 0));
6015            }
6016            22 => {
6017                entity.insert(HiddenGene(d.value.into_byte()?));
6018            }
6019            23 => {
6020                entity.insert(PandaFlags(d.value.into_byte()?));
6021            }
6022            _ => {}
6023        }
6024        Ok(())
6025    }
6026}
6027
6028/// The metadata bundle for [Panda].
6029///
6030/// This type should generally not be used directly.
6031#[derive(Bundle)]
6032pub struct PandaMetadataBundle {
6033    _marker: Panda,
6034    parent: AbstractAnimalMetadataBundle,
6035    panda_unhappy_counter: PandaUnhappyCounter,
6036    sneeze_counter: SneezeCounter,
6037    eat_counter: EatCounter,
6038    sneezing: Sneezing,
6039    panda_sitting: PandaSitting,
6040    on_back: OnBack,
6041    panda_rolling: PandaRolling,
6042    hidden_gene: HiddenGene,
6043    panda_flags: PandaFlags,
6044}
6045impl Default for PandaMetadataBundle {
6046    fn default() -> Self {
6047        Self {
6048            _marker: Panda,
6049            parent: Default::default(),
6050            panda_unhappy_counter: PandaUnhappyCounter(0),
6051            sneeze_counter: SneezeCounter(0),
6052            eat_counter: EatCounter(0),
6053            sneezing: Sneezing(false),
6054            panda_sitting: PandaSitting(false),
6055            on_back: OnBack(false),
6056            panda_rolling: PandaRolling(false),
6057            hidden_gene: HiddenGene(0),
6058            panda_flags: PandaFlags(0),
6059        }
6060    }
6061}
6062
6063/// A metadata field for [Pig].
6064#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6065pub struct PigBoostTime(pub i32);
6066/// A metadata field for [Pig].
6067#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6068pub struct PigVariant(pub azalea_registry::data::PigVariant);
6069/// A metadata field for [Pig].
6070#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6071pub struct PigSoundVariant(pub azalea_registry::data::PigSoundVariant);
6072/// The marker component for entities of type `minecraft:pig`.
6073///
6074/// # Metadata
6075///
6076/// These are the metadata components that all `Pig` entities are guaranteed to
6077/// have, in addition to the metadata components from parent types:
6078///
6079/// - [PigBoostTime]
6080/// - [PigVariant]
6081/// - [PigSoundVariant]
6082///
6083/// # Parents
6084///
6085/// Entities with `Pig` will also have the following marker components and their
6086/// metadata fields:
6087///
6088/// - [AbstractAnimal]
6089/// - [AbstractAgeable]
6090/// - [AbstractCreature]
6091/// - [AbstractInsentient]
6092/// - [AbstractLiving]
6093/// - [AbstractEntity]
6094///
6095/// # Children
6096///
6097/// This entity type has no children types.
6098#[derive(Component)]
6099pub struct Pig;
6100impl Pig {
6101    fn apply_metadata(
6102        entity: &mut bevy_ecs::system::EntityCommands,
6103        d: EntityDataItem,
6104    ) -> Result<(), UpdateMetadataError> {
6105        match d.index {
6106            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6107            18 => {
6108                entity.insert(PigBoostTime(d.value.into_int()?));
6109            }
6110            19 => {
6111                entity.insert(PigVariant(d.value.into_pig_variant()?));
6112            }
6113            20 => {
6114                entity.insert(PigSoundVariant(d.value.into_pig_sound_variant()?));
6115            }
6116            _ => {}
6117        }
6118        Ok(())
6119    }
6120}
6121
6122/// The metadata bundle for [Pig].
6123///
6124/// This type should generally not be used directly.
6125#[derive(Bundle)]
6126pub struct PigMetadataBundle {
6127    _marker: Pig,
6128    parent: AbstractAnimalMetadataBundle,
6129    pig_boost_time: PigBoostTime,
6130    pig_variant: PigVariant,
6131    pig_sound_variant: PigSoundVariant,
6132}
6133impl Default for PigMetadataBundle {
6134    fn default() -> Self {
6135        Self {
6136            _marker: Pig,
6137            parent: Default::default(),
6138            pig_boost_time: PigBoostTime(0),
6139            pig_variant: PigVariant(azalea_registry::data::PigVariant::new_raw(0)),
6140            pig_sound_variant: PigSoundVariant(azalea_registry::data::PigSoundVariant::new_raw(0)),
6141        }
6142    }
6143}
6144
6145/// A metadata field for [PolarBear].
6146#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6147pub struct PolarBearStanding(pub bool);
6148/// The marker component for entities of type `minecraft:polar_bear`.
6149///
6150/// # Metadata
6151///
6152/// These are the metadata components that all `PolarBear` entities are
6153/// guaranteed to have, in addition to the metadata components from parent
6154/// types:
6155///
6156/// - [PolarBearStanding]
6157///
6158/// # Parents
6159///
6160/// Entities with `PolarBear` will also have the following marker components and
6161/// their metadata fields:
6162///
6163/// - [AbstractAnimal]
6164/// - [AbstractAgeable]
6165/// - [AbstractCreature]
6166/// - [AbstractInsentient]
6167/// - [AbstractLiving]
6168/// - [AbstractEntity]
6169///
6170/// # Children
6171///
6172/// This entity type has no children types.
6173#[derive(Component)]
6174pub struct PolarBear;
6175impl PolarBear {
6176    fn apply_metadata(
6177        entity: &mut bevy_ecs::system::EntityCommands,
6178        d: EntityDataItem,
6179    ) -> Result<(), UpdateMetadataError> {
6180        match d.index {
6181            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6182            18 => {
6183                entity.insert(PolarBearStanding(d.value.into_boolean()?));
6184            }
6185            _ => {}
6186        }
6187        Ok(())
6188    }
6189}
6190
6191/// The metadata bundle for [PolarBear].
6192///
6193/// This type should generally not be used directly.
6194#[derive(Bundle)]
6195pub struct PolarBearMetadataBundle {
6196    _marker: PolarBear,
6197    parent: AbstractAnimalMetadataBundle,
6198    polar_bear_standing: PolarBearStanding,
6199}
6200impl Default for PolarBearMetadataBundle {
6201    fn default() -> Self {
6202        Self {
6203            _marker: PolarBear,
6204            parent: Default::default(),
6205            polar_bear_standing: PolarBearStanding(false),
6206        }
6207    }
6208}
6209
6210/// A metadata field for [Rabbit].
6211#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6212pub struct RabbitKind(pub i32);
6213/// The marker component for entities of type `minecraft:rabbit`.
6214///
6215/// # Metadata
6216///
6217/// These are the metadata components that all `Rabbit` entities are guaranteed
6218/// to have, in addition to the metadata components from parent types:
6219///
6220/// - [RabbitKind]
6221///
6222/// # Parents
6223///
6224/// Entities with `Rabbit` will also have the following marker components and
6225/// their metadata fields:
6226///
6227/// - [AbstractAnimal]
6228/// - [AbstractAgeable]
6229/// - [AbstractCreature]
6230/// - [AbstractInsentient]
6231/// - [AbstractLiving]
6232/// - [AbstractEntity]
6233///
6234/// # Children
6235///
6236/// This entity type has no children types.
6237#[derive(Component)]
6238pub struct Rabbit;
6239impl Rabbit {
6240    fn apply_metadata(
6241        entity: &mut bevy_ecs::system::EntityCommands,
6242        d: EntityDataItem,
6243    ) -> Result<(), UpdateMetadataError> {
6244        match d.index {
6245            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6246            18 => {
6247                entity.insert(RabbitKind(d.value.into_int()?));
6248            }
6249            _ => {}
6250        }
6251        Ok(())
6252    }
6253}
6254
6255/// The metadata bundle for [Rabbit].
6256///
6257/// This type should generally not be used directly.
6258#[derive(Bundle)]
6259pub struct RabbitMetadataBundle {
6260    _marker: Rabbit,
6261    parent: AbstractAnimalMetadataBundle,
6262    rabbit_kind: RabbitKind,
6263}
6264impl Default for RabbitMetadataBundle {
6265    fn default() -> Self {
6266        Self {
6267            _marker: Rabbit,
6268            parent: Default::default(),
6269            rabbit_kind: RabbitKind(Default::default()),
6270        }
6271    }
6272}
6273
6274#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
6275/// A metadata field for [Sheep].
6276pub struct SheepSheared(pub bool);
6277/// The marker component for entities of type `minecraft:sheep`.
6278///
6279/// # Metadata
6280///
6281/// These are the metadata components that all `Sheep` entities are guaranteed
6282/// to have, in addition to the metadata components from parent types:
6283///
6284/// - [SheepSheared]
6285///
6286/// # Parents
6287///
6288/// Entities with `Sheep` will also have the following marker components and
6289/// their metadata fields:
6290///
6291/// - [AbstractAnimal]
6292/// - [AbstractAgeable]
6293/// - [AbstractCreature]
6294/// - [AbstractInsentient]
6295/// - [AbstractLiving]
6296/// - [AbstractEntity]
6297///
6298/// # Children
6299///
6300/// This entity type has no children types.
6301#[derive(Component)]
6302pub struct Sheep;
6303impl Sheep {
6304    fn apply_metadata(
6305        entity: &mut bevy_ecs::system::EntityCommands,
6306        d: EntityDataItem,
6307    ) -> Result<(), UpdateMetadataError> {
6308        match d.index {
6309            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6310            18 => {
6311                let bitfield = d.value.into_byte()?;
6312                entity.insert(SheepSheared(bitfield & 0x10 != 0));
6313            }
6314            _ => {}
6315        }
6316        Ok(())
6317    }
6318}
6319
6320/// The metadata bundle for [Sheep].
6321///
6322/// This type should generally not be used directly.
6323#[derive(Bundle)]
6324pub struct SheepMetadataBundle {
6325    _marker: Sheep,
6326    parent: AbstractAnimalMetadataBundle,
6327    sheep_sheared: SheepSheared,
6328}
6329impl Default for SheepMetadataBundle {
6330    fn default() -> Self {
6331        Self {
6332            _marker: Sheep,
6333            parent: Default::default(),
6334            sheep_sheared: SheepSheared(false),
6335        }
6336    }
6337}
6338
6339/// A metadata field for [Sniffer].
6340#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6341pub struct SnifferState(pub SnifferStateKind);
6342/// A metadata field for [Sniffer].
6343#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6344pub struct DropSeedAtTick(pub i32);
6345/// The marker component for entities of type `minecraft:sniffer`.
6346///
6347/// # Metadata
6348///
6349/// These are the metadata components that all `Sniffer` entities are guaranteed
6350/// to have, in addition to the metadata components from parent types:
6351///
6352/// - [SnifferState]
6353/// - [DropSeedAtTick]
6354///
6355/// # Parents
6356///
6357/// Entities with `Sniffer` will also have the following marker components and
6358/// their metadata fields:
6359///
6360/// - [AbstractAnimal]
6361/// - [AbstractAgeable]
6362/// - [AbstractCreature]
6363/// - [AbstractInsentient]
6364/// - [AbstractLiving]
6365/// - [AbstractEntity]
6366///
6367/// # Children
6368///
6369/// This entity type has no children types.
6370#[derive(Component)]
6371pub struct Sniffer;
6372impl Sniffer {
6373    fn apply_metadata(
6374        entity: &mut bevy_ecs::system::EntityCommands,
6375        d: EntityDataItem,
6376    ) -> Result<(), UpdateMetadataError> {
6377        match d.index {
6378            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6379            18 => {
6380                entity.insert(SnifferState(d.value.into_sniffer_state()?));
6381            }
6382            19 => {
6383                entity.insert(DropSeedAtTick(d.value.into_int()?));
6384            }
6385            _ => {}
6386        }
6387        Ok(())
6388    }
6389}
6390
6391/// The metadata bundle for [Sniffer].
6392///
6393/// This type should generally not be used directly.
6394#[derive(Bundle)]
6395pub struct SnifferMetadataBundle {
6396    _marker: Sniffer,
6397    parent: AbstractAnimalMetadataBundle,
6398    sniffer_state: SnifferState,
6399    drop_seed_at_tick: DropSeedAtTick,
6400}
6401impl Default for SnifferMetadataBundle {
6402    fn default() -> Self {
6403        Self {
6404            _marker: Sniffer,
6405            parent: Default::default(),
6406            sniffer_state: SnifferState(Default::default()),
6407            drop_seed_at_tick: DropSeedAtTick(0),
6408        }
6409    }
6410}
6411
6412/// A metadata field for [Strider].
6413#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6414pub struct StriderBoostTime(pub i32);
6415/// A metadata field for [Strider].
6416#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6417pub struct Suffocating(pub bool);
6418/// The marker component for entities of type `minecraft:strider`.
6419///
6420/// # Metadata
6421///
6422/// These are the metadata components that all `Strider` entities are guaranteed
6423/// to have, in addition to the metadata components from parent types:
6424///
6425/// - [StriderBoostTime]
6426/// - [Suffocating]
6427///
6428/// # Parents
6429///
6430/// Entities with `Strider` will also have the following marker components and
6431/// their metadata fields:
6432///
6433/// - [AbstractAnimal]
6434/// - [AbstractAgeable]
6435/// - [AbstractCreature]
6436/// - [AbstractInsentient]
6437/// - [AbstractLiving]
6438/// - [AbstractEntity]
6439///
6440/// # Children
6441///
6442/// This entity type has no children types.
6443#[derive(Component)]
6444pub struct Strider;
6445impl Strider {
6446    fn apply_metadata(
6447        entity: &mut bevy_ecs::system::EntityCommands,
6448        d: EntityDataItem,
6449    ) -> Result<(), UpdateMetadataError> {
6450        match d.index {
6451            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6452            18 => {
6453                entity.insert(StriderBoostTime(d.value.into_int()?));
6454            }
6455            19 => {
6456                entity.insert(Suffocating(d.value.into_boolean()?));
6457            }
6458            _ => {}
6459        }
6460        Ok(())
6461    }
6462}
6463
6464/// The metadata bundle for [Strider].
6465///
6466/// This type should generally not be used directly.
6467#[derive(Bundle)]
6468pub struct StriderMetadataBundle {
6469    _marker: Strider,
6470    parent: AbstractAnimalMetadataBundle,
6471    strider_boost_time: StriderBoostTime,
6472    suffocating: Suffocating,
6473}
6474impl Default for StriderMetadataBundle {
6475    fn default() -> Self {
6476        Self {
6477            _marker: Strider,
6478            parent: Default::default(),
6479            strider_boost_time: StriderBoostTime(0),
6480            suffocating: Suffocating(false),
6481        }
6482    }
6483}
6484
6485/// A metadata field for [Turtle].
6486#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6487pub struct HasEgg(pub bool);
6488/// A metadata field for [Turtle].
6489#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6490pub struct LayingEgg(pub bool);
6491/// The marker component for entities of type `minecraft:turtle`.
6492///
6493/// # Metadata
6494///
6495/// These are the metadata components that all `Turtle` entities are guaranteed
6496/// to have, in addition to the metadata components from parent types:
6497///
6498/// - [HasEgg]
6499/// - [LayingEgg]
6500///
6501/// # Parents
6502///
6503/// Entities with `Turtle` will also have the following marker components and
6504/// their metadata fields:
6505///
6506/// - [AbstractAnimal]
6507/// - [AbstractAgeable]
6508/// - [AbstractCreature]
6509/// - [AbstractInsentient]
6510/// - [AbstractLiving]
6511/// - [AbstractEntity]
6512///
6513/// # Children
6514///
6515/// This entity type has no children types.
6516#[derive(Component)]
6517pub struct Turtle;
6518impl Turtle {
6519    fn apply_metadata(
6520        entity: &mut bevy_ecs::system::EntityCommands,
6521        d: EntityDataItem,
6522    ) -> Result<(), UpdateMetadataError> {
6523        match d.index {
6524            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6525            18 => {
6526                entity.insert(HasEgg(d.value.into_boolean()?));
6527            }
6528            19 => {
6529                entity.insert(LayingEgg(d.value.into_boolean()?));
6530            }
6531            _ => {}
6532        }
6533        Ok(())
6534    }
6535}
6536
6537/// The metadata bundle for [Turtle].
6538///
6539/// This type should generally not be used directly.
6540#[derive(Bundle)]
6541pub struct TurtleMetadataBundle {
6542    _marker: Turtle,
6543    parent: AbstractAnimalMetadataBundle,
6544    has_egg: HasEgg,
6545    laying_egg: LayingEgg,
6546}
6547impl Default for TurtleMetadataBundle {
6548    fn default() -> Self {
6549        Self {
6550            _marker: Turtle,
6551            parent: Default::default(),
6552            has_egg: HasEgg(false),
6553            laying_egg: LayingEgg(false),
6554        }
6555    }
6556}
6557
6558#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
6559/// A metadata field for [AbstractHorse].
6560pub struct Tamed(pub bool);
6561#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
6562/// A metadata field for [AbstractHorse].
6563pub struct Eating(pub bool);
6564#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
6565/// A metadata field for [AbstractHorse].
6566pub struct AbstractHorseStanding(pub bool);
6567#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
6568/// A metadata field for [AbstractHorse].
6569pub struct Bred(pub bool);
6570/// An abstract entity marker component.
6571///
6572/// # Metadata
6573///
6574/// These are the metadata components that all `AbstractHorse` entities are
6575/// guaranteed to have, in addition to the metadata components from parent
6576/// types:
6577///
6578/// - [Tamed]
6579/// - [Eating]
6580/// - [AbstractHorseStanding]
6581/// - [Bred]
6582///
6583/// # Parents
6584///
6585/// Entities with `AbstractHorse` will also have the following marker components
6586/// and their metadata fields:
6587///
6588/// - [AbstractAnimal]
6589/// - [AbstractAgeable]
6590/// - [AbstractCreature]
6591/// - [AbstractInsentient]
6592/// - [AbstractLiving]
6593/// - [AbstractEntity]
6594///
6595/// # Children
6596///
6597/// - [Camel]
6598///   - [CamelHusk]
6599/// - [Horse]
6600/// - [SkeletonHorse]
6601/// - [ZombieHorse]
6602/// - [AbstractChestedHorse]
6603///   - [Donkey]
6604///   - [Llama]
6605///     - [TraderLlama]
6606///   - [Mule]
6607#[derive(Component)]
6608pub struct AbstractHorse;
6609impl AbstractHorse {
6610    fn apply_metadata(
6611        entity: &mut bevy_ecs::system::EntityCommands,
6612        d: EntityDataItem,
6613    ) -> Result<(), UpdateMetadataError> {
6614        match d.index {
6615            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
6616            18 => {
6617                let bitfield = d.value.into_byte()?;
6618                entity.insert(Tamed(bitfield & 0x2 != 0));
6619                entity.insert(Eating(bitfield & 0x10 != 0));
6620                entity.insert(AbstractHorseStanding(bitfield & 0x20 != 0));
6621                entity.insert(Bred(bitfield & 0x8 != 0));
6622            }
6623            _ => {}
6624        }
6625        Ok(())
6626    }
6627}
6628
6629/// The metadata bundle for [AbstractHorse].
6630///
6631/// This type should generally not be used directly.
6632#[derive(Bundle)]
6633pub struct AbstractHorseMetadataBundle {
6634    _marker: AbstractHorse,
6635    parent: AbstractAnimalMetadataBundle,
6636    tamed: Tamed,
6637    eating: Eating,
6638    abstract_horse_standing: AbstractHorseStanding,
6639    bred: Bred,
6640}
6641impl Default for AbstractHorseMetadataBundle {
6642    fn default() -> Self {
6643        Self {
6644            _marker: AbstractHorse,
6645            parent: Default::default(),
6646            tamed: Tamed(false),
6647            eating: Eating(false),
6648            abstract_horse_standing: AbstractHorseStanding(false),
6649            bred: Bred(false),
6650        }
6651    }
6652}
6653
6654/// A metadata field for [Camel].
6655#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6656pub struct CamelDash(pub bool);
6657/// A metadata field for [Camel].
6658#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6659pub struct LastPoseChangeTick(pub i64);
6660/// The marker component for entities of type `minecraft:camel`.
6661///
6662/// # Metadata
6663///
6664/// These are the metadata components that all `Camel` entities are guaranteed
6665/// to have, in addition to the metadata components from parent types:
6666///
6667/// - [CamelDash]
6668/// - [LastPoseChangeTick]
6669///
6670/// # Parents
6671///
6672/// Entities with `Camel` will also have the following marker components and
6673/// their metadata fields:
6674///
6675/// - [AbstractHorse]
6676/// - [AbstractAnimal]
6677/// - [AbstractAgeable]
6678/// - [AbstractCreature]
6679/// - [AbstractInsentient]
6680/// - [AbstractLiving]
6681/// - [AbstractEntity]
6682///
6683/// # Children
6684///
6685/// - [CamelHusk]
6686#[derive(Component)]
6687pub struct Camel;
6688impl Camel {
6689    fn apply_metadata(
6690        entity: &mut bevy_ecs::system::EntityCommands,
6691        d: EntityDataItem,
6692    ) -> Result<(), UpdateMetadataError> {
6693        match d.index {
6694            0..=18 => AbstractHorse::apply_metadata(entity, d)?,
6695            19 => {
6696                entity.insert(CamelDash(d.value.into_boolean()?));
6697            }
6698            20 => {
6699                entity.insert(LastPoseChangeTick(d.value.into_long()?));
6700            }
6701            _ => {}
6702        }
6703        Ok(())
6704    }
6705}
6706
6707/// The metadata bundle for [Camel].
6708///
6709/// This type should generally not be used directly.
6710#[derive(Bundle)]
6711pub struct CamelMetadataBundle {
6712    _marker: Camel,
6713    parent: AbstractHorseMetadataBundle,
6714    camel_dash: CamelDash,
6715    last_pose_change_tick: LastPoseChangeTick,
6716}
6717impl Default for CamelMetadataBundle {
6718    fn default() -> Self {
6719        Self {
6720            _marker: Camel,
6721            parent: Default::default(),
6722            camel_dash: CamelDash(false),
6723            last_pose_change_tick: LastPoseChangeTick(0),
6724        }
6725    }
6726}
6727
6728/// The marker component for entities of type `minecraft:camel_husk`.
6729///
6730/// # Metadata
6731///
6732/// This entity type does not add any additional metadata. It will still have
6733/// metadata from parent types.
6734///
6735/// # Parents
6736///
6737/// Entities with `CamelHusk` will also have the following marker components and
6738/// their metadata fields:
6739///
6740/// - [Camel]
6741/// - [AbstractHorse]
6742/// - [AbstractAnimal]
6743/// - [AbstractAgeable]
6744/// - [AbstractCreature]
6745/// - [AbstractInsentient]
6746/// - [AbstractLiving]
6747/// - [AbstractEntity]
6748///
6749/// # Children
6750///
6751/// This entity type has no children types.
6752#[derive(Component)]
6753pub struct CamelHusk;
6754impl CamelHusk {
6755    fn apply_metadata(
6756        entity: &mut bevy_ecs::system::EntityCommands,
6757        d: EntityDataItem,
6758    ) -> Result<(), UpdateMetadataError> {
6759        match d.index {
6760            0..=20 => Camel::apply_metadata(entity, d)?,
6761            _ => {}
6762        }
6763        Ok(())
6764    }
6765}
6766
6767/// The metadata bundle for [CamelHusk].
6768///
6769/// This type should generally not be used directly.
6770#[derive(Bundle)]
6771pub struct CamelHuskMetadataBundle {
6772    _marker: CamelHusk,
6773    parent: CamelMetadataBundle,
6774}
6775impl Default for CamelHuskMetadataBundle {
6776    fn default() -> Self {
6777        Self {
6778            _marker: CamelHusk,
6779            parent: Default::default(),
6780        }
6781    }
6782}
6783
6784/// A metadata field for [Horse].
6785#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6786pub struct HorseTypeVariant(pub i32);
6787/// The marker component for entities of type `minecraft:horse`.
6788///
6789/// # Metadata
6790///
6791/// These are the metadata components that all `Horse` entities are guaranteed
6792/// to have, in addition to the metadata components from parent types:
6793///
6794/// - [HorseTypeVariant]
6795///
6796/// # Parents
6797///
6798/// Entities with `Horse` will also have the following marker components and
6799/// their metadata fields:
6800///
6801/// - [AbstractHorse]
6802/// - [AbstractAnimal]
6803/// - [AbstractAgeable]
6804/// - [AbstractCreature]
6805/// - [AbstractInsentient]
6806/// - [AbstractLiving]
6807/// - [AbstractEntity]
6808///
6809/// # Children
6810///
6811/// This entity type has no children types.
6812#[derive(Component)]
6813pub struct Horse;
6814impl Horse {
6815    fn apply_metadata(
6816        entity: &mut bevy_ecs::system::EntityCommands,
6817        d: EntityDataItem,
6818    ) -> Result<(), UpdateMetadataError> {
6819        match d.index {
6820            0..=18 => AbstractHorse::apply_metadata(entity, d)?,
6821            19 => {
6822                entity.insert(HorseTypeVariant(d.value.into_int()?));
6823            }
6824            _ => {}
6825        }
6826        Ok(())
6827    }
6828}
6829
6830/// The metadata bundle for [Horse].
6831///
6832/// This type should generally not be used directly.
6833#[derive(Bundle)]
6834pub struct HorseMetadataBundle {
6835    _marker: Horse,
6836    parent: AbstractHorseMetadataBundle,
6837    horse_type_variant: HorseTypeVariant,
6838}
6839impl Default for HorseMetadataBundle {
6840    fn default() -> Self {
6841        Self {
6842            _marker: Horse,
6843            parent: Default::default(),
6844            horse_type_variant: HorseTypeVariant(0),
6845        }
6846    }
6847}
6848
6849/// The marker component for entities of type `minecraft:skeleton_horse`.
6850///
6851/// # Metadata
6852///
6853/// This entity type does not add any additional metadata. It will still have
6854/// metadata from parent types.
6855///
6856/// # Parents
6857///
6858/// Entities with `SkeletonHorse` will also have the following marker components
6859/// and their metadata fields:
6860///
6861/// - [AbstractHorse]
6862/// - [AbstractAnimal]
6863/// - [AbstractAgeable]
6864/// - [AbstractCreature]
6865/// - [AbstractInsentient]
6866/// - [AbstractLiving]
6867/// - [AbstractEntity]
6868///
6869/// # Children
6870///
6871/// This entity type has no children types.
6872#[derive(Component)]
6873pub struct SkeletonHorse;
6874impl SkeletonHorse {
6875    fn apply_metadata(
6876        entity: &mut bevy_ecs::system::EntityCommands,
6877        d: EntityDataItem,
6878    ) -> Result<(), UpdateMetadataError> {
6879        match d.index {
6880            0..=18 => AbstractHorse::apply_metadata(entity, d)?,
6881            _ => {}
6882        }
6883        Ok(())
6884    }
6885}
6886
6887/// The metadata bundle for [SkeletonHorse].
6888///
6889/// This type should generally not be used directly.
6890#[derive(Bundle)]
6891pub struct SkeletonHorseMetadataBundle {
6892    _marker: SkeletonHorse,
6893    parent: AbstractHorseMetadataBundle,
6894}
6895impl Default for SkeletonHorseMetadataBundle {
6896    fn default() -> Self {
6897        Self {
6898            _marker: SkeletonHorse,
6899            parent: Default::default(),
6900        }
6901    }
6902}
6903
6904/// The marker component for entities of type `minecraft:zombie_horse`.
6905///
6906/// # Metadata
6907///
6908/// This entity type does not add any additional metadata. It will still have
6909/// metadata from parent types.
6910///
6911/// # Parents
6912///
6913/// Entities with `ZombieHorse` will also have the following marker components
6914/// and their metadata fields:
6915///
6916/// - [AbstractHorse]
6917/// - [AbstractAnimal]
6918/// - [AbstractAgeable]
6919/// - [AbstractCreature]
6920/// - [AbstractInsentient]
6921/// - [AbstractLiving]
6922/// - [AbstractEntity]
6923///
6924/// # Children
6925///
6926/// This entity type has no children types.
6927#[derive(Component)]
6928pub struct ZombieHorse;
6929impl ZombieHorse {
6930    fn apply_metadata(
6931        entity: &mut bevy_ecs::system::EntityCommands,
6932        d: EntityDataItem,
6933    ) -> Result<(), UpdateMetadataError> {
6934        match d.index {
6935            0..=18 => AbstractHorse::apply_metadata(entity, d)?,
6936            _ => {}
6937        }
6938        Ok(())
6939    }
6940}
6941
6942/// The metadata bundle for [ZombieHorse].
6943///
6944/// This type should generally not be used directly.
6945#[derive(Bundle)]
6946pub struct ZombieHorseMetadataBundle {
6947    _marker: ZombieHorse,
6948    parent: AbstractHorseMetadataBundle,
6949}
6950impl Default for ZombieHorseMetadataBundle {
6951    fn default() -> Self {
6952        Self {
6953            _marker: ZombieHorse,
6954            parent: Default::default(),
6955        }
6956    }
6957}
6958
6959/// A metadata field for [AbstractChestedHorse].
6960#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
6961pub struct Chest(pub bool);
6962/// An abstract entity marker component.
6963///
6964/// # Metadata
6965///
6966/// These are the metadata components that all `AbstractChestedHorse` entities
6967/// are guaranteed to have, in addition to the metadata components from parent
6968/// types:
6969///
6970/// - [Chest]
6971///
6972/// # Parents
6973///
6974/// Entities with `AbstractChestedHorse` will also have the following marker
6975/// components and their metadata fields:
6976///
6977/// - [AbstractHorse]
6978/// - [AbstractAnimal]
6979/// - [AbstractAgeable]
6980/// - [AbstractCreature]
6981/// - [AbstractInsentient]
6982/// - [AbstractLiving]
6983/// - [AbstractEntity]
6984///
6985/// # Children
6986///
6987/// - [Donkey]
6988/// - [Llama]
6989///   - [TraderLlama]
6990/// - [Mule]
6991#[derive(Component)]
6992pub struct AbstractChestedHorse;
6993impl AbstractChestedHorse {
6994    fn apply_metadata(
6995        entity: &mut bevy_ecs::system::EntityCommands,
6996        d: EntityDataItem,
6997    ) -> Result<(), UpdateMetadataError> {
6998        match d.index {
6999            0..=18 => AbstractHorse::apply_metadata(entity, d)?,
7000            19 => {
7001                entity.insert(Chest(d.value.into_boolean()?));
7002            }
7003            _ => {}
7004        }
7005        Ok(())
7006    }
7007}
7008
7009/// The metadata bundle for [AbstractChestedHorse].
7010///
7011/// This type should generally not be used directly.
7012#[derive(Bundle)]
7013pub struct AbstractChestedHorseMetadataBundle {
7014    _marker: AbstractChestedHorse,
7015    parent: AbstractHorseMetadataBundle,
7016    chest: Chest,
7017}
7018impl Default for AbstractChestedHorseMetadataBundle {
7019    fn default() -> Self {
7020        Self {
7021            _marker: AbstractChestedHorse,
7022            parent: Default::default(),
7023            chest: Chest(false),
7024        }
7025    }
7026}
7027
7028/// The marker component for entities of type `minecraft:donkey`.
7029///
7030/// # Metadata
7031///
7032/// This entity type does not add any additional metadata. It will still have
7033/// metadata from parent types.
7034///
7035/// # Parents
7036///
7037/// Entities with `Donkey` will also have the following marker components and
7038/// their metadata fields:
7039///
7040/// - [AbstractChestedHorse]
7041/// - [AbstractHorse]
7042/// - [AbstractAnimal]
7043/// - [AbstractAgeable]
7044/// - [AbstractCreature]
7045/// - [AbstractInsentient]
7046/// - [AbstractLiving]
7047/// - [AbstractEntity]
7048///
7049/// # Children
7050///
7051/// This entity type has no children types.
7052#[derive(Component)]
7053pub struct Donkey;
7054impl Donkey {
7055    fn apply_metadata(
7056        entity: &mut bevy_ecs::system::EntityCommands,
7057        d: EntityDataItem,
7058    ) -> Result<(), UpdateMetadataError> {
7059        match d.index {
7060            0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
7061            _ => {}
7062        }
7063        Ok(())
7064    }
7065}
7066
7067/// The metadata bundle for [Donkey].
7068///
7069/// This type should generally not be used directly.
7070#[derive(Bundle)]
7071pub struct DonkeyMetadataBundle {
7072    _marker: Donkey,
7073    parent: AbstractChestedHorseMetadataBundle,
7074}
7075impl Default for DonkeyMetadataBundle {
7076    fn default() -> Self {
7077        Self {
7078            _marker: Donkey,
7079            parent: Default::default(),
7080        }
7081    }
7082}
7083
7084/// A metadata field for [Llama].
7085#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7086pub struct Strength(pub i32);
7087/// A metadata field for [Llama].
7088#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7089pub struct LlamaVariant(pub i32);
7090/// The marker component for entities of type `minecraft:llama`.
7091///
7092/// # Metadata
7093///
7094/// These are the metadata components that all `Llama` entities are guaranteed
7095/// to have, in addition to the metadata components from parent types:
7096///
7097/// - [Strength]
7098/// - [LlamaVariant]
7099///
7100/// # Parents
7101///
7102/// Entities with `Llama` will also have the following marker components and
7103/// their metadata fields:
7104///
7105/// - [AbstractChestedHorse]
7106/// - [AbstractHorse]
7107/// - [AbstractAnimal]
7108/// - [AbstractAgeable]
7109/// - [AbstractCreature]
7110/// - [AbstractInsentient]
7111/// - [AbstractLiving]
7112/// - [AbstractEntity]
7113///
7114/// # Children
7115///
7116/// - [TraderLlama]
7117#[derive(Component)]
7118pub struct Llama;
7119impl Llama {
7120    fn apply_metadata(
7121        entity: &mut bevy_ecs::system::EntityCommands,
7122        d: EntityDataItem,
7123    ) -> Result<(), UpdateMetadataError> {
7124        match d.index {
7125            0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
7126            20 => {
7127                entity.insert(Strength(d.value.into_int()?));
7128            }
7129            21 => {
7130                entity.insert(LlamaVariant(d.value.into_int()?));
7131            }
7132            _ => {}
7133        }
7134        Ok(())
7135    }
7136}
7137
7138/// The metadata bundle for [Llama].
7139///
7140/// This type should generally not be used directly.
7141#[derive(Bundle)]
7142pub struct LlamaMetadataBundle {
7143    _marker: Llama,
7144    parent: AbstractChestedHorseMetadataBundle,
7145    strength: Strength,
7146    llama_variant: LlamaVariant,
7147}
7148impl Default for LlamaMetadataBundle {
7149    fn default() -> Self {
7150        Self {
7151            _marker: Llama,
7152            parent: Default::default(),
7153            strength: Strength(0),
7154            llama_variant: LlamaVariant(0),
7155        }
7156    }
7157}
7158
7159/// The marker component for entities of type `minecraft:trader_llama`.
7160///
7161/// # Metadata
7162///
7163/// This entity type does not add any additional metadata. It will still have
7164/// metadata from parent types.
7165///
7166/// # Parents
7167///
7168/// Entities with `TraderLlama` will also have the following marker components
7169/// and their metadata fields:
7170///
7171/// - [Llama]
7172/// - [AbstractChestedHorse]
7173/// - [AbstractHorse]
7174/// - [AbstractAnimal]
7175/// - [AbstractAgeable]
7176/// - [AbstractCreature]
7177/// - [AbstractInsentient]
7178/// - [AbstractLiving]
7179/// - [AbstractEntity]
7180///
7181/// # Children
7182///
7183/// This entity type has no children types.
7184#[derive(Component)]
7185pub struct TraderLlama;
7186impl TraderLlama {
7187    fn apply_metadata(
7188        entity: &mut bevy_ecs::system::EntityCommands,
7189        d: EntityDataItem,
7190    ) -> Result<(), UpdateMetadataError> {
7191        match d.index {
7192            0..=21 => Llama::apply_metadata(entity, d)?,
7193            _ => {}
7194        }
7195        Ok(())
7196    }
7197}
7198
7199/// The metadata bundle for [TraderLlama].
7200///
7201/// This type should generally not be used directly.
7202#[derive(Bundle)]
7203pub struct TraderLlamaMetadataBundle {
7204    _marker: TraderLlama,
7205    parent: LlamaMetadataBundle,
7206}
7207impl Default for TraderLlamaMetadataBundle {
7208    fn default() -> Self {
7209        Self {
7210            _marker: TraderLlama,
7211            parent: Default::default(),
7212        }
7213    }
7214}
7215
7216/// The marker component for entities of type `minecraft:mule`.
7217///
7218/// # Metadata
7219///
7220/// This entity type does not add any additional metadata. It will still have
7221/// metadata from parent types.
7222///
7223/// # Parents
7224///
7225/// Entities with `Mule` will also have the following marker components and
7226/// their metadata fields:
7227///
7228/// - [AbstractChestedHorse]
7229/// - [AbstractHorse]
7230/// - [AbstractAnimal]
7231/// - [AbstractAgeable]
7232/// - [AbstractCreature]
7233/// - [AbstractInsentient]
7234/// - [AbstractLiving]
7235/// - [AbstractEntity]
7236///
7237/// # Children
7238///
7239/// This entity type has no children types.
7240#[derive(Component)]
7241pub struct Mule;
7242impl Mule {
7243    fn apply_metadata(
7244        entity: &mut bevy_ecs::system::EntityCommands,
7245        d: EntityDataItem,
7246    ) -> Result<(), UpdateMetadataError> {
7247        match d.index {
7248            0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
7249            _ => {}
7250        }
7251        Ok(())
7252    }
7253}
7254
7255/// The metadata bundle for [Mule].
7256///
7257/// This type should generally not be used directly.
7258#[derive(Bundle)]
7259pub struct MuleMetadataBundle {
7260    _marker: Mule,
7261    parent: AbstractChestedHorseMetadataBundle,
7262}
7263impl Default for MuleMetadataBundle {
7264    fn default() -> Self {
7265        Self {
7266            _marker: Mule,
7267            parent: Default::default(),
7268        }
7269    }
7270}
7271
7272#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
7273/// A metadata field for [AbstractTameable].
7274pub struct Tame(pub bool);
7275#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
7276/// A metadata field for [AbstractTameable].
7277pub struct InSittingPose(pub bool);
7278/// A metadata field for [AbstractTameable].
7279#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7280pub struct Owneruuid(pub Option<Uuid>);
7281/// An abstract entity marker component.
7282///
7283/// # Metadata
7284///
7285/// These are the metadata components that all `AbstractTameable` entities are
7286/// guaranteed to have, in addition to the metadata components from parent
7287/// types:
7288///
7289/// - [Tame]
7290/// - [InSittingPose]
7291/// - [Owneruuid]
7292///
7293/// # Parents
7294///
7295/// Entities with `AbstractTameable` will also have the following marker
7296/// components and their metadata fields:
7297///
7298/// - [AbstractAnimal]
7299/// - [AbstractAgeable]
7300/// - [AbstractCreature]
7301/// - [AbstractInsentient]
7302/// - [AbstractLiving]
7303/// - [AbstractEntity]
7304///
7305/// # Children
7306///
7307/// - [Cat]
7308/// - [Parrot]
7309/// - [Wolf]
7310/// - [AbstractNautilus]
7311///   - [Nautilus]
7312///   - [ZombieNautilus]
7313#[derive(Component)]
7314pub struct AbstractTameable;
7315impl AbstractTameable {
7316    fn apply_metadata(
7317        entity: &mut bevy_ecs::system::EntityCommands,
7318        d: EntityDataItem,
7319    ) -> Result<(), UpdateMetadataError> {
7320        match d.index {
7321            0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
7322            18 => {
7323                let bitfield = d.value.into_byte()?;
7324                entity.insert(Tame(bitfield & 0x4 != 0));
7325                entity.insert(InSittingPose(bitfield & 0x1 != 0));
7326            }
7327            19 => {
7328                entity.insert(Owneruuid(d.value.into_optional_living_entity_reference()?));
7329            }
7330            _ => {}
7331        }
7332        Ok(())
7333    }
7334}
7335
7336/// The metadata bundle for [AbstractTameable].
7337///
7338/// This type should generally not be used directly.
7339#[derive(Bundle)]
7340pub struct AbstractTameableMetadataBundle {
7341    _marker: AbstractTameable,
7342    parent: AbstractAnimalMetadataBundle,
7343    tame: Tame,
7344    in_sitting_pose: InSittingPose,
7345    owneruuid: Owneruuid,
7346}
7347impl Default for AbstractTameableMetadataBundle {
7348    fn default() -> Self {
7349        Self {
7350            _marker: AbstractTameable,
7351            parent: Default::default(),
7352            tame: Tame(false),
7353            in_sitting_pose: InSittingPose(false),
7354            owneruuid: Owneruuid(None),
7355        }
7356    }
7357}
7358
7359/// A metadata field for [Cat].
7360#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7361pub struct CatVariant(pub azalea_registry::data::CatVariant);
7362/// A metadata field for [Cat].
7363#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7364pub struct IsLying(pub bool);
7365/// A metadata field for [Cat].
7366#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7367pub struct RelaxStateOne(pub bool);
7368/// A metadata field for [Cat].
7369#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7370pub struct CatCollarColor(pub i32);
7371/// A metadata field for [Cat].
7372#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7373pub struct CatSoundVariant(pub azalea_registry::data::CatSoundVariant);
7374/// The marker component for entities of type `minecraft:cat`.
7375///
7376/// # Metadata
7377///
7378/// These are the metadata components that all `Cat` entities are guaranteed to
7379/// have, in addition to the metadata components from parent types:
7380///
7381/// - [CatVariant]
7382/// - [IsLying]
7383/// - [RelaxStateOne]
7384/// - [CatCollarColor]
7385/// - [CatSoundVariant]
7386///
7387/// # Parents
7388///
7389/// Entities with `Cat` will also have the following marker components and their
7390/// metadata fields:
7391///
7392/// - [AbstractTameable]
7393/// - [AbstractAnimal]
7394/// - [AbstractAgeable]
7395/// - [AbstractCreature]
7396/// - [AbstractInsentient]
7397/// - [AbstractLiving]
7398/// - [AbstractEntity]
7399///
7400/// # Children
7401///
7402/// This entity type has no children types.
7403#[derive(Component)]
7404pub struct Cat;
7405impl Cat {
7406    fn apply_metadata(
7407        entity: &mut bevy_ecs::system::EntityCommands,
7408        d: EntityDataItem,
7409    ) -> Result<(), UpdateMetadataError> {
7410        match d.index {
7411            0..=19 => AbstractTameable::apply_metadata(entity, d)?,
7412            20 => {
7413                entity.insert(CatVariant(d.value.into_cat_variant()?));
7414            }
7415            21 => {
7416                entity.insert(IsLying(d.value.into_boolean()?));
7417            }
7418            22 => {
7419                entity.insert(RelaxStateOne(d.value.into_boolean()?));
7420            }
7421            23 => {
7422                entity.insert(CatCollarColor(d.value.into_int()?));
7423            }
7424            24 => {
7425                entity.insert(CatSoundVariant(d.value.into_cat_sound_variant()?));
7426            }
7427            _ => {}
7428        }
7429        Ok(())
7430    }
7431}
7432
7433/// The metadata bundle for [Cat].
7434///
7435/// This type should generally not be used directly.
7436#[derive(Bundle)]
7437pub struct CatMetadataBundle {
7438    _marker: Cat,
7439    parent: AbstractTameableMetadataBundle,
7440    cat_variant: CatVariant,
7441    is_lying: IsLying,
7442    relax_state_one: RelaxStateOne,
7443    cat_collar_color: CatCollarColor,
7444    cat_sound_variant: CatSoundVariant,
7445}
7446impl Default for CatMetadataBundle {
7447    fn default() -> Self {
7448        Self {
7449            _marker: Cat,
7450            parent: Default::default(),
7451            cat_variant: CatVariant(azalea_registry::data::CatVariant::new_raw(0)),
7452            is_lying: IsLying(false),
7453            relax_state_one: RelaxStateOne(false),
7454            cat_collar_color: CatCollarColor(Default::default()),
7455            cat_sound_variant: CatSoundVariant(azalea_registry::data::CatSoundVariant::new_raw(0)),
7456        }
7457    }
7458}
7459
7460/// A metadata field for [Parrot].
7461#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7462pub struct ParrotVariant(pub i32);
7463/// The marker component for entities of type `minecraft:parrot`.
7464///
7465/// # Metadata
7466///
7467/// These are the metadata components that all `Parrot` entities are guaranteed
7468/// to have, in addition to the metadata components from parent types:
7469///
7470/// - [ParrotVariant]
7471///
7472/// # Parents
7473///
7474/// Entities with `Parrot` will also have the following marker components and
7475/// their metadata fields:
7476///
7477/// - [AbstractTameable]
7478/// - [AbstractAnimal]
7479/// - [AbstractAgeable]
7480/// - [AbstractCreature]
7481/// - [AbstractInsentient]
7482/// - [AbstractLiving]
7483/// - [AbstractEntity]
7484///
7485/// # Children
7486///
7487/// This entity type has no children types.
7488#[derive(Component)]
7489pub struct Parrot;
7490impl Parrot {
7491    fn apply_metadata(
7492        entity: &mut bevy_ecs::system::EntityCommands,
7493        d: EntityDataItem,
7494    ) -> Result<(), UpdateMetadataError> {
7495        match d.index {
7496            0..=19 => AbstractTameable::apply_metadata(entity, d)?,
7497            20 => {
7498                entity.insert(ParrotVariant(d.value.into_int()?));
7499            }
7500            _ => {}
7501        }
7502        Ok(())
7503    }
7504}
7505
7506/// The metadata bundle for [Parrot].
7507///
7508/// This type should generally not be used directly.
7509#[derive(Bundle)]
7510pub struct ParrotMetadataBundle {
7511    _marker: Parrot,
7512    parent: AbstractTameableMetadataBundle,
7513    parrot_variant: ParrotVariant,
7514}
7515impl Default for ParrotMetadataBundle {
7516    fn default() -> Self {
7517        Self {
7518            _marker: Parrot,
7519            parent: Default::default(),
7520            parrot_variant: ParrotVariant(Default::default()),
7521        }
7522    }
7523}
7524
7525/// A metadata field for [Wolf].
7526#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7527pub struct WolfInterested(pub bool);
7528/// A metadata field for [Wolf].
7529#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7530pub struct WolfCollarColor(pub i32);
7531/// A metadata field for [Wolf].
7532#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7533pub struct WolfAngerEndTime(pub i64);
7534/// A metadata field for [Wolf].
7535#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7536pub struct WolfVariant(pub azalea_registry::data::WolfVariant);
7537/// A metadata field for [Wolf].
7538#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7539pub struct WolfSoundVariant(pub azalea_registry::data::WolfSoundVariant);
7540/// The marker component for entities of type `minecraft:wolf`.
7541///
7542/// # Metadata
7543///
7544/// These are the metadata components that all `Wolf` entities are guaranteed to
7545/// have, in addition to the metadata components from parent types:
7546///
7547/// - [WolfInterested]
7548/// - [WolfCollarColor]
7549/// - [WolfAngerEndTime]
7550/// - [WolfVariant]
7551/// - [WolfSoundVariant]
7552///
7553/// # Parents
7554///
7555/// Entities with `Wolf` will also have the following marker components and
7556/// their metadata fields:
7557///
7558/// - [AbstractTameable]
7559/// - [AbstractAnimal]
7560/// - [AbstractAgeable]
7561/// - [AbstractCreature]
7562/// - [AbstractInsentient]
7563/// - [AbstractLiving]
7564/// - [AbstractEntity]
7565///
7566/// # Children
7567///
7568/// This entity type has no children types.
7569#[derive(Component)]
7570pub struct Wolf;
7571impl Wolf {
7572    fn apply_metadata(
7573        entity: &mut bevy_ecs::system::EntityCommands,
7574        d: EntityDataItem,
7575    ) -> Result<(), UpdateMetadataError> {
7576        match d.index {
7577            0..=19 => AbstractTameable::apply_metadata(entity, d)?,
7578            20 => {
7579                entity.insert(WolfInterested(d.value.into_boolean()?));
7580            }
7581            21 => {
7582                entity.insert(WolfCollarColor(d.value.into_int()?));
7583            }
7584            22 => {
7585                entity.insert(WolfAngerEndTime(d.value.into_long()?));
7586            }
7587            23 => {
7588                entity.insert(WolfVariant(d.value.into_wolf_variant()?));
7589            }
7590            24 => {
7591                entity.insert(WolfSoundVariant(d.value.into_wolf_sound_variant()?));
7592            }
7593            _ => {}
7594        }
7595        Ok(())
7596    }
7597}
7598
7599/// The metadata bundle for [Wolf].
7600///
7601/// This type should generally not be used directly.
7602#[derive(Bundle)]
7603pub struct WolfMetadataBundle {
7604    _marker: Wolf,
7605    parent: AbstractTameableMetadataBundle,
7606    wolf_interested: WolfInterested,
7607    wolf_collar_color: WolfCollarColor,
7608    wolf_anger_end_time: WolfAngerEndTime,
7609    wolf_variant: WolfVariant,
7610    wolf_sound_variant: WolfSoundVariant,
7611}
7612impl Default for WolfMetadataBundle {
7613    fn default() -> Self {
7614        Self {
7615            _marker: Wolf,
7616            parent: Default::default(),
7617            wolf_interested: WolfInterested(false),
7618            wolf_collar_color: WolfCollarColor(Default::default()),
7619            wolf_anger_end_time: WolfAngerEndTime(-1),
7620            wolf_variant: WolfVariant(azalea_registry::data::WolfVariant::new_raw(0)),
7621            wolf_sound_variant: WolfSoundVariant(azalea_registry::data::WolfSoundVariant::new_raw(
7622                0,
7623            )),
7624        }
7625    }
7626}
7627
7628/// A metadata field for [AbstractNautilus].
7629#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7630pub struct AbstractNautilusDash(pub bool);
7631/// An abstract entity marker component.
7632///
7633/// # Metadata
7634///
7635/// These are the metadata components that all `AbstractNautilus` entities are
7636/// guaranteed to have, in addition to the metadata components from parent
7637/// types:
7638///
7639/// - [AbstractNautilusDash]
7640///
7641/// # Parents
7642///
7643/// Entities with `AbstractNautilus` will also have the following marker
7644/// components and their metadata fields:
7645///
7646/// - [AbstractTameable]
7647/// - [AbstractAnimal]
7648/// - [AbstractAgeable]
7649/// - [AbstractCreature]
7650/// - [AbstractInsentient]
7651/// - [AbstractLiving]
7652/// - [AbstractEntity]
7653///
7654/// # Children
7655///
7656/// - [Nautilus]
7657/// - [ZombieNautilus]
7658#[derive(Component)]
7659pub struct AbstractNautilus;
7660impl AbstractNautilus {
7661    fn apply_metadata(
7662        entity: &mut bevy_ecs::system::EntityCommands,
7663        d: EntityDataItem,
7664    ) -> Result<(), UpdateMetadataError> {
7665        match d.index {
7666            0..=19 => AbstractTameable::apply_metadata(entity, d)?,
7667            20 => {
7668                entity.insert(AbstractNautilusDash(d.value.into_boolean()?));
7669            }
7670            _ => {}
7671        }
7672        Ok(())
7673    }
7674}
7675
7676/// The metadata bundle for [AbstractNautilus].
7677///
7678/// This type should generally not be used directly.
7679#[derive(Bundle)]
7680pub struct AbstractNautilusMetadataBundle {
7681    _marker: AbstractNautilus,
7682    parent: AbstractTameableMetadataBundle,
7683    abstract_nautilus_dash: AbstractNautilusDash,
7684}
7685impl Default for AbstractNautilusMetadataBundle {
7686    fn default() -> Self {
7687        Self {
7688            _marker: AbstractNautilus,
7689            parent: Default::default(),
7690            abstract_nautilus_dash: AbstractNautilusDash(false),
7691        }
7692    }
7693}
7694
7695/// The marker component for entities of type `minecraft:nautilus`.
7696///
7697/// # Metadata
7698///
7699/// This entity type does not add any additional metadata. It will still have
7700/// metadata from parent types.
7701///
7702/// # Parents
7703///
7704/// Entities with `Nautilus` will also have the following marker components and
7705/// their metadata fields:
7706///
7707/// - [AbstractNautilus]
7708/// - [AbstractTameable]
7709/// - [AbstractAnimal]
7710/// - [AbstractAgeable]
7711/// - [AbstractCreature]
7712/// - [AbstractInsentient]
7713/// - [AbstractLiving]
7714/// - [AbstractEntity]
7715///
7716/// # Children
7717///
7718/// This entity type has no children types.
7719#[derive(Component)]
7720pub struct Nautilus;
7721impl Nautilus {
7722    fn apply_metadata(
7723        entity: &mut bevy_ecs::system::EntityCommands,
7724        d: EntityDataItem,
7725    ) -> Result<(), UpdateMetadataError> {
7726        match d.index {
7727            0..=20 => AbstractNautilus::apply_metadata(entity, d)?,
7728            _ => {}
7729        }
7730        Ok(())
7731    }
7732}
7733
7734/// The metadata bundle for [Nautilus].
7735///
7736/// This type should generally not be used directly.
7737#[derive(Bundle)]
7738pub struct NautilusMetadataBundle {
7739    _marker: Nautilus,
7740    parent: AbstractNautilusMetadataBundle,
7741}
7742impl Default for NautilusMetadataBundle {
7743    fn default() -> Self {
7744        Self {
7745            _marker: Nautilus,
7746            parent: Default::default(),
7747        }
7748    }
7749}
7750
7751/// A metadata field for [ZombieNautilus].
7752#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7753pub struct ZombieNautilusVariant(pub azalea_registry::data::ZombieNautilusVariant);
7754/// The marker component for entities of type `minecraft:zombie_nautilus`.
7755///
7756/// # Metadata
7757///
7758/// These are the metadata components that all `ZombieNautilus` entities are
7759/// guaranteed to have, in addition to the metadata components from parent
7760/// types:
7761///
7762/// - [ZombieNautilusVariant]
7763///
7764/// # Parents
7765///
7766/// Entities with `ZombieNautilus` will also have the following marker
7767/// components and their metadata fields:
7768///
7769/// - [AbstractNautilus]
7770/// - [AbstractTameable]
7771/// - [AbstractAnimal]
7772/// - [AbstractAgeable]
7773/// - [AbstractCreature]
7774/// - [AbstractInsentient]
7775/// - [AbstractLiving]
7776/// - [AbstractEntity]
7777///
7778/// # Children
7779///
7780/// This entity type has no children types.
7781#[derive(Component)]
7782pub struct ZombieNautilus;
7783impl ZombieNautilus {
7784    fn apply_metadata(
7785        entity: &mut bevy_ecs::system::EntityCommands,
7786        d: EntityDataItem,
7787    ) -> Result<(), UpdateMetadataError> {
7788        match d.index {
7789            0..=20 => AbstractNautilus::apply_metadata(entity, d)?,
7790            21 => {
7791                entity.insert(ZombieNautilusVariant(
7792                    d.value.into_zombie_nautilus_variant()?,
7793                ));
7794            }
7795            _ => {}
7796        }
7797        Ok(())
7798    }
7799}
7800
7801/// The metadata bundle for [ZombieNautilus].
7802///
7803/// This type should generally not be used directly.
7804#[derive(Bundle)]
7805pub struct ZombieNautilusMetadataBundle {
7806    _marker: ZombieNautilus,
7807    parent: AbstractNautilusMetadataBundle,
7808    zombie_nautilus_variant: ZombieNautilusVariant,
7809}
7810impl Default for ZombieNautilusMetadataBundle {
7811    fn default() -> Self {
7812        Self {
7813            _marker: ZombieNautilus,
7814            parent: Default::default(),
7815            zombie_nautilus_variant: ZombieNautilusVariant(
7816                azalea_registry::data::ZombieNautilusVariant::new_raw(0),
7817            ),
7818        }
7819    }
7820}
7821
7822/// A metadata field for [AbstractVillager].
7823#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7824pub struct AbstractVillagerUnhappyCounter(pub i32);
7825/// An abstract entity marker component.
7826///
7827/// # Metadata
7828///
7829/// These are the metadata components that all `AbstractVillager` entities are
7830/// guaranteed to have, in addition to the metadata components from parent
7831/// types:
7832///
7833/// - [AbstractVillagerUnhappyCounter]
7834///
7835/// # Parents
7836///
7837/// Entities with `AbstractVillager` will also have the following marker
7838/// components and their metadata fields:
7839///
7840/// - [AbstractAgeable]
7841/// - [AbstractCreature]
7842/// - [AbstractInsentient]
7843/// - [AbstractLiving]
7844/// - [AbstractEntity]
7845///
7846/// # Children
7847///
7848/// - [Villager]
7849/// - [WanderingTrader]
7850#[derive(Component)]
7851pub struct AbstractVillager;
7852impl AbstractVillager {
7853    fn apply_metadata(
7854        entity: &mut bevy_ecs::system::EntityCommands,
7855        d: EntityDataItem,
7856    ) -> Result<(), UpdateMetadataError> {
7857        match d.index {
7858            0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
7859            18 => {
7860                entity.insert(AbstractVillagerUnhappyCounter(d.value.into_int()?));
7861            }
7862            _ => {}
7863        }
7864        Ok(())
7865    }
7866}
7867
7868/// The metadata bundle for [AbstractVillager].
7869///
7870/// This type should generally not be used directly.
7871#[derive(Bundle)]
7872pub struct AbstractVillagerMetadataBundle {
7873    _marker: AbstractVillager,
7874    parent: AbstractAgeableMetadataBundle,
7875    abstract_villager_unhappy_counter: AbstractVillagerUnhappyCounter,
7876}
7877impl Default for AbstractVillagerMetadataBundle {
7878    fn default() -> Self {
7879        Self {
7880            _marker: AbstractVillager,
7881            parent: Default::default(),
7882            abstract_villager_unhappy_counter: AbstractVillagerUnhappyCounter(0),
7883        }
7884    }
7885}
7886
7887/// A metadata field for [Villager].
7888#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7889pub struct VillagerVillagerData(pub VillagerData);
7890/// A metadata field for [Villager].
7891#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
7892pub struct VillagerVillagerDataFinalized(pub bool);
7893/// The marker component for entities of type `minecraft:villager`.
7894///
7895/// # Metadata
7896///
7897/// These are the metadata components that all `Villager` entities are
7898/// guaranteed to have, in addition to the metadata components from parent
7899/// types:
7900///
7901/// - [VillagerVillagerData]
7902/// - [VillagerVillagerDataFinalized]
7903///
7904/// # Parents
7905///
7906/// Entities with `Villager` will also have the following marker components and
7907/// their metadata fields:
7908///
7909/// - [AbstractVillager]
7910/// - [AbstractAgeable]
7911/// - [AbstractCreature]
7912/// - [AbstractInsentient]
7913/// - [AbstractLiving]
7914/// - [AbstractEntity]
7915///
7916/// # Children
7917///
7918/// This entity type has no children types.
7919#[derive(Component)]
7920pub struct Villager;
7921impl Villager {
7922    fn apply_metadata(
7923        entity: &mut bevy_ecs::system::EntityCommands,
7924        d: EntityDataItem,
7925    ) -> Result<(), UpdateMetadataError> {
7926        match d.index {
7927            0..=18 => AbstractVillager::apply_metadata(entity, d)?,
7928            19 => {
7929                entity.insert(VillagerVillagerData(d.value.into_villager_data()?));
7930            }
7931            20 => {
7932                entity.insert(VillagerVillagerDataFinalized(d.value.into_boolean()?));
7933            }
7934            _ => {}
7935        }
7936        Ok(())
7937    }
7938}
7939
7940/// The metadata bundle for [Villager].
7941///
7942/// This type should generally not be used directly.
7943#[derive(Bundle)]
7944pub struct VillagerMetadataBundle {
7945    _marker: Villager,
7946    parent: AbstractVillagerMetadataBundle,
7947    villager_villager_data: VillagerVillagerData,
7948    villager_villager_data_finalized: VillagerVillagerDataFinalized,
7949}
7950impl Default for VillagerMetadataBundle {
7951    fn default() -> Self {
7952        Self {
7953            _marker: Villager,
7954            parent: Default::default(),
7955            villager_villager_data: VillagerVillagerData(VillagerData {
7956                kind: azalea_registry::builtin::VillagerKind::Plains,
7957                profession: azalea_registry::builtin::VillagerProfession::None,
7958                level: 0,
7959            }),
7960            villager_villager_data_finalized: VillagerVillagerDataFinalized(false),
7961        }
7962    }
7963}
7964
7965/// The marker component for entities of type `minecraft:wandering_trader`.
7966///
7967/// # Metadata
7968///
7969/// This entity type does not add any additional metadata. It will still have
7970/// metadata from parent types.
7971///
7972/// # Parents
7973///
7974/// Entities with `WanderingTrader` will also have the following marker
7975/// components and their metadata fields:
7976///
7977/// - [AbstractVillager]
7978/// - [AbstractAgeable]
7979/// - [AbstractCreature]
7980/// - [AbstractInsentient]
7981/// - [AbstractLiving]
7982/// - [AbstractEntity]
7983///
7984/// # Children
7985///
7986/// This entity type has no children types.
7987#[derive(Component)]
7988pub struct WanderingTrader;
7989impl WanderingTrader {
7990    fn apply_metadata(
7991        entity: &mut bevy_ecs::system::EntityCommands,
7992        d: EntityDataItem,
7993    ) -> Result<(), UpdateMetadataError> {
7994        match d.index {
7995            0..=18 => AbstractVillager::apply_metadata(entity, d)?,
7996            _ => {}
7997        }
7998        Ok(())
7999    }
8000}
8001
8002/// The metadata bundle for [WanderingTrader].
8003///
8004/// This type should generally not be used directly.
8005#[derive(Bundle)]
8006pub struct WanderingTraderMetadataBundle {
8007    _marker: WanderingTrader,
8008    parent: AbstractVillagerMetadataBundle,
8009}
8010impl Default for WanderingTraderMetadataBundle {
8011    fn default() -> Self {
8012        Self {
8013            _marker: WanderingTrader,
8014            parent: Default::default(),
8015        }
8016    }
8017}
8018
8019/// A metadata field for [AbstractFish].
8020#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8021pub struct AbstractFishFromBucket(pub bool);
8022/// An abstract entity marker component.
8023///
8024/// # Metadata
8025///
8026/// These are the metadata components that all `AbstractFish` entities are
8027/// guaranteed to have, in addition to the metadata components from parent
8028/// types:
8029///
8030/// - [AbstractFishFromBucket]
8031///
8032/// # Parents
8033///
8034/// Entities with `AbstractFish` will also have the following marker components
8035/// and their metadata fields:
8036///
8037/// - [AbstractCreature]
8038/// - [AbstractInsentient]
8039/// - [AbstractLiving]
8040/// - [AbstractEntity]
8041///
8042/// # Children
8043///
8044/// - [Cod]
8045/// - [Salmon]
8046/// - [TropicalFish]
8047#[derive(Component)]
8048pub struct AbstractFish;
8049impl AbstractFish {
8050    fn apply_metadata(
8051        entity: &mut bevy_ecs::system::EntityCommands,
8052        d: EntityDataItem,
8053    ) -> Result<(), UpdateMetadataError> {
8054        match d.index {
8055            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
8056            16 => {
8057                entity.insert(AbstractFishFromBucket(d.value.into_boolean()?));
8058            }
8059            _ => {}
8060        }
8061        Ok(())
8062    }
8063}
8064
8065/// The metadata bundle for [AbstractFish].
8066///
8067/// This type should generally not be used directly.
8068#[derive(Bundle)]
8069pub struct AbstractFishMetadataBundle {
8070    _marker: AbstractFish,
8071    parent: AbstractCreatureMetadataBundle,
8072    abstract_fish_from_bucket: AbstractFishFromBucket,
8073}
8074impl Default for AbstractFishMetadataBundle {
8075    fn default() -> Self {
8076        Self {
8077            _marker: AbstractFish,
8078            parent: Default::default(),
8079            abstract_fish_from_bucket: AbstractFishFromBucket(false),
8080        }
8081    }
8082}
8083
8084/// The marker component for entities of type `minecraft:cod`.
8085///
8086/// # Metadata
8087///
8088/// This entity type does not add any additional metadata. It will still have
8089/// metadata from parent types.
8090///
8091/// # Parents
8092///
8093/// Entities with `Cod` will also have the following marker components and their
8094/// metadata fields:
8095///
8096/// - [AbstractFish]
8097/// - [AbstractCreature]
8098/// - [AbstractInsentient]
8099/// - [AbstractLiving]
8100/// - [AbstractEntity]
8101///
8102/// # Children
8103///
8104/// This entity type has no children types.
8105#[derive(Component)]
8106pub struct Cod;
8107impl Cod {
8108    fn apply_metadata(
8109        entity: &mut bevy_ecs::system::EntityCommands,
8110        d: EntityDataItem,
8111    ) -> Result<(), UpdateMetadataError> {
8112        match d.index {
8113            0..=16 => AbstractFish::apply_metadata(entity, d)?,
8114            _ => {}
8115        }
8116        Ok(())
8117    }
8118}
8119
8120/// The metadata bundle for [Cod].
8121///
8122/// This type should generally not be used directly.
8123#[derive(Bundle)]
8124pub struct CodMetadataBundle {
8125    _marker: Cod,
8126    parent: AbstractFishMetadataBundle,
8127}
8128impl Default for CodMetadataBundle {
8129    fn default() -> Self {
8130        Self {
8131            _marker: Cod,
8132            parent: Default::default(),
8133        }
8134    }
8135}
8136
8137/// A metadata field for [Salmon].
8138#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8139pub struct SalmonKind(pub i32);
8140/// The marker component for entities of type `minecraft:salmon`.
8141///
8142/// # Metadata
8143///
8144/// These are the metadata components that all `Salmon` entities are guaranteed
8145/// to have, in addition to the metadata components from parent types:
8146///
8147/// - [SalmonKind]
8148///
8149/// # Parents
8150///
8151/// Entities with `Salmon` will also have the following marker components and
8152/// their metadata fields:
8153///
8154/// - [AbstractFish]
8155/// - [AbstractCreature]
8156/// - [AbstractInsentient]
8157/// - [AbstractLiving]
8158/// - [AbstractEntity]
8159///
8160/// # Children
8161///
8162/// This entity type has no children types.
8163#[derive(Component)]
8164pub struct Salmon;
8165impl Salmon {
8166    fn apply_metadata(
8167        entity: &mut bevy_ecs::system::EntityCommands,
8168        d: EntityDataItem,
8169    ) -> Result<(), UpdateMetadataError> {
8170        match d.index {
8171            0..=16 => AbstractFish::apply_metadata(entity, d)?,
8172            17 => {
8173                entity.insert(SalmonKind(d.value.into_int()?));
8174            }
8175            _ => {}
8176        }
8177        Ok(())
8178    }
8179}
8180
8181/// The metadata bundle for [Salmon].
8182///
8183/// This type should generally not be used directly.
8184#[derive(Bundle)]
8185pub struct SalmonMetadataBundle {
8186    _marker: Salmon,
8187    parent: AbstractFishMetadataBundle,
8188    salmon_kind: SalmonKind,
8189}
8190impl Default for SalmonMetadataBundle {
8191    fn default() -> Self {
8192        Self {
8193            _marker: Salmon,
8194            parent: Default::default(),
8195            salmon_kind: SalmonKind(Default::default()),
8196        }
8197    }
8198}
8199
8200/// A metadata field for [TropicalFish].
8201#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8202pub struct TropicalFishTypeVariant(pub i32);
8203/// The marker component for entities of type `minecraft:tropical_fish`.
8204///
8205/// # Metadata
8206///
8207/// These are the metadata components that all `TropicalFish` entities are
8208/// guaranteed to have, in addition to the metadata components from parent
8209/// types:
8210///
8211/// - [TropicalFishTypeVariant]
8212///
8213/// # Parents
8214///
8215/// Entities with `TropicalFish` will also have the following marker components
8216/// and their metadata fields:
8217///
8218/// - [AbstractFish]
8219/// - [AbstractCreature]
8220/// - [AbstractInsentient]
8221/// - [AbstractLiving]
8222/// - [AbstractEntity]
8223///
8224/// # Children
8225///
8226/// This entity type has no children types.
8227#[derive(Component)]
8228pub struct TropicalFish;
8229impl TropicalFish {
8230    fn apply_metadata(
8231        entity: &mut bevy_ecs::system::EntityCommands,
8232        d: EntityDataItem,
8233    ) -> Result<(), UpdateMetadataError> {
8234        match d.index {
8235            0..=16 => AbstractFish::apply_metadata(entity, d)?,
8236            17 => {
8237                entity.insert(TropicalFishTypeVariant(d.value.into_int()?));
8238            }
8239            _ => {}
8240        }
8241        Ok(())
8242    }
8243}
8244
8245/// The metadata bundle for [TropicalFish].
8246///
8247/// This type should generally not be used directly.
8248#[derive(Bundle)]
8249pub struct TropicalFishMetadataBundle {
8250    _marker: TropicalFish,
8251    parent: AbstractFishMetadataBundle,
8252    tropical_fish_type_variant: TropicalFishTypeVariant,
8253}
8254impl Default for TropicalFishMetadataBundle {
8255    fn default() -> Self {
8256        Self {
8257            _marker: TropicalFish,
8258            parent: Default::default(),
8259            tropical_fish_type_variant: TropicalFishTypeVariant(Default::default()),
8260        }
8261    }
8262}
8263
8264/// An abstract entity marker component.
8265///
8266/// # Metadata
8267///
8268/// This entity type does not add any additional metadata. It will still have
8269/// metadata from parent types.
8270///
8271/// # Parents
8272///
8273/// Entities with `AbstractMonster` will also have the following marker
8274/// components and their metadata fields:
8275///
8276/// - [AbstractCreature]
8277/// - [AbstractInsentient]
8278/// - [AbstractLiving]
8279/// - [AbstractEntity]
8280///
8281/// # Children
8282///
8283/// - [Blaze]
8284/// - [Bogged]
8285/// - [Breeze]
8286/// - [Creaking]
8287/// - [Creeper]
8288/// - [Enderman]
8289/// - [Endermite]
8290/// - [Giant]
8291/// - [Guardian]
8292///   - [ElderGuardian]
8293/// - [Parched]
8294/// - [Silverfish]
8295/// - [Skeleton]
8296/// - [Spider]
8297///   - [CaveSpider]
8298/// - [Stray]
8299/// - [Vex]
8300/// - [Warden]
8301/// - [Wither]
8302/// - [WitherSkeleton]
8303/// - [Zoglin]
8304/// - [Zombie]
8305///   - [Drowned]
8306///   - [Husk]
8307///   - [ZombieVillager]
8308///   - [ZombifiedPiglin]
8309/// - [AbstractPiglin]
8310///   - [Piglin]
8311///   - [PiglinBrute]
8312/// - [AbstractRaider]
8313///   - [Pillager]
8314///   - [Ravager]
8315///   - [Vindicator]
8316///   - [Witch]
8317///   - [AbstractSpellcasterIllager]
8318///     - [Evoker]
8319///     - [Illusioner]
8320#[derive(Component)]
8321pub struct AbstractMonster;
8322impl AbstractMonster {
8323    fn apply_metadata(
8324        entity: &mut bevy_ecs::system::EntityCommands,
8325        d: EntityDataItem,
8326    ) -> Result<(), UpdateMetadataError> {
8327        match d.index {
8328            0..=15 => AbstractCreature::apply_metadata(entity, d)?,
8329            _ => {}
8330        }
8331        Ok(())
8332    }
8333}
8334
8335/// The metadata bundle for [AbstractMonster].
8336///
8337/// This type should generally not be used directly.
8338#[derive(Bundle)]
8339pub struct AbstractMonsterMetadataBundle {
8340    _marker: AbstractMonster,
8341    parent: AbstractCreatureMetadataBundle,
8342}
8343impl Default for AbstractMonsterMetadataBundle {
8344    fn default() -> Self {
8345        Self {
8346            _marker: AbstractMonster,
8347            parent: Default::default(),
8348        }
8349    }
8350}
8351
8352#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
8353/// A metadata field for [Blaze].
8354pub struct Charged(pub bool);
8355/// The marker component for entities of type `minecraft:blaze`.
8356///
8357/// # Metadata
8358///
8359/// These are the metadata components that all `Blaze` entities are guaranteed
8360/// to have, in addition to the metadata components from parent types:
8361///
8362/// - [Charged]
8363///
8364/// # Parents
8365///
8366/// Entities with `Blaze` will also have the following marker components and
8367/// their metadata fields:
8368///
8369/// - [AbstractMonster]
8370/// - [AbstractCreature]
8371/// - [AbstractInsentient]
8372/// - [AbstractLiving]
8373/// - [AbstractEntity]
8374///
8375/// # Children
8376///
8377/// This entity type has no children types.
8378#[derive(Component)]
8379pub struct Blaze;
8380impl Blaze {
8381    fn apply_metadata(
8382        entity: &mut bevy_ecs::system::EntityCommands,
8383        d: EntityDataItem,
8384    ) -> Result<(), UpdateMetadataError> {
8385        match d.index {
8386            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8387            16 => {
8388                let bitfield = d.value.into_byte()?;
8389                entity.insert(Charged(bitfield & 0x1 != 0));
8390            }
8391            _ => {}
8392        }
8393        Ok(())
8394    }
8395}
8396
8397/// The metadata bundle for [Blaze].
8398///
8399/// This type should generally not be used directly.
8400#[derive(Bundle)]
8401pub struct BlazeMetadataBundle {
8402    _marker: Blaze,
8403    parent: AbstractMonsterMetadataBundle,
8404    charged: Charged,
8405}
8406impl Default for BlazeMetadataBundle {
8407    fn default() -> Self {
8408        Self {
8409            _marker: Blaze,
8410            parent: Default::default(),
8411            charged: Charged(false),
8412        }
8413    }
8414}
8415
8416/// A metadata field for [Bogged].
8417#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8418pub struct BoggedSheared(pub bool);
8419/// The marker component for entities of type `minecraft:bogged`.
8420///
8421/// # Metadata
8422///
8423/// These are the metadata components that all `Bogged` entities are guaranteed
8424/// to have, in addition to the metadata components from parent types:
8425///
8426/// - [BoggedSheared]
8427///
8428/// # Parents
8429///
8430/// Entities with `Bogged` will also have the following marker components and
8431/// their metadata fields:
8432///
8433/// - [AbstractMonster]
8434/// - [AbstractCreature]
8435/// - [AbstractInsentient]
8436/// - [AbstractLiving]
8437/// - [AbstractEntity]
8438///
8439/// # Children
8440///
8441/// This entity type has no children types.
8442#[derive(Component)]
8443pub struct Bogged;
8444impl Bogged {
8445    fn apply_metadata(
8446        entity: &mut bevy_ecs::system::EntityCommands,
8447        d: EntityDataItem,
8448    ) -> Result<(), UpdateMetadataError> {
8449        match d.index {
8450            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8451            16 => {
8452                entity.insert(BoggedSheared(d.value.into_boolean()?));
8453            }
8454            _ => {}
8455        }
8456        Ok(())
8457    }
8458}
8459
8460/// The metadata bundle for [Bogged].
8461///
8462/// This type should generally not be used directly.
8463#[derive(Bundle)]
8464pub struct BoggedMetadataBundle {
8465    _marker: Bogged,
8466    parent: AbstractMonsterMetadataBundle,
8467    bogged_sheared: BoggedSheared,
8468}
8469impl Default for BoggedMetadataBundle {
8470    fn default() -> Self {
8471        Self {
8472            _marker: Bogged,
8473            parent: Default::default(),
8474            bogged_sheared: BoggedSheared(false),
8475        }
8476    }
8477}
8478
8479/// The marker component for entities of type `minecraft:breeze`.
8480///
8481/// # Metadata
8482///
8483/// This entity type does not add any additional metadata. It will still have
8484/// metadata from parent types.
8485///
8486/// # Parents
8487///
8488/// Entities with `Breeze` will also have the following marker components and
8489/// their metadata fields:
8490///
8491/// - [AbstractMonster]
8492/// - [AbstractCreature]
8493/// - [AbstractInsentient]
8494/// - [AbstractLiving]
8495/// - [AbstractEntity]
8496///
8497/// # Children
8498///
8499/// This entity type has no children types.
8500#[derive(Component)]
8501pub struct Breeze;
8502impl Breeze {
8503    fn apply_metadata(
8504        entity: &mut bevy_ecs::system::EntityCommands,
8505        d: EntityDataItem,
8506    ) -> Result<(), UpdateMetadataError> {
8507        match d.index {
8508            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8509            _ => {}
8510        }
8511        Ok(())
8512    }
8513}
8514
8515/// The metadata bundle for [Breeze].
8516///
8517/// This type should generally not be used directly.
8518#[derive(Bundle)]
8519pub struct BreezeMetadataBundle {
8520    _marker: Breeze,
8521    parent: AbstractMonsterMetadataBundle,
8522}
8523impl Default for BreezeMetadataBundle {
8524    fn default() -> Self {
8525        Self {
8526            _marker: Breeze,
8527            parent: Default::default(),
8528        }
8529    }
8530}
8531
8532/// A metadata field for [Creaking].
8533#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8534pub struct CanMove(pub bool);
8535/// A metadata field for [Creaking].
8536#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8537pub struct IsActive(pub bool);
8538/// A metadata field for [Creaking].
8539#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8540pub struct IsTearingDown(pub bool);
8541/// A metadata field for [Creaking].
8542#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8543pub struct HomePos(pub Option<BlockPos>);
8544/// The marker component for entities of type `minecraft:creaking`.
8545///
8546/// # Metadata
8547///
8548/// These are the metadata components that all `Creaking` entities are
8549/// guaranteed to have, in addition to the metadata components from parent
8550/// types:
8551///
8552/// - [CanMove]
8553/// - [IsActive]
8554/// - [IsTearingDown]
8555/// - [HomePos]
8556///
8557/// # Parents
8558///
8559/// Entities with `Creaking` will also have the following marker components and
8560/// their metadata fields:
8561///
8562/// - [AbstractMonster]
8563/// - [AbstractCreature]
8564/// - [AbstractInsentient]
8565/// - [AbstractLiving]
8566/// - [AbstractEntity]
8567///
8568/// # Children
8569///
8570/// This entity type has no children types.
8571#[derive(Component)]
8572pub struct Creaking;
8573impl Creaking {
8574    fn apply_metadata(
8575        entity: &mut bevy_ecs::system::EntityCommands,
8576        d: EntityDataItem,
8577    ) -> Result<(), UpdateMetadataError> {
8578        match d.index {
8579            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8580            16 => {
8581                entity.insert(CanMove(d.value.into_boolean()?));
8582            }
8583            17 => {
8584                entity.insert(IsActive(d.value.into_boolean()?));
8585            }
8586            18 => {
8587                entity.insert(IsTearingDown(d.value.into_boolean()?));
8588            }
8589            19 => {
8590                entity.insert(HomePos(d.value.into_optional_block_pos()?));
8591            }
8592            _ => {}
8593        }
8594        Ok(())
8595    }
8596}
8597
8598/// The metadata bundle for [Creaking].
8599///
8600/// This type should generally not be used directly.
8601#[derive(Bundle)]
8602pub struct CreakingMetadataBundle {
8603    _marker: Creaking,
8604    parent: AbstractMonsterMetadataBundle,
8605    can_move: CanMove,
8606    is_active: IsActive,
8607    is_tearing_down: IsTearingDown,
8608    home_pos: HomePos,
8609}
8610impl Default for CreakingMetadataBundle {
8611    fn default() -> Self {
8612        Self {
8613            _marker: Creaking,
8614            parent: Default::default(),
8615            can_move: CanMove(true),
8616            is_active: IsActive(false),
8617            is_tearing_down: IsTearingDown(false),
8618            home_pos: HomePos(None),
8619        }
8620    }
8621}
8622
8623/// A metadata field for [Creeper].
8624#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8625pub struct SwellDir(pub i32);
8626/// A metadata field for [Creeper].
8627#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8628pub struct IsPowered(pub bool);
8629/// A metadata field for [Creeper].
8630#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8631pub struct IsIgnited(pub bool);
8632/// The marker component for entities of type `minecraft:creeper`.
8633///
8634/// # Metadata
8635///
8636/// These are the metadata components that all `Creeper` entities are guaranteed
8637/// to have, in addition to the metadata components from parent types:
8638///
8639/// - [SwellDir]
8640/// - [IsPowered]
8641/// - [IsIgnited]
8642///
8643/// # Parents
8644///
8645/// Entities with `Creeper` will also have the following marker components and
8646/// their metadata fields:
8647///
8648/// - [AbstractMonster]
8649/// - [AbstractCreature]
8650/// - [AbstractInsentient]
8651/// - [AbstractLiving]
8652/// - [AbstractEntity]
8653///
8654/// # Children
8655///
8656/// This entity type has no children types.
8657#[derive(Component)]
8658pub struct Creeper;
8659impl Creeper {
8660    fn apply_metadata(
8661        entity: &mut bevy_ecs::system::EntityCommands,
8662        d: EntityDataItem,
8663    ) -> Result<(), UpdateMetadataError> {
8664        match d.index {
8665            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8666            16 => {
8667                entity.insert(SwellDir(d.value.into_int()?));
8668            }
8669            17 => {
8670                entity.insert(IsPowered(d.value.into_boolean()?));
8671            }
8672            18 => {
8673                entity.insert(IsIgnited(d.value.into_boolean()?));
8674            }
8675            _ => {}
8676        }
8677        Ok(())
8678    }
8679}
8680
8681/// The metadata bundle for [Creeper].
8682///
8683/// This type should generally not be used directly.
8684#[derive(Bundle)]
8685pub struct CreeperMetadataBundle {
8686    _marker: Creeper,
8687    parent: AbstractMonsterMetadataBundle,
8688    swell_dir: SwellDir,
8689    is_powered: IsPowered,
8690    is_ignited: IsIgnited,
8691}
8692impl Default for CreeperMetadataBundle {
8693    fn default() -> Self {
8694        Self {
8695            _marker: Creeper,
8696            parent: Default::default(),
8697            swell_dir: SwellDir(-1),
8698            is_powered: IsPowered(false),
8699            is_ignited: IsIgnited(false),
8700        }
8701    }
8702}
8703
8704/// A metadata field for [Enderman].
8705#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8706pub struct CarryState(pub azalea_block::BlockState);
8707/// A metadata field for [Enderman].
8708#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8709pub struct Creepy(pub bool);
8710/// A metadata field for [Enderman].
8711#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8712pub struct StaredAt(pub bool);
8713/// The marker component for entities of type `minecraft:enderman`.
8714///
8715/// # Metadata
8716///
8717/// These are the metadata components that all `Enderman` entities are
8718/// guaranteed to have, in addition to the metadata components from parent
8719/// types:
8720///
8721/// - [CarryState]
8722/// - [Creepy]
8723/// - [StaredAt]
8724///
8725/// # Parents
8726///
8727/// Entities with `Enderman` will also have the following marker components and
8728/// their metadata fields:
8729///
8730/// - [AbstractMonster]
8731/// - [AbstractCreature]
8732/// - [AbstractInsentient]
8733/// - [AbstractLiving]
8734/// - [AbstractEntity]
8735///
8736/// # Children
8737///
8738/// This entity type has no children types.
8739#[derive(Component)]
8740pub struct Enderman;
8741impl Enderman {
8742    fn apply_metadata(
8743        entity: &mut bevy_ecs::system::EntityCommands,
8744        d: EntityDataItem,
8745    ) -> Result<(), UpdateMetadataError> {
8746        match d.index {
8747            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8748            16 => {
8749                entity.insert(CarryState(d.value.into_optional_block_state()?));
8750            }
8751            17 => {
8752                entity.insert(Creepy(d.value.into_boolean()?));
8753            }
8754            18 => {
8755                entity.insert(StaredAt(d.value.into_boolean()?));
8756            }
8757            _ => {}
8758        }
8759        Ok(())
8760    }
8761}
8762
8763/// The metadata bundle for [Enderman].
8764///
8765/// This type should generally not be used directly.
8766#[derive(Bundle)]
8767pub struct EndermanMetadataBundle {
8768    _marker: Enderman,
8769    parent: AbstractMonsterMetadataBundle,
8770    carry_state: CarryState,
8771    creepy: Creepy,
8772    stared_at: StaredAt,
8773}
8774impl Default for EndermanMetadataBundle {
8775    fn default() -> Self {
8776        Self {
8777            _marker: Enderman,
8778            parent: Default::default(),
8779            carry_state: CarryState(azalea_block::BlockState::AIR),
8780            creepy: Creepy(false),
8781            stared_at: StaredAt(false),
8782        }
8783    }
8784}
8785
8786/// The marker component for entities of type `minecraft:endermite`.
8787///
8788/// # Metadata
8789///
8790/// This entity type does not add any additional metadata. It will still have
8791/// metadata from parent types.
8792///
8793/// # Parents
8794///
8795/// Entities with `Endermite` will also have the following marker components and
8796/// their metadata fields:
8797///
8798/// - [AbstractMonster]
8799/// - [AbstractCreature]
8800/// - [AbstractInsentient]
8801/// - [AbstractLiving]
8802/// - [AbstractEntity]
8803///
8804/// # Children
8805///
8806/// This entity type has no children types.
8807#[derive(Component)]
8808pub struct Endermite;
8809impl Endermite {
8810    fn apply_metadata(
8811        entity: &mut bevy_ecs::system::EntityCommands,
8812        d: EntityDataItem,
8813    ) -> Result<(), UpdateMetadataError> {
8814        match d.index {
8815            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8816            _ => {}
8817        }
8818        Ok(())
8819    }
8820}
8821
8822/// The metadata bundle for [Endermite].
8823///
8824/// This type should generally not be used directly.
8825#[derive(Bundle)]
8826pub struct EndermiteMetadataBundle {
8827    _marker: Endermite,
8828    parent: AbstractMonsterMetadataBundle,
8829}
8830impl Default for EndermiteMetadataBundle {
8831    fn default() -> Self {
8832        Self {
8833            _marker: Endermite,
8834            parent: Default::default(),
8835        }
8836    }
8837}
8838
8839/// The marker component for entities of type `minecraft:giant`.
8840///
8841/// # Metadata
8842///
8843/// This entity type does not add any additional metadata. It will still have
8844/// metadata from parent types.
8845///
8846/// # Parents
8847///
8848/// Entities with `Giant` will also have the following marker components and
8849/// their metadata fields:
8850///
8851/// - [AbstractMonster]
8852/// - [AbstractCreature]
8853/// - [AbstractInsentient]
8854/// - [AbstractLiving]
8855/// - [AbstractEntity]
8856///
8857/// # Children
8858///
8859/// This entity type has no children types.
8860#[derive(Component)]
8861pub struct Giant;
8862impl Giant {
8863    fn apply_metadata(
8864        entity: &mut bevy_ecs::system::EntityCommands,
8865        d: EntityDataItem,
8866    ) -> Result<(), UpdateMetadataError> {
8867        match d.index {
8868            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8869            _ => {}
8870        }
8871        Ok(())
8872    }
8873}
8874
8875/// The metadata bundle for [Giant].
8876///
8877/// This type should generally not be used directly.
8878#[derive(Bundle)]
8879pub struct GiantMetadataBundle {
8880    _marker: Giant,
8881    parent: AbstractMonsterMetadataBundle,
8882}
8883impl Default for GiantMetadataBundle {
8884    fn default() -> Self {
8885        Self {
8886            _marker: Giant,
8887            parent: Default::default(),
8888        }
8889    }
8890}
8891
8892/// A metadata field for [Guardian].
8893#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8894pub struct Moving(pub bool);
8895/// A metadata field for [Guardian].
8896#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
8897pub struct AttackTarget(pub i32);
8898/// The marker component for entities of type `minecraft:guardian`.
8899///
8900/// # Metadata
8901///
8902/// These are the metadata components that all `Guardian` entities are
8903/// guaranteed to have, in addition to the metadata components from parent
8904/// types:
8905///
8906/// - [Moving]
8907/// - [AttackTarget]
8908///
8909/// # Parents
8910///
8911/// Entities with `Guardian` will also have the following marker components and
8912/// their metadata fields:
8913///
8914/// - [AbstractMonster]
8915/// - [AbstractCreature]
8916/// - [AbstractInsentient]
8917/// - [AbstractLiving]
8918/// - [AbstractEntity]
8919///
8920/// # Children
8921///
8922/// - [ElderGuardian]
8923#[derive(Component)]
8924pub struct Guardian;
8925impl Guardian {
8926    fn apply_metadata(
8927        entity: &mut bevy_ecs::system::EntityCommands,
8928        d: EntityDataItem,
8929    ) -> Result<(), UpdateMetadataError> {
8930        match d.index {
8931            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
8932            16 => {
8933                entity.insert(Moving(d.value.into_boolean()?));
8934            }
8935            17 => {
8936                entity.insert(AttackTarget(d.value.into_int()?));
8937            }
8938            _ => {}
8939        }
8940        Ok(())
8941    }
8942}
8943
8944/// The metadata bundle for [Guardian].
8945///
8946/// This type should generally not be used directly.
8947#[derive(Bundle)]
8948pub struct GuardianMetadataBundle {
8949    _marker: Guardian,
8950    parent: AbstractMonsterMetadataBundle,
8951    moving: Moving,
8952    attack_target: AttackTarget,
8953}
8954impl Default for GuardianMetadataBundle {
8955    fn default() -> Self {
8956        Self {
8957            _marker: Guardian,
8958            parent: Default::default(),
8959            moving: Moving(false),
8960            attack_target: AttackTarget(0),
8961        }
8962    }
8963}
8964
8965/// The marker component for entities of type `minecraft:elder_guardian`.
8966///
8967/// # Metadata
8968///
8969/// This entity type does not add any additional metadata. It will still have
8970/// metadata from parent types.
8971///
8972/// # Parents
8973///
8974/// Entities with `ElderGuardian` will also have the following marker components
8975/// and their metadata fields:
8976///
8977/// - [Guardian]
8978/// - [AbstractMonster]
8979/// - [AbstractCreature]
8980/// - [AbstractInsentient]
8981/// - [AbstractLiving]
8982/// - [AbstractEntity]
8983///
8984/// # Children
8985///
8986/// This entity type has no children types.
8987#[derive(Component)]
8988pub struct ElderGuardian;
8989impl ElderGuardian {
8990    fn apply_metadata(
8991        entity: &mut bevy_ecs::system::EntityCommands,
8992        d: EntityDataItem,
8993    ) -> Result<(), UpdateMetadataError> {
8994        match d.index {
8995            0..=17 => Guardian::apply_metadata(entity, d)?,
8996            _ => {}
8997        }
8998        Ok(())
8999    }
9000}
9001
9002/// The metadata bundle for [ElderGuardian].
9003///
9004/// This type should generally not be used directly.
9005#[derive(Bundle)]
9006pub struct ElderGuardianMetadataBundle {
9007    _marker: ElderGuardian,
9008    parent: GuardianMetadataBundle,
9009}
9010impl Default for ElderGuardianMetadataBundle {
9011    fn default() -> Self {
9012        Self {
9013            _marker: ElderGuardian,
9014            parent: Default::default(),
9015        }
9016    }
9017}
9018
9019/// The marker component for entities of type `minecraft:parched`.
9020///
9021/// # Metadata
9022///
9023/// This entity type does not add any additional metadata. It will still have
9024/// metadata from parent types.
9025///
9026/// # Parents
9027///
9028/// Entities with `Parched` will also have the following marker components and
9029/// their metadata fields:
9030///
9031/// - [AbstractMonster]
9032/// - [AbstractCreature]
9033/// - [AbstractInsentient]
9034/// - [AbstractLiving]
9035/// - [AbstractEntity]
9036///
9037/// # Children
9038///
9039/// This entity type has no children types.
9040#[derive(Component)]
9041pub struct Parched;
9042impl Parched {
9043    fn apply_metadata(
9044        entity: &mut bevy_ecs::system::EntityCommands,
9045        d: EntityDataItem,
9046    ) -> Result<(), UpdateMetadataError> {
9047        match d.index {
9048            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9049            _ => {}
9050        }
9051        Ok(())
9052    }
9053}
9054
9055/// The metadata bundle for [Parched].
9056///
9057/// This type should generally not be used directly.
9058#[derive(Bundle)]
9059pub struct ParchedMetadataBundle {
9060    _marker: Parched,
9061    parent: AbstractMonsterMetadataBundle,
9062}
9063impl Default for ParchedMetadataBundle {
9064    fn default() -> Self {
9065        Self {
9066            _marker: Parched,
9067            parent: Default::default(),
9068        }
9069    }
9070}
9071
9072/// The marker component for entities of type `minecraft:silverfish`.
9073///
9074/// # Metadata
9075///
9076/// This entity type does not add any additional metadata. It will still have
9077/// metadata from parent types.
9078///
9079/// # Parents
9080///
9081/// Entities with `Silverfish` will also have the following marker components
9082/// and their metadata fields:
9083///
9084/// - [AbstractMonster]
9085/// - [AbstractCreature]
9086/// - [AbstractInsentient]
9087/// - [AbstractLiving]
9088/// - [AbstractEntity]
9089///
9090/// # Children
9091///
9092/// This entity type has no children types.
9093#[derive(Component)]
9094pub struct Silverfish;
9095impl Silverfish {
9096    fn apply_metadata(
9097        entity: &mut bevy_ecs::system::EntityCommands,
9098        d: EntityDataItem,
9099    ) -> Result<(), UpdateMetadataError> {
9100        match d.index {
9101            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9102            _ => {}
9103        }
9104        Ok(())
9105    }
9106}
9107
9108/// The metadata bundle for [Silverfish].
9109///
9110/// This type should generally not be used directly.
9111#[derive(Bundle)]
9112pub struct SilverfishMetadataBundle {
9113    _marker: Silverfish,
9114    parent: AbstractMonsterMetadataBundle,
9115}
9116impl Default for SilverfishMetadataBundle {
9117    fn default() -> Self {
9118        Self {
9119            _marker: Silverfish,
9120            parent: Default::default(),
9121        }
9122    }
9123}
9124
9125/// A metadata field for [Skeleton].
9126#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9127pub struct StrayConversion(pub bool);
9128/// The marker component for entities of type `minecraft:skeleton`.
9129///
9130/// # Metadata
9131///
9132/// These are the metadata components that all `Skeleton` entities are
9133/// guaranteed to have, in addition to the metadata components from parent
9134/// types:
9135///
9136/// - [StrayConversion]
9137///
9138/// # Parents
9139///
9140/// Entities with `Skeleton` will also have the following marker components and
9141/// their metadata fields:
9142///
9143/// - [AbstractMonster]
9144/// - [AbstractCreature]
9145/// - [AbstractInsentient]
9146/// - [AbstractLiving]
9147/// - [AbstractEntity]
9148///
9149/// # Children
9150///
9151/// This entity type has no children types.
9152#[derive(Component)]
9153pub struct Skeleton;
9154impl Skeleton {
9155    fn apply_metadata(
9156        entity: &mut bevy_ecs::system::EntityCommands,
9157        d: EntityDataItem,
9158    ) -> Result<(), UpdateMetadataError> {
9159        match d.index {
9160            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9161            16 => {
9162                entity.insert(StrayConversion(d.value.into_boolean()?));
9163            }
9164            _ => {}
9165        }
9166        Ok(())
9167    }
9168}
9169
9170/// The metadata bundle for [Skeleton].
9171///
9172/// This type should generally not be used directly.
9173#[derive(Bundle)]
9174pub struct SkeletonMetadataBundle {
9175    _marker: Skeleton,
9176    parent: AbstractMonsterMetadataBundle,
9177    stray_conversion: StrayConversion,
9178}
9179impl Default for SkeletonMetadataBundle {
9180    fn default() -> Self {
9181        Self {
9182            _marker: Skeleton,
9183            parent: Default::default(),
9184            stray_conversion: StrayConversion(false),
9185        }
9186    }
9187}
9188
9189#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
9190/// A metadata field for [Spider].
9191pub struct Climbing(pub bool);
9192/// The marker component for entities of type `minecraft:spider`.
9193///
9194/// # Metadata
9195///
9196/// These are the metadata components that all `Spider` entities are guaranteed
9197/// to have, in addition to the metadata components from parent types:
9198///
9199/// - [Climbing]
9200///
9201/// # Parents
9202///
9203/// Entities with `Spider` will also have the following marker components and
9204/// their metadata fields:
9205///
9206/// - [AbstractMonster]
9207/// - [AbstractCreature]
9208/// - [AbstractInsentient]
9209/// - [AbstractLiving]
9210/// - [AbstractEntity]
9211///
9212/// # Children
9213///
9214/// - [CaveSpider]
9215#[derive(Component)]
9216pub struct Spider;
9217impl Spider {
9218    fn apply_metadata(
9219        entity: &mut bevy_ecs::system::EntityCommands,
9220        d: EntityDataItem,
9221    ) -> Result<(), UpdateMetadataError> {
9222        match d.index {
9223            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9224            16 => {
9225                let bitfield = d.value.into_byte()?;
9226                entity.insert(Climbing(bitfield & 0x1 != 0));
9227            }
9228            _ => {}
9229        }
9230        Ok(())
9231    }
9232}
9233
9234/// The metadata bundle for [Spider].
9235///
9236/// This type should generally not be used directly.
9237#[derive(Bundle)]
9238pub struct SpiderMetadataBundle {
9239    _marker: Spider,
9240    parent: AbstractMonsterMetadataBundle,
9241    climbing: Climbing,
9242}
9243impl Default for SpiderMetadataBundle {
9244    fn default() -> Self {
9245        Self {
9246            _marker: Spider,
9247            parent: Default::default(),
9248            climbing: Climbing(false),
9249        }
9250    }
9251}
9252
9253/// The marker component for entities of type `minecraft:cave_spider`.
9254///
9255/// # Metadata
9256///
9257/// This entity type does not add any additional metadata. It will still have
9258/// metadata from parent types.
9259///
9260/// # Parents
9261///
9262/// Entities with `CaveSpider` will also have the following marker components
9263/// and their metadata fields:
9264///
9265/// - [Spider]
9266/// - [AbstractMonster]
9267/// - [AbstractCreature]
9268/// - [AbstractInsentient]
9269/// - [AbstractLiving]
9270/// - [AbstractEntity]
9271///
9272/// # Children
9273///
9274/// This entity type has no children types.
9275#[derive(Component)]
9276pub struct CaveSpider;
9277impl CaveSpider {
9278    fn apply_metadata(
9279        entity: &mut bevy_ecs::system::EntityCommands,
9280        d: EntityDataItem,
9281    ) -> Result<(), UpdateMetadataError> {
9282        match d.index {
9283            0..=16 => Spider::apply_metadata(entity, d)?,
9284            _ => {}
9285        }
9286        Ok(())
9287    }
9288}
9289
9290/// The metadata bundle for [CaveSpider].
9291///
9292/// This type should generally not be used directly.
9293#[derive(Bundle)]
9294pub struct CaveSpiderMetadataBundle {
9295    _marker: CaveSpider,
9296    parent: SpiderMetadataBundle,
9297}
9298impl Default for CaveSpiderMetadataBundle {
9299    fn default() -> Self {
9300        Self {
9301            _marker: CaveSpider,
9302            parent: Default::default(),
9303        }
9304    }
9305}
9306
9307/// The marker component for entities of type `minecraft:stray`.
9308///
9309/// # Metadata
9310///
9311/// This entity type does not add any additional metadata. It will still have
9312/// metadata from parent types.
9313///
9314/// # Parents
9315///
9316/// Entities with `Stray` will also have the following marker components and
9317/// their metadata fields:
9318///
9319/// - [AbstractMonster]
9320/// - [AbstractCreature]
9321/// - [AbstractInsentient]
9322/// - [AbstractLiving]
9323/// - [AbstractEntity]
9324///
9325/// # Children
9326///
9327/// This entity type has no children types.
9328#[derive(Component)]
9329pub struct Stray;
9330impl Stray {
9331    fn apply_metadata(
9332        entity: &mut bevy_ecs::system::EntityCommands,
9333        d: EntityDataItem,
9334    ) -> Result<(), UpdateMetadataError> {
9335        match d.index {
9336            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9337            _ => {}
9338        }
9339        Ok(())
9340    }
9341}
9342
9343/// The metadata bundle for [Stray].
9344///
9345/// This type should generally not be used directly.
9346#[derive(Bundle)]
9347pub struct StrayMetadataBundle {
9348    _marker: Stray,
9349    parent: AbstractMonsterMetadataBundle,
9350}
9351impl Default for StrayMetadataBundle {
9352    fn default() -> Self {
9353        Self {
9354            _marker: Stray,
9355            parent: Default::default(),
9356        }
9357    }
9358}
9359
9360/// A metadata field for [Vex].
9361#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9362pub struct VexFlags(pub u8);
9363/// The marker component for entities of type `minecraft:vex`.
9364///
9365/// # Metadata
9366///
9367/// These are the metadata components that all `Vex` entities are guaranteed to
9368/// have, in addition to the metadata components from parent types:
9369///
9370/// - [VexFlags]
9371///
9372/// # Parents
9373///
9374/// Entities with `Vex` will also have the following marker components and their
9375/// metadata fields:
9376///
9377/// - [AbstractMonster]
9378/// - [AbstractCreature]
9379/// - [AbstractInsentient]
9380/// - [AbstractLiving]
9381/// - [AbstractEntity]
9382///
9383/// # Children
9384///
9385/// This entity type has no children types.
9386#[derive(Component)]
9387pub struct Vex;
9388impl Vex {
9389    fn apply_metadata(
9390        entity: &mut bevy_ecs::system::EntityCommands,
9391        d: EntityDataItem,
9392    ) -> Result<(), UpdateMetadataError> {
9393        match d.index {
9394            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9395            16 => {
9396                entity.insert(VexFlags(d.value.into_byte()?));
9397            }
9398            _ => {}
9399        }
9400        Ok(())
9401    }
9402}
9403
9404/// The metadata bundle for [Vex].
9405///
9406/// This type should generally not be used directly.
9407#[derive(Bundle)]
9408pub struct VexMetadataBundle {
9409    _marker: Vex,
9410    parent: AbstractMonsterMetadataBundle,
9411    vex_flags: VexFlags,
9412}
9413impl Default for VexMetadataBundle {
9414    fn default() -> Self {
9415        Self {
9416            _marker: Vex,
9417            parent: Default::default(),
9418            vex_flags: VexFlags(0),
9419        }
9420    }
9421}
9422
9423/// A metadata field for [Warden].
9424#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9425pub struct ClientAngerLevel(pub i32);
9426/// The marker component for entities of type `minecraft:warden`.
9427///
9428/// # Metadata
9429///
9430/// These are the metadata components that all `Warden` entities are guaranteed
9431/// to have, in addition to the metadata components from parent types:
9432///
9433/// - [ClientAngerLevel]
9434///
9435/// # Parents
9436///
9437/// Entities with `Warden` will also have the following marker components and
9438/// their metadata fields:
9439///
9440/// - [AbstractMonster]
9441/// - [AbstractCreature]
9442/// - [AbstractInsentient]
9443/// - [AbstractLiving]
9444/// - [AbstractEntity]
9445///
9446/// # Children
9447///
9448/// This entity type has no children types.
9449#[derive(Component)]
9450pub struct Warden;
9451impl Warden {
9452    fn apply_metadata(
9453        entity: &mut bevy_ecs::system::EntityCommands,
9454        d: EntityDataItem,
9455    ) -> Result<(), UpdateMetadataError> {
9456        match d.index {
9457            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9458            16 => {
9459                entity.insert(ClientAngerLevel(d.value.into_int()?));
9460            }
9461            _ => {}
9462        }
9463        Ok(())
9464    }
9465}
9466
9467/// The metadata bundle for [Warden].
9468///
9469/// This type should generally not be used directly.
9470#[derive(Bundle)]
9471pub struct WardenMetadataBundle {
9472    _marker: Warden,
9473    parent: AbstractMonsterMetadataBundle,
9474    client_anger_level: ClientAngerLevel,
9475}
9476impl Default for WardenMetadataBundle {
9477    fn default() -> Self {
9478        Self {
9479            _marker: Warden,
9480            parent: Default::default(),
9481            client_anger_level: ClientAngerLevel(0),
9482        }
9483    }
9484}
9485
9486/// A metadata field for [Wither].
9487#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9488pub struct TargetA(pub i32);
9489/// A metadata field for [Wither].
9490#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9491pub struct TargetB(pub i32);
9492/// A metadata field for [Wither].
9493#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9494pub struct TargetC(pub i32);
9495/// A metadata field for [Wither].
9496#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9497pub struct Inv(pub i32);
9498/// The marker component for entities of type `minecraft:wither`.
9499///
9500/// # Metadata
9501///
9502/// These are the metadata components that all `Wither` entities are guaranteed
9503/// to have, in addition to the metadata components from parent types:
9504///
9505/// - [TargetA]
9506/// - [TargetB]
9507/// - [TargetC]
9508/// - [Inv]
9509///
9510/// # Parents
9511///
9512/// Entities with `Wither` will also have the following marker components and
9513/// their metadata fields:
9514///
9515/// - [AbstractMonster]
9516/// - [AbstractCreature]
9517/// - [AbstractInsentient]
9518/// - [AbstractLiving]
9519/// - [AbstractEntity]
9520///
9521/// # Children
9522///
9523/// This entity type has no children types.
9524#[derive(Component)]
9525pub struct Wither;
9526impl Wither {
9527    fn apply_metadata(
9528        entity: &mut bevy_ecs::system::EntityCommands,
9529        d: EntityDataItem,
9530    ) -> Result<(), UpdateMetadataError> {
9531        match d.index {
9532            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9533            16 => {
9534                entity.insert(TargetA(d.value.into_int()?));
9535            }
9536            17 => {
9537                entity.insert(TargetB(d.value.into_int()?));
9538            }
9539            18 => {
9540                entity.insert(TargetC(d.value.into_int()?));
9541            }
9542            19 => {
9543                entity.insert(Inv(d.value.into_int()?));
9544            }
9545            _ => {}
9546        }
9547        Ok(())
9548    }
9549}
9550
9551/// The metadata bundle for [Wither].
9552///
9553/// This type should generally not be used directly.
9554#[derive(Bundle)]
9555pub struct WitherMetadataBundle {
9556    _marker: Wither,
9557    parent: AbstractMonsterMetadataBundle,
9558    target_a: TargetA,
9559    target_b: TargetB,
9560    target_c: TargetC,
9561    inv: Inv,
9562}
9563impl Default for WitherMetadataBundle {
9564    fn default() -> Self {
9565        Self {
9566            _marker: Wither,
9567            parent: Default::default(),
9568            target_a: TargetA(0),
9569            target_b: TargetB(0),
9570            target_c: TargetC(0),
9571            inv: Inv(0),
9572        }
9573    }
9574}
9575
9576/// The marker component for entities of type `minecraft:wither_skeleton`.
9577///
9578/// # Metadata
9579///
9580/// This entity type does not add any additional metadata. It will still have
9581/// metadata from parent types.
9582///
9583/// # Parents
9584///
9585/// Entities with `WitherSkeleton` will also have the following marker
9586/// components and their metadata fields:
9587///
9588/// - [AbstractMonster]
9589/// - [AbstractCreature]
9590/// - [AbstractInsentient]
9591/// - [AbstractLiving]
9592/// - [AbstractEntity]
9593///
9594/// # Children
9595///
9596/// This entity type has no children types.
9597#[derive(Component)]
9598pub struct WitherSkeleton;
9599impl WitherSkeleton {
9600    fn apply_metadata(
9601        entity: &mut bevy_ecs::system::EntityCommands,
9602        d: EntityDataItem,
9603    ) -> Result<(), UpdateMetadataError> {
9604        match d.index {
9605            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9606            _ => {}
9607        }
9608        Ok(())
9609    }
9610}
9611
9612/// The metadata bundle for [WitherSkeleton].
9613///
9614/// This type should generally not be used directly.
9615#[derive(Bundle)]
9616pub struct WitherSkeletonMetadataBundle {
9617    _marker: WitherSkeleton,
9618    parent: AbstractMonsterMetadataBundle,
9619}
9620impl Default for WitherSkeletonMetadataBundle {
9621    fn default() -> Self {
9622        Self {
9623            _marker: WitherSkeleton,
9624            parent: Default::default(),
9625        }
9626    }
9627}
9628
9629/// A metadata field for [Zoglin].
9630#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9631pub struct ZoglinBaby(pub bool);
9632/// The marker component for entities of type `minecraft:zoglin`.
9633///
9634/// # Metadata
9635///
9636/// These are the metadata components that all `Zoglin` entities are guaranteed
9637/// to have, in addition to the metadata components from parent types:
9638///
9639/// - [ZoglinBaby]
9640///
9641/// # Parents
9642///
9643/// Entities with `Zoglin` will also have the following marker components and
9644/// their metadata fields:
9645///
9646/// - [AbstractMonster]
9647/// - [AbstractCreature]
9648/// - [AbstractInsentient]
9649/// - [AbstractLiving]
9650/// - [AbstractEntity]
9651///
9652/// # Children
9653///
9654/// This entity type has no children types.
9655#[derive(Component)]
9656pub struct Zoglin;
9657impl Zoglin {
9658    fn apply_metadata(
9659        entity: &mut bevy_ecs::system::EntityCommands,
9660        d: EntityDataItem,
9661    ) -> Result<(), UpdateMetadataError> {
9662        match d.index {
9663            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9664            16 => {
9665                entity.insert(ZoglinBaby(d.value.into_boolean()?));
9666            }
9667            _ => {}
9668        }
9669        Ok(())
9670    }
9671}
9672
9673/// The metadata bundle for [Zoglin].
9674///
9675/// This type should generally not be used directly.
9676#[derive(Bundle)]
9677pub struct ZoglinMetadataBundle {
9678    _marker: Zoglin,
9679    parent: AbstractMonsterMetadataBundle,
9680    zoglin_baby: ZoglinBaby,
9681}
9682impl Default for ZoglinMetadataBundle {
9683    fn default() -> Self {
9684        Self {
9685            _marker: Zoglin,
9686            parent: Default::default(),
9687            zoglin_baby: ZoglinBaby(false),
9688        }
9689    }
9690}
9691
9692/// A metadata field for [Zombie].
9693#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9694pub struct ZombieBaby(pub bool);
9695/// A metadata field for [Zombie].
9696#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9697pub struct SpecialType(pub i32);
9698/// A metadata field for [Zombie].
9699#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9700pub struct DrownedConversion(pub bool);
9701/// The marker component for entities of type `minecraft:zombie`.
9702///
9703/// # Metadata
9704///
9705/// These are the metadata components that all `Zombie` entities are guaranteed
9706/// to have, in addition to the metadata components from parent types:
9707///
9708/// - [ZombieBaby]
9709/// - [SpecialType]
9710/// - [DrownedConversion]
9711///
9712/// # Parents
9713///
9714/// Entities with `Zombie` will also have the following marker components and
9715/// their metadata fields:
9716///
9717/// - [AbstractMonster]
9718/// - [AbstractCreature]
9719/// - [AbstractInsentient]
9720/// - [AbstractLiving]
9721/// - [AbstractEntity]
9722///
9723/// # Children
9724///
9725/// - [Drowned]
9726/// - [Husk]
9727/// - [ZombieVillager]
9728/// - [ZombifiedPiglin]
9729#[derive(Component)]
9730pub struct Zombie;
9731impl Zombie {
9732    fn apply_metadata(
9733        entity: &mut bevy_ecs::system::EntityCommands,
9734        d: EntityDataItem,
9735    ) -> Result<(), UpdateMetadataError> {
9736        match d.index {
9737            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
9738            16 => {
9739                entity.insert(ZombieBaby(d.value.into_boolean()?));
9740            }
9741            17 => {
9742                entity.insert(SpecialType(d.value.into_int()?));
9743            }
9744            18 => {
9745                entity.insert(DrownedConversion(d.value.into_boolean()?));
9746            }
9747            _ => {}
9748        }
9749        Ok(())
9750    }
9751}
9752
9753/// The metadata bundle for [Zombie].
9754///
9755/// This type should generally not be used directly.
9756#[derive(Bundle)]
9757pub struct ZombieMetadataBundle {
9758    _marker: Zombie,
9759    parent: AbstractMonsterMetadataBundle,
9760    zombie_baby: ZombieBaby,
9761    special_type: SpecialType,
9762    drowned_conversion: DrownedConversion,
9763}
9764impl Default for ZombieMetadataBundle {
9765    fn default() -> Self {
9766        Self {
9767            _marker: Zombie,
9768            parent: Default::default(),
9769            zombie_baby: ZombieBaby(false),
9770            special_type: SpecialType(0),
9771            drowned_conversion: DrownedConversion(false),
9772        }
9773    }
9774}
9775
9776/// The marker component for entities of type `minecraft:drowned`.
9777///
9778/// # Metadata
9779///
9780/// This entity type does not add any additional metadata. It will still have
9781/// metadata from parent types.
9782///
9783/// # Parents
9784///
9785/// Entities with `Drowned` will also have the following marker components and
9786/// their metadata fields:
9787///
9788/// - [Zombie]
9789/// - [AbstractMonster]
9790/// - [AbstractCreature]
9791/// - [AbstractInsentient]
9792/// - [AbstractLiving]
9793/// - [AbstractEntity]
9794///
9795/// # Children
9796///
9797/// This entity type has no children types.
9798#[derive(Component)]
9799pub struct Drowned;
9800impl Drowned {
9801    fn apply_metadata(
9802        entity: &mut bevy_ecs::system::EntityCommands,
9803        d: EntityDataItem,
9804    ) -> Result<(), UpdateMetadataError> {
9805        match d.index {
9806            0..=18 => Zombie::apply_metadata(entity, d)?,
9807            _ => {}
9808        }
9809        Ok(())
9810    }
9811}
9812
9813/// The metadata bundle for [Drowned].
9814///
9815/// This type should generally not be used directly.
9816#[derive(Bundle)]
9817pub struct DrownedMetadataBundle {
9818    _marker: Drowned,
9819    parent: ZombieMetadataBundle,
9820}
9821impl Default for DrownedMetadataBundle {
9822    fn default() -> Self {
9823        Self {
9824            _marker: Drowned,
9825            parent: Default::default(),
9826        }
9827    }
9828}
9829
9830/// The marker component for entities of type `minecraft:husk`.
9831///
9832/// # Metadata
9833///
9834/// This entity type does not add any additional metadata. It will still have
9835/// metadata from parent types.
9836///
9837/// # Parents
9838///
9839/// Entities with `Husk` will also have the following marker components and
9840/// their metadata fields:
9841///
9842/// - [Zombie]
9843/// - [AbstractMonster]
9844/// - [AbstractCreature]
9845/// - [AbstractInsentient]
9846/// - [AbstractLiving]
9847/// - [AbstractEntity]
9848///
9849/// # Children
9850///
9851/// This entity type has no children types.
9852#[derive(Component)]
9853pub struct Husk;
9854impl Husk {
9855    fn apply_metadata(
9856        entity: &mut bevy_ecs::system::EntityCommands,
9857        d: EntityDataItem,
9858    ) -> Result<(), UpdateMetadataError> {
9859        match d.index {
9860            0..=18 => Zombie::apply_metadata(entity, d)?,
9861            _ => {}
9862        }
9863        Ok(())
9864    }
9865}
9866
9867/// The metadata bundle for [Husk].
9868///
9869/// This type should generally not be used directly.
9870#[derive(Bundle)]
9871pub struct HuskMetadataBundle {
9872    _marker: Husk,
9873    parent: ZombieMetadataBundle,
9874}
9875impl Default for HuskMetadataBundle {
9876    fn default() -> Self {
9877        Self {
9878            _marker: Husk,
9879            parent: Default::default(),
9880        }
9881    }
9882}
9883
9884/// A metadata field for [ZombieVillager].
9885#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9886pub struct Converting(pub bool);
9887/// A metadata field for [ZombieVillager].
9888#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9889pub struct ZombieVillagerVillagerData(pub VillagerData);
9890/// A metadata field for [ZombieVillager].
9891#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
9892pub struct ZombieVillagerVillagerDataFinalized(pub bool);
9893/// The marker component for entities of type `minecraft:zombie_villager`.
9894///
9895/// # Metadata
9896///
9897/// These are the metadata components that all `ZombieVillager` entities are
9898/// guaranteed to have, in addition to the metadata components from parent
9899/// types:
9900///
9901/// - [Converting]
9902/// - [ZombieVillagerVillagerData]
9903/// - [ZombieVillagerVillagerDataFinalized]
9904///
9905/// # Parents
9906///
9907/// Entities with `ZombieVillager` will also have the following marker
9908/// components and their metadata fields:
9909///
9910/// - [Zombie]
9911/// - [AbstractMonster]
9912/// - [AbstractCreature]
9913/// - [AbstractInsentient]
9914/// - [AbstractLiving]
9915/// - [AbstractEntity]
9916///
9917/// # Children
9918///
9919/// This entity type has no children types.
9920#[derive(Component)]
9921pub struct ZombieVillager;
9922impl ZombieVillager {
9923    fn apply_metadata(
9924        entity: &mut bevy_ecs::system::EntityCommands,
9925        d: EntityDataItem,
9926    ) -> Result<(), UpdateMetadataError> {
9927        match d.index {
9928            0..=18 => Zombie::apply_metadata(entity, d)?,
9929            19 => {
9930                entity.insert(Converting(d.value.into_boolean()?));
9931            }
9932            20 => {
9933                entity.insert(ZombieVillagerVillagerData(d.value.into_villager_data()?));
9934            }
9935            21 => {
9936                entity.insert(ZombieVillagerVillagerDataFinalized(d.value.into_boolean()?));
9937            }
9938            _ => {}
9939        }
9940        Ok(())
9941    }
9942}
9943
9944/// The metadata bundle for [ZombieVillager].
9945///
9946/// This type should generally not be used directly.
9947#[derive(Bundle)]
9948pub struct ZombieVillagerMetadataBundle {
9949    _marker: ZombieVillager,
9950    parent: ZombieMetadataBundle,
9951    converting: Converting,
9952    zombie_villager_villager_data: ZombieVillagerVillagerData,
9953    zombie_villager_villager_data_finalized: ZombieVillagerVillagerDataFinalized,
9954}
9955impl Default for ZombieVillagerMetadataBundle {
9956    fn default() -> Self {
9957        Self {
9958            _marker: ZombieVillager,
9959            parent: Default::default(),
9960            converting: Converting(false),
9961            zombie_villager_villager_data: ZombieVillagerVillagerData(VillagerData {
9962                kind: azalea_registry::builtin::VillagerKind::Plains,
9963                profession: azalea_registry::builtin::VillagerProfession::None,
9964                level: 0,
9965            }),
9966            zombie_villager_villager_data_finalized: ZombieVillagerVillagerDataFinalized(false),
9967        }
9968    }
9969}
9970
9971/// The marker component for entities of type `minecraft:zombified_piglin`.
9972///
9973/// # Metadata
9974///
9975/// This entity type does not add any additional metadata. It will still have
9976/// metadata from parent types.
9977///
9978/// # Parents
9979///
9980/// Entities with `ZombifiedPiglin` will also have the following marker
9981/// components and their metadata fields:
9982///
9983/// - [Zombie]
9984/// - [AbstractMonster]
9985/// - [AbstractCreature]
9986/// - [AbstractInsentient]
9987/// - [AbstractLiving]
9988/// - [AbstractEntity]
9989///
9990/// # Children
9991///
9992/// This entity type has no children types.
9993#[derive(Component)]
9994pub struct ZombifiedPiglin;
9995impl ZombifiedPiglin {
9996    fn apply_metadata(
9997        entity: &mut bevy_ecs::system::EntityCommands,
9998        d: EntityDataItem,
9999    ) -> Result<(), UpdateMetadataError> {
10000        match d.index {
10001            0..=18 => Zombie::apply_metadata(entity, d)?,
10002            _ => {}
10003        }
10004        Ok(())
10005    }
10006}
10007
10008/// The metadata bundle for [ZombifiedPiglin].
10009///
10010/// This type should generally not be used directly.
10011#[derive(Bundle)]
10012pub struct ZombifiedPiglinMetadataBundle {
10013    _marker: ZombifiedPiglin,
10014    parent: ZombieMetadataBundle,
10015}
10016impl Default for ZombifiedPiglinMetadataBundle {
10017    fn default() -> Self {
10018        Self {
10019            _marker: ZombifiedPiglin,
10020            parent: Default::default(),
10021        }
10022    }
10023}
10024
10025/// A metadata field for [AbstractPiglin].
10026#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10027pub struct AbstractPiglinImmuneToZombification(pub bool);
10028/// An abstract entity marker component.
10029///
10030/// # Metadata
10031///
10032/// These are the metadata components that all `AbstractPiglin` entities are
10033/// guaranteed to have, in addition to the metadata components from parent
10034/// types:
10035///
10036/// - [AbstractPiglinImmuneToZombification]
10037///
10038/// # Parents
10039///
10040/// Entities with `AbstractPiglin` will also have the following marker
10041/// components and their metadata fields:
10042///
10043/// - [AbstractMonster]
10044/// - [AbstractCreature]
10045/// - [AbstractInsentient]
10046/// - [AbstractLiving]
10047/// - [AbstractEntity]
10048///
10049/// # Children
10050///
10051/// - [Piglin]
10052/// - [PiglinBrute]
10053#[derive(Component)]
10054pub struct AbstractPiglin;
10055impl AbstractPiglin {
10056    fn apply_metadata(
10057        entity: &mut bevy_ecs::system::EntityCommands,
10058        d: EntityDataItem,
10059    ) -> Result<(), UpdateMetadataError> {
10060        match d.index {
10061            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
10062            16 => {
10063                entity.insert(AbstractPiglinImmuneToZombification(d.value.into_boolean()?));
10064            }
10065            _ => {}
10066        }
10067        Ok(())
10068    }
10069}
10070
10071/// The metadata bundle for [AbstractPiglin].
10072///
10073/// This type should generally not be used directly.
10074#[derive(Bundle)]
10075pub struct AbstractPiglinMetadataBundle {
10076    _marker: AbstractPiglin,
10077    parent: AbstractMonsterMetadataBundle,
10078    abstract_piglin_immune_to_zombification: AbstractPiglinImmuneToZombification,
10079}
10080impl Default for AbstractPiglinMetadataBundle {
10081    fn default() -> Self {
10082        Self {
10083            _marker: AbstractPiglin,
10084            parent: Default::default(),
10085            abstract_piglin_immune_to_zombification: AbstractPiglinImmuneToZombification(false),
10086        }
10087    }
10088}
10089
10090/// A metadata field for [Piglin].
10091#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10092pub struct PiglinBaby(pub bool);
10093/// A metadata field for [Piglin].
10094#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10095pub struct PiglinIsChargingCrossbow(pub bool);
10096/// A metadata field for [Piglin].
10097#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10098pub struct IsDancing(pub bool);
10099/// The marker component for entities of type `minecraft:piglin`.
10100///
10101/// # Metadata
10102///
10103/// These are the metadata components that all `Piglin` entities are guaranteed
10104/// to have, in addition to the metadata components from parent types:
10105///
10106/// - [PiglinBaby]
10107/// - [PiglinIsChargingCrossbow]
10108/// - [IsDancing]
10109///
10110/// # Parents
10111///
10112/// Entities with `Piglin` will also have the following marker components and
10113/// their metadata fields:
10114///
10115/// - [AbstractPiglin]
10116/// - [AbstractMonster]
10117/// - [AbstractCreature]
10118/// - [AbstractInsentient]
10119/// - [AbstractLiving]
10120/// - [AbstractEntity]
10121///
10122/// # Children
10123///
10124/// This entity type has no children types.
10125#[derive(Component)]
10126pub struct Piglin;
10127impl Piglin {
10128    fn apply_metadata(
10129        entity: &mut bevy_ecs::system::EntityCommands,
10130        d: EntityDataItem,
10131    ) -> Result<(), UpdateMetadataError> {
10132        match d.index {
10133            0..=16 => AbstractPiglin::apply_metadata(entity, d)?,
10134            17 => {
10135                entity.insert(PiglinBaby(d.value.into_boolean()?));
10136            }
10137            18 => {
10138                entity.insert(PiglinIsChargingCrossbow(d.value.into_boolean()?));
10139            }
10140            19 => {
10141                entity.insert(IsDancing(d.value.into_boolean()?));
10142            }
10143            _ => {}
10144        }
10145        Ok(())
10146    }
10147}
10148
10149/// The metadata bundle for [Piglin].
10150///
10151/// This type should generally not be used directly.
10152#[derive(Bundle)]
10153pub struct PiglinMetadataBundle {
10154    _marker: Piglin,
10155    parent: AbstractPiglinMetadataBundle,
10156    piglin_baby: PiglinBaby,
10157    piglin_is_charging_crossbow: PiglinIsChargingCrossbow,
10158    is_dancing: IsDancing,
10159}
10160impl Default for PiglinMetadataBundle {
10161    fn default() -> Self {
10162        Self {
10163            _marker: Piglin,
10164            parent: Default::default(),
10165            piglin_baby: PiglinBaby(false),
10166            piglin_is_charging_crossbow: PiglinIsChargingCrossbow(false),
10167            is_dancing: IsDancing(false),
10168        }
10169    }
10170}
10171
10172/// The marker component for entities of type `minecraft:piglin_brute`.
10173///
10174/// # Metadata
10175///
10176/// This entity type does not add any additional metadata. It will still have
10177/// metadata from parent types.
10178///
10179/// # Parents
10180///
10181/// Entities with `PiglinBrute` will also have the following marker components
10182/// and their metadata fields:
10183///
10184/// - [AbstractPiglin]
10185/// - [AbstractMonster]
10186/// - [AbstractCreature]
10187/// - [AbstractInsentient]
10188/// - [AbstractLiving]
10189/// - [AbstractEntity]
10190///
10191/// # Children
10192///
10193/// This entity type has no children types.
10194#[derive(Component)]
10195pub struct PiglinBrute;
10196impl PiglinBrute {
10197    fn apply_metadata(
10198        entity: &mut bevy_ecs::system::EntityCommands,
10199        d: EntityDataItem,
10200    ) -> Result<(), UpdateMetadataError> {
10201        match d.index {
10202            0..=16 => AbstractPiglin::apply_metadata(entity, d)?,
10203            _ => {}
10204        }
10205        Ok(())
10206    }
10207}
10208
10209/// The metadata bundle for [PiglinBrute].
10210///
10211/// This type should generally not be used directly.
10212#[derive(Bundle)]
10213pub struct PiglinBruteMetadataBundle {
10214    _marker: PiglinBrute,
10215    parent: AbstractPiglinMetadataBundle,
10216}
10217impl Default for PiglinBruteMetadataBundle {
10218    fn default() -> Self {
10219        Self {
10220            _marker: PiglinBrute,
10221            parent: Default::default(),
10222        }
10223    }
10224}
10225
10226/// A metadata field for [AbstractRaider].
10227#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10228pub struct IsCelebrating(pub bool);
10229/// An abstract entity marker component.
10230///
10231/// # Metadata
10232///
10233/// These are the metadata components that all `AbstractRaider` entities are
10234/// guaranteed to have, in addition to the metadata components from parent
10235/// types:
10236///
10237/// - [IsCelebrating]
10238///
10239/// # Parents
10240///
10241/// Entities with `AbstractRaider` will also have the following marker
10242/// components and their metadata fields:
10243///
10244/// - [AbstractMonster]
10245/// - [AbstractCreature]
10246/// - [AbstractInsentient]
10247/// - [AbstractLiving]
10248/// - [AbstractEntity]
10249///
10250/// # Children
10251///
10252/// - [Pillager]
10253/// - [Ravager]
10254/// - [Vindicator]
10255/// - [Witch]
10256/// - [AbstractSpellcasterIllager]
10257///   - [Evoker]
10258///   - [Illusioner]
10259#[derive(Component)]
10260pub struct AbstractRaider;
10261impl AbstractRaider {
10262    fn apply_metadata(
10263        entity: &mut bevy_ecs::system::EntityCommands,
10264        d: EntityDataItem,
10265    ) -> Result<(), UpdateMetadataError> {
10266        match d.index {
10267            0..=15 => AbstractMonster::apply_metadata(entity, d)?,
10268            16 => {
10269                entity.insert(IsCelebrating(d.value.into_boolean()?));
10270            }
10271            _ => {}
10272        }
10273        Ok(())
10274    }
10275}
10276
10277/// The metadata bundle for [AbstractRaider].
10278///
10279/// This type should generally not be used directly.
10280#[derive(Bundle)]
10281pub struct AbstractRaiderMetadataBundle {
10282    _marker: AbstractRaider,
10283    parent: AbstractMonsterMetadataBundle,
10284    is_celebrating: IsCelebrating,
10285}
10286impl Default for AbstractRaiderMetadataBundle {
10287    fn default() -> Self {
10288        Self {
10289            _marker: AbstractRaider,
10290            parent: Default::default(),
10291            is_celebrating: IsCelebrating(false),
10292        }
10293    }
10294}
10295
10296/// A metadata field for [Pillager].
10297#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10298pub struct PillagerIsChargingCrossbow(pub bool);
10299/// The marker component for entities of type `minecraft:pillager`.
10300///
10301/// # Metadata
10302///
10303/// These are the metadata components that all `Pillager` entities are
10304/// guaranteed to have, in addition to the metadata components from parent
10305/// types:
10306///
10307/// - [PillagerIsChargingCrossbow]
10308///
10309/// # Parents
10310///
10311/// Entities with `Pillager` will also have the following marker components and
10312/// their metadata fields:
10313///
10314/// - [AbstractRaider]
10315/// - [AbstractMonster]
10316/// - [AbstractCreature]
10317/// - [AbstractInsentient]
10318/// - [AbstractLiving]
10319/// - [AbstractEntity]
10320///
10321/// # Children
10322///
10323/// This entity type has no children types.
10324#[derive(Component)]
10325pub struct Pillager;
10326impl Pillager {
10327    fn apply_metadata(
10328        entity: &mut bevy_ecs::system::EntityCommands,
10329        d: EntityDataItem,
10330    ) -> Result<(), UpdateMetadataError> {
10331        match d.index {
10332            0..=16 => AbstractRaider::apply_metadata(entity, d)?,
10333            17 => {
10334                entity.insert(PillagerIsChargingCrossbow(d.value.into_boolean()?));
10335            }
10336            _ => {}
10337        }
10338        Ok(())
10339    }
10340}
10341
10342/// The metadata bundle for [Pillager].
10343///
10344/// This type should generally not be used directly.
10345#[derive(Bundle)]
10346pub struct PillagerMetadataBundle {
10347    _marker: Pillager,
10348    parent: AbstractRaiderMetadataBundle,
10349    pillager_is_charging_crossbow: PillagerIsChargingCrossbow,
10350}
10351impl Default for PillagerMetadataBundle {
10352    fn default() -> Self {
10353        Self {
10354            _marker: Pillager,
10355            parent: Default::default(),
10356            pillager_is_charging_crossbow: PillagerIsChargingCrossbow(false),
10357        }
10358    }
10359}
10360
10361/// The marker component for entities of type `minecraft:ravager`.
10362///
10363/// # Metadata
10364///
10365/// This entity type does not add any additional metadata. It will still have
10366/// metadata from parent types.
10367///
10368/// # Parents
10369///
10370/// Entities with `Ravager` will also have the following marker components and
10371/// their metadata fields:
10372///
10373/// - [AbstractRaider]
10374/// - [AbstractMonster]
10375/// - [AbstractCreature]
10376/// - [AbstractInsentient]
10377/// - [AbstractLiving]
10378/// - [AbstractEntity]
10379///
10380/// # Children
10381///
10382/// This entity type has no children types.
10383#[derive(Component)]
10384pub struct Ravager;
10385impl Ravager {
10386    fn apply_metadata(
10387        entity: &mut bevy_ecs::system::EntityCommands,
10388        d: EntityDataItem,
10389    ) -> Result<(), UpdateMetadataError> {
10390        match d.index {
10391            0..=16 => AbstractRaider::apply_metadata(entity, d)?,
10392            _ => {}
10393        }
10394        Ok(())
10395    }
10396}
10397
10398/// The metadata bundle for [Ravager].
10399///
10400/// This type should generally not be used directly.
10401#[derive(Bundle)]
10402pub struct RavagerMetadataBundle {
10403    _marker: Ravager,
10404    parent: AbstractRaiderMetadataBundle,
10405}
10406impl Default for RavagerMetadataBundle {
10407    fn default() -> Self {
10408        Self {
10409            _marker: Ravager,
10410            parent: Default::default(),
10411        }
10412    }
10413}
10414
10415/// The marker component for entities of type `minecraft:vindicator`.
10416///
10417/// # Metadata
10418///
10419/// This entity type does not add any additional metadata. It will still have
10420/// metadata from parent types.
10421///
10422/// # Parents
10423///
10424/// Entities with `Vindicator` will also have the following marker components
10425/// and their metadata fields:
10426///
10427/// - [AbstractRaider]
10428/// - [AbstractMonster]
10429/// - [AbstractCreature]
10430/// - [AbstractInsentient]
10431/// - [AbstractLiving]
10432/// - [AbstractEntity]
10433///
10434/// # Children
10435///
10436/// This entity type has no children types.
10437#[derive(Component)]
10438pub struct Vindicator;
10439impl Vindicator {
10440    fn apply_metadata(
10441        entity: &mut bevy_ecs::system::EntityCommands,
10442        d: EntityDataItem,
10443    ) -> Result<(), UpdateMetadataError> {
10444        match d.index {
10445            0..=16 => AbstractRaider::apply_metadata(entity, d)?,
10446            _ => {}
10447        }
10448        Ok(())
10449    }
10450}
10451
10452/// The metadata bundle for [Vindicator].
10453///
10454/// This type should generally not be used directly.
10455#[derive(Bundle)]
10456pub struct VindicatorMetadataBundle {
10457    _marker: Vindicator,
10458    parent: AbstractRaiderMetadataBundle,
10459}
10460impl Default for VindicatorMetadataBundle {
10461    fn default() -> Self {
10462        Self {
10463            _marker: Vindicator,
10464            parent: Default::default(),
10465        }
10466    }
10467}
10468
10469/// A metadata field for [Witch].
10470#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10471pub struct WitchUsingItem(pub bool);
10472/// The marker component for entities of type `minecraft:witch`.
10473///
10474/// # Metadata
10475///
10476/// These are the metadata components that all `Witch` entities are guaranteed
10477/// to have, in addition to the metadata components from parent types:
10478///
10479/// - [WitchUsingItem]
10480///
10481/// # Parents
10482///
10483/// Entities with `Witch` will also have the following marker components and
10484/// their metadata fields:
10485///
10486/// - [AbstractRaider]
10487/// - [AbstractMonster]
10488/// - [AbstractCreature]
10489/// - [AbstractInsentient]
10490/// - [AbstractLiving]
10491/// - [AbstractEntity]
10492///
10493/// # Children
10494///
10495/// This entity type has no children types.
10496#[derive(Component)]
10497pub struct Witch;
10498impl Witch {
10499    fn apply_metadata(
10500        entity: &mut bevy_ecs::system::EntityCommands,
10501        d: EntityDataItem,
10502    ) -> Result<(), UpdateMetadataError> {
10503        match d.index {
10504            0..=16 => AbstractRaider::apply_metadata(entity, d)?,
10505            17 => {
10506                entity.insert(WitchUsingItem(d.value.into_boolean()?));
10507            }
10508            _ => {}
10509        }
10510        Ok(())
10511    }
10512}
10513
10514/// The metadata bundle for [Witch].
10515///
10516/// This type should generally not be used directly.
10517#[derive(Bundle)]
10518pub struct WitchMetadataBundle {
10519    _marker: Witch,
10520    parent: AbstractRaiderMetadataBundle,
10521    witch_using_item: WitchUsingItem,
10522}
10523impl Default for WitchMetadataBundle {
10524    fn default() -> Self {
10525        Self {
10526            _marker: Witch,
10527            parent: Default::default(),
10528            witch_using_item: WitchUsingItem(false),
10529        }
10530    }
10531}
10532
10533/// A metadata field for [AbstractSpellcasterIllager].
10534#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10535pub struct SpellCasting(pub u8);
10536/// An abstract entity marker component.
10537///
10538/// # Metadata
10539///
10540/// These are the metadata components that all `AbstractSpellcasterIllager`
10541/// entities are guaranteed to have, in addition to the metadata components from
10542/// parent types:
10543///
10544/// - [SpellCasting]
10545///
10546/// # Parents
10547///
10548/// Entities with `AbstractSpellcasterIllager` will also have the following
10549/// marker components and their metadata fields:
10550///
10551/// - [AbstractRaider]
10552/// - [AbstractMonster]
10553/// - [AbstractCreature]
10554/// - [AbstractInsentient]
10555/// - [AbstractLiving]
10556/// - [AbstractEntity]
10557///
10558/// # Children
10559///
10560/// - [Evoker]
10561/// - [Illusioner]
10562#[derive(Component)]
10563pub struct AbstractSpellcasterIllager;
10564impl AbstractSpellcasterIllager {
10565    fn apply_metadata(
10566        entity: &mut bevy_ecs::system::EntityCommands,
10567        d: EntityDataItem,
10568    ) -> Result<(), UpdateMetadataError> {
10569        match d.index {
10570            0..=16 => AbstractRaider::apply_metadata(entity, d)?,
10571            17 => {
10572                entity.insert(SpellCasting(d.value.into_byte()?));
10573            }
10574            _ => {}
10575        }
10576        Ok(())
10577    }
10578}
10579
10580/// The metadata bundle for [AbstractSpellcasterIllager].
10581///
10582/// This type should generally not be used directly.
10583#[derive(Bundle)]
10584pub struct AbstractSpellcasterIllagerMetadataBundle {
10585    _marker: AbstractSpellcasterIllager,
10586    parent: AbstractRaiderMetadataBundle,
10587    spell_casting: SpellCasting,
10588}
10589impl Default for AbstractSpellcasterIllagerMetadataBundle {
10590    fn default() -> Self {
10591        Self {
10592            _marker: AbstractSpellcasterIllager,
10593            parent: Default::default(),
10594            spell_casting: SpellCasting(0),
10595        }
10596    }
10597}
10598
10599/// The marker component for entities of type `minecraft:evoker`.
10600///
10601/// # Metadata
10602///
10603/// This entity type does not add any additional metadata. It will still have
10604/// metadata from parent types.
10605///
10606/// # Parents
10607///
10608/// Entities with `Evoker` will also have the following marker components and
10609/// their metadata fields:
10610///
10611/// - [AbstractSpellcasterIllager]
10612/// - [AbstractRaider]
10613/// - [AbstractMonster]
10614/// - [AbstractCreature]
10615/// - [AbstractInsentient]
10616/// - [AbstractLiving]
10617/// - [AbstractEntity]
10618///
10619/// # Children
10620///
10621/// This entity type has no children types.
10622#[derive(Component)]
10623pub struct Evoker;
10624impl Evoker {
10625    fn apply_metadata(
10626        entity: &mut bevy_ecs::system::EntityCommands,
10627        d: EntityDataItem,
10628    ) -> Result<(), UpdateMetadataError> {
10629        match d.index {
10630            0..=17 => AbstractSpellcasterIllager::apply_metadata(entity, d)?,
10631            _ => {}
10632        }
10633        Ok(())
10634    }
10635}
10636
10637/// The metadata bundle for [Evoker].
10638///
10639/// This type should generally not be used directly.
10640#[derive(Bundle)]
10641pub struct EvokerMetadataBundle {
10642    _marker: Evoker,
10643    parent: AbstractSpellcasterIllagerMetadataBundle,
10644}
10645impl Default for EvokerMetadataBundle {
10646    fn default() -> Self {
10647        Self {
10648            _marker: Evoker,
10649            parent: Default::default(),
10650        }
10651    }
10652}
10653
10654/// The marker component for entities of type `minecraft:illusioner`.
10655///
10656/// # Metadata
10657///
10658/// This entity type does not add any additional metadata. It will still have
10659/// metadata from parent types.
10660///
10661/// # Parents
10662///
10663/// Entities with `Illusioner` will also have the following marker components
10664/// and their metadata fields:
10665///
10666/// - [AbstractSpellcasterIllager]
10667/// - [AbstractRaider]
10668/// - [AbstractMonster]
10669/// - [AbstractCreature]
10670/// - [AbstractInsentient]
10671/// - [AbstractLiving]
10672/// - [AbstractEntity]
10673///
10674/// # Children
10675///
10676/// This entity type has no children types.
10677#[derive(Component)]
10678pub struct Illusioner;
10679impl Illusioner {
10680    fn apply_metadata(
10681        entity: &mut bevy_ecs::system::EntityCommands,
10682        d: EntityDataItem,
10683    ) -> Result<(), UpdateMetadataError> {
10684        match d.index {
10685            0..=17 => AbstractSpellcasterIllager::apply_metadata(entity, d)?,
10686            _ => {}
10687        }
10688        Ok(())
10689    }
10690}
10691
10692/// The metadata bundle for [Illusioner].
10693///
10694/// This type should generally not be used directly.
10695#[derive(Bundle)]
10696pub struct IllusionerMetadataBundle {
10697    _marker: Illusioner,
10698    parent: AbstractSpellcasterIllagerMetadataBundle,
10699}
10700impl Default for IllusionerMetadataBundle {
10701    fn default() -> Self {
10702        Self {
10703            _marker: Illusioner,
10704            parent: Default::default(),
10705        }
10706    }
10707}
10708
10709/// A metadata field for [AbstractThrownItemProjectile].
10710#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
10711pub struct AbstractThrownItemProjectileItemStack(pub ItemStack);
10712/// An abstract entity marker component.
10713///
10714/// # Metadata
10715///
10716/// These are the metadata components that all `AbstractThrownItemProjectile`
10717/// entities are guaranteed to have, in addition to the metadata components from
10718/// parent types:
10719///
10720/// - [AbstractThrownItemProjectileItemStack]
10721///
10722/// # Parents
10723///
10724/// Entities with `AbstractThrownItemProjectile` will also have the following
10725/// marker components and their metadata fields:
10726///
10727/// - [AbstractEntity]
10728///
10729/// # Children
10730///
10731/// - [Egg]
10732/// - [EnderPearl]
10733/// - [ExperienceBottle]
10734/// - [LingeringPotion]
10735/// - [Snowball]
10736/// - [SplashPotion]
10737#[derive(Component)]
10738pub struct AbstractThrownItemProjectile;
10739impl AbstractThrownItemProjectile {
10740    fn apply_metadata(
10741        entity: &mut bevy_ecs::system::EntityCommands,
10742        d: EntityDataItem,
10743    ) -> Result<(), UpdateMetadataError> {
10744        match d.index {
10745            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
10746            8 => {
10747                entity.insert(AbstractThrownItemProjectileItemStack(
10748                    d.value.into_item_stack()?,
10749                ));
10750            }
10751            _ => {}
10752        }
10753        Ok(())
10754    }
10755}
10756
10757/// The metadata bundle for [AbstractThrownItemProjectile].
10758///
10759/// This type should generally not be used directly.
10760#[derive(Bundle)]
10761pub struct AbstractThrownItemProjectileMetadataBundle {
10762    _marker: AbstractThrownItemProjectile,
10763    parent: AbstractEntityMetadataBundle,
10764    abstract_thrown_item_projectile_item_stack: AbstractThrownItemProjectileItemStack,
10765}
10766impl Default for AbstractThrownItemProjectileMetadataBundle {
10767    fn default() -> Self {
10768        Self {
10769            _marker: AbstractThrownItemProjectile,
10770            parent: Default::default(),
10771            abstract_thrown_item_projectile_item_stack: AbstractThrownItemProjectileItemStack(
10772                Default::default(),
10773            ),
10774        }
10775    }
10776}
10777
10778/// The marker component for entities of type `minecraft:egg`.
10779///
10780/// # Metadata
10781///
10782/// This entity type does not add any additional metadata. It will still have
10783/// metadata from parent types.
10784///
10785/// # Parents
10786///
10787/// Entities with `Egg` will also have the following marker components and their
10788/// metadata fields:
10789///
10790/// - [AbstractThrownItemProjectile]
10791/// - [AbstractEntity]
10792///
10793/// # Children
10794///
10795/// This entity type has no children types.
10796#[derive(Component)]
10797pub struct Egg;
10798impl Egg {
10799    fn apply_metadata(
10800        entity: &mut bevy_ecs::system::EntityCommands,
10801        d: EntityDataItem,
10802    ) -> Result<(), UpdateMetadataError> {
10803        match d.index {
10804            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
10805            _ => {}
10806        }
10807        Ok(())
10808    }
10809}
10810
10811/// The metadata bundle for [Egg].
10812///
10813/// This type should generally not be used directly.
10814#[derive(Bundle)]
10815pub struct EggMetadataBundle {
10816    _marker: Egg,
10817    parent: AbstractThrownItemProjectileMetadataBundle,
10818}
10819impl Default for EggMetadataBundle {
10820    fn default() -> Self {
10821        Self {
10822            _marker: Egg,
10823            parent: Default::default(),
10824        }
10825    }
10826}
10827
10828/// The marker component for entities of type `minecraft:ender_pearl`.
10829///
10830/// # Metadata
10831///
10832/// This entity type does not add any additional metadata. It will still have
10833/// metadata from parent types.
10834///
10835/// # Parents
10836///
10837/// Entities with `EnderPearl` will also have the following marker components
10838/// and their metadata fields:
10839///
10840/// - [AbstractThrownItemProjectile]
10841/// - [AbstractEntity]
10842///
10843/// # Children
10844///
10845/// This entity type has no children types.
10846#[derive(Component)]
10847pub struct EnderPearl;
10848impl EnderPearl {
10849    fn apply_metadata(
10850        entity: &mut bevy_ecs::system::EntityCommands,
10851        d: EntityDataItem,
10852    ) -> Result<(), UpdateMetadataError> {
10853        match d.index {
10854            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
10855            _ => {}
10856        }
10857        Ok(())
10858    }
10859}
10860
10861/// The metadata bundle for [EnderPearl].
10862///
10863/// This type should generally not be used directly.
10864#[derive(Bundle)]
10865pub struct EnderPearlMetadataBundle {
10866    _marker: EnderPearl,
10867    parent: AbstractThrownItemProjectileMetadataBundle,
10868}
10869impl Default for EnderPearlMetadataBundle {
10870    fn default() -> Self {
10871        Self {
10872            _marker: EnderPearl,
10873            parent: Default::default(),
10874        }
10875    }
10876}
10877
10878/// The marker component for entities of type `minecraft:experience_bottle`.
10879///
10880/// # Metadata
10881///
10882/// This entity type does not add any additional metadata. It will still have
10883/// metadata from parent types.
10884///
10885/// # Parents
10886///
10887/// Entities with `ExperienceBottle` will also have the following marker
10888/// components and their metadata fields:
10889///
10890/// - [AbstractThrownItemProjectile]
10891/// - [AbstractEntity]
10892///
10893/// # Children
10894///
10895/// This entity type has no children types.
10896#[derive(Component)]
10897pub struct ExperienceBottle;
10898impl ExperienceBottle {
10899    fn apply_metadata(
10900        entity: &mut bevy_ecs::system::EntityCommands,
10901        d: EntityDataItem,
10902    ) -> Result<(), UpdateMetadataError> {
10903        match d.index {
10904            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
10905            _ => {}
10906        }
10907        Ok(())
10908    }
10909}
10910
10911/// The metadata bundle for [ExperienceBottle].
10912///
10913/// This type should generally not be used directly.
10914#[derive(Bundle)]
10915pub struct ExperienceBottleMetadataBundle {
10916    _marker: ExperienceBottle,
10917    parent: AbstractThrownItemProjectileMetadataBundle,
10918}
10919impl Default for ExperienceBottleMetadataBundle {
10920    fn default() -> Self {
10921        Self {
10922            _marker: ExperienceBottle,
10923            parent: Default::default(),
10924        }
10925    }
10926}
10927
10928/// The marker component for entities of type `minecraft:lingering_potion`.
10929///
10930/// # Metadata
10931///
10932/// This entity type does not add any additional metadata. It will still have
10933/// metadata from parent types.
10934///
10935/// # Parents
10936///
10937/// Entities with `LingeringPotion` will also have the following marker
10938/// components and their metadata fields:
10939///
10940/// - [AbstractThrownItemProjectile]
10941/// - [AbstractEntity]
10942///
10943/// # Children
10944///
10945/// This entity type has no children types.
10946#[derive(Component)]
10947pub struct LingeringPotion;
10948impl LingeringPotion {
10949    fn apply_metadata(
10950        entity: &mut bevy_ecs::system::EntityCommands,
10951        d: EntityDataItem,
10952    ) -> Result<(), UpdateMetadataError> {
10953        match d.index {
10954            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
10955            _ => {}
10956        }
10957        Ok(())
10958    }
10959}
10960
10961/// The metadata bundle for [LingeringPotion].
10962///
10963/// This type should generally not be used directly.
10964#[derive(Bundle)]
10965pub struct LingeringPotionMetadataBundle {
10966    _marker: LingeringPotion,
10967    parent: AbstractThrownItemProjectileMetadataBundle,
10968}
10969impl Default for LingeringPotionMetadataBundle {
10970    fn default() -> Self {
10971        Self {
10972            _marker: LingeringPotion,
10973            parent: Default::default(),
10974        }
10975    }
10976}
10977
10978/// The marker component for entities of type `minecraft:snowball`.
10979///
10980/// # Metadata
10981///
10982/// This entity type does not add any additional metadata. It will still have
10983/// metadata from parent types.
10984///
10985/// # Parents
10986///
10987/// Entities with `Snowball` will also have the following marker components and
10988/// their metadata fields:
10989///
10990/// - [AbstractThrownItemProjectile]
10991/// - [AbstractEntity]
10992///
10993/// # Children
10994///
10995/// This entity type has no children types.
10996#[derive(Component)]
10997pub struct Snowball;
10998impl Snowball {
10999    fn apply_metadata(
11000        entity: &mut bevy_ecs::system::EntityCommands,
11001        d: EntityDataItem,
11002    ) -> Result<(), UpdateMetadataError> {
11003        match d.index {
11004            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
11005            _ => {}
11006        }
11007        Ok(())
11008    }
11009}
11010
11011/// The metadata bundle for [Snowball].
11012///
11013/// This type should generally not be used directly.
11014#[derive(Bundle)]
11015pub struct SnowballMetadataBundle {
11016    _marker: Snowball,
11017    parent: AbstractThrownItemProjectileMetadataBundle,
11018}
11019impl Default for SnowballMetadataBundle {
11020    fn default() -> Self {
11021        Self {
11022            _marker: Snowball,
11023            parent: Default::default(),
11024        }
11025    }
11026}
11027
11028/// The marker component for entities of type `minecraft:splash_potion`.
11029///
11030/// # Metadata
11031///
11032/// This entity type does not add any additional metadata. It will still have
11033/// metadata from parent types.
11034///
11035/// # Parents
11036///
11037/// Entities with `SplashPotion` will also have the following marker components
11038/// and their metadata fields:
11039///
11040/// - [AbstractThrownItemProjectile]
11041/// - [AbstractEntity]
11042///
11043/// # Children
11044///
11045/// This entity type has no children types.
11046#[derive(Component)]
11047pub struct SplashPotion;
11048impl SplashPotion {
11049    fn apply_metadata(
11050        entity: &mut bevy_ecs::system::EntityCommands,
11051        d: EntityDataItem,
11052    ) -> Result<(), UpdateMetadataError> {
11053        match d.index {
11054            0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
11055            _ => {}
11056        }
11057        Ok(())
11058    }
11059}
11060
11061/// The metadata bundle for [SplashPotion].
11062///
11063/// This type should generally not be used directly.
11064#[derive(Bundle)]
11065pub struct SplashPotionMetadataBundle {
11066    _marker: SplashPotion,
11067    parent: AbstractThrownItemProjectileMetadataBundle,
11068}
11069impl Default for SplashPotionMetadataBundle {
11070    fn default() -> Self {
11071        Self {
11072            _marker: SplashPotion,
11073            parent: Default::default(),
11074        }
11075    }
11076}
11077
11078/// A metadata field for [AbstractVehicle].
11079#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11080pub struct Hurt(pub i32);
11081/// A metadata field for [AbstractVehicle].
11082#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11083pub struct Hurtdir(pub i32);
11084/// A metadata field for [AbstractVehicle].
11085#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11086pub struct Damage(pub f32);
11087/// An abstract entity marker component.
11088///
11089/// # Metadata
11090///
11091/// These are the metadata components that all `AbstractVehicle` entities are
11092/// guaranteed to have, in addition to the metadata components from parent
11093/// types:
11094///
11095/// - [Hurt]
11096/// - [Hurtdir]
11097/// - [Damage]
11098///
11099/// # Parents
11100///
11101/// Entities with `AbstractVehicle` will also have the following marker
11102/// components and their metadata fields:
11103///
11104/// - [AbstractEntity]
11105///
11106/// # Children
11107///
11108/// - [AbstractBoat]
11109///   - [AcaciaBoat]
11110///   - [AcaciaChestBoat]
11111///   - [BambooChestRaft]
11112///   - [BambooRaft]
11113///   - [BirchBoat]
11114///   - [BirchChestBoat]
11115///   - [CherryBoat]
11116///   - [CherryChestBoat]
11117///   - [DarkOakBoat]
11118///   - [DarkOakChestBoat]
11119///   - [JungleBoat]
11120///   - [JungleChestBoat]
11121///   - [MangroveBoat]
11122///   - [MangroveChestBoat]
11123///   - [OakBoat]
11124///   - [OakChestBoat]
11125///   - [PaleOakBoat]
11126///   - [PaleOakChestBoat]
11127///   - [SpruceBoat]
11128///   - [SpruceChestBoat]
11129/// - [AbstractMinecart]
11130///   - [ChestMinecart]
11131///   - [CommandBlockMinecart]
11132///   - [FurnaceMinecart]
11133///   - [HopperMinecart]
11134///   - [Minecart]
11135///   - [SpawnerMinecart]
11136///   - [TntMinecart]
11137#[derive(Component)]
11138pub struct AbstractVehicle;
11139impl AbstractVehicle {
11140    fn apply_metadata(
11141        entity: &mut bevy_ecs::system::EntityCommands,
11142        d: EntityDataItem,
11143    ) -> Result<(), UpdateMetadataError> {
11144        match d.index {
11145            0..=7 => AbstractEntity::apply_metadata(entity, d)?,
11146            8 => {
11147                entity.insert(Hurt(d.value.into_int()?));
11148            }
11149            9 => {
11150                entity.insert(Hurtdir(d.value.into_int()?));
11151            }
11152            10 => {
11153                entity.insert(Damage(d.value.into_float()?));
11154            }
11155            _ => {}
11156        }
11157        Ok(())
11158    }
11159}
11160
11161/// The metadata bundle for [AbstractVehicle].
11162///
11163/// This type should generally not be used directly.
11164#[derive(Bundle)]
11165pub struct AbstractVehicleMetadataBundle {
11166    _marker: AbstractVehicle,
11167    parent: AbstractEntityMetadataBundle,
11168    hurt: Hurt,
11169    hurtdir: Hurtdir,
11170    damage: Damage,
11171}
11172impl Default for AbstractVehicleMetadataBundle {
11173    fn default() -> Self {
11174        Self {
11175            _marker: AbstractVehicle,
11176            parent: Default::default(),
11177            hurt: Hurt(0),
11178            hurtdir: Hurtdir(1),
11179            damage: Damage(0.0),
11180        }
11181    }
11182}
11183
11184/// A metadata field for [AbstractBoat].
11185#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11186pub struct PaddleLeft(pub bool);
11187/// A metadata field for [AbstractBoat].
11188#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11189pub struct PaddleRight(pub bool);
11190/// A metadata field for [AbstractBoat].
11191#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
11192pub struct BubbleTime(pub i32);
11193/// An abstract entity marker component.
11194///
11195/// # Metadata
11196///
11197/// These are the metadata components that all `AbstractBoat` entities are
11198/// guaranteed to have, in addition to the metadata components from parent
11199/// types:
11200///
11201/// - [PaddleLeft]
11202/// - [PaddleRight]
11203/// - [BubbleTime]
11204///
11205/// # Parents
11206///
11207/// Entities with `AbstractBoat` will also have the following marker components
11208/// and their metadata fields:
11209///
11210/// - [AbstractVehicle]
11211/// - [AbstractEntity]
11212///
11213/// # Children
11214///
11215/// - [AcaciaBoat]
11216/// - [AcaciaChestBoat]
11217/// - [BambooChestRaft]
11218/// - [BambooRaft]
11219/// - [BirchBoat]
11220/// - [BirchChestBoat]
11221/// - [CherryBoat]
11222/// - [CherryChestBoat]
11223/// - [DarkOakBoat]
11224/// - [DarkOakChestBoat]
11225/// - [JungleBoat]
11226/// - [JungleChestBoat]
11227/// - [MangroveBoat]
11228/// - [MangroveChestBoat]
11229/// - [OakBoat]
11230/// - [OakChestBoat]
11231/// - [PaleOakBoat]
11232/// - [PaleOakChestBoat]
11233/// - [SpruceBoat]
11234/// - [SpruceChestBoat]
11235#[derive(Component)]
11236pub struct AbstractBoat;
11237impl AbstractBoat {
11238    fn apply_metadata(
11239        entity: &mut bevy_ecs::system::EntityCommands,
11240        d: EntityDataItem,
11241    ) -> Result<(), UpdateMetadataError> {
11242        match d.index {
11243            0..=10 => AbstractVehicle::apply_metadata(entity, d)?,
11244            11 => {
11245                entity.insert(PaddleLeft(d.value.into_boolean()?));
11246            }
11247            12 => {
11248                entity.insert(PaddleRight(d.value.into_boolean()?));
11249            }
11250            13 => {
11251                entity.insert(BubbleTime(d.value.into_int()?));
11252            }
11253            _ => {}
11254        }
11255        Ok(())
11256    }
11257}
11258
11259/// The metadata bundle for [AbstractBoat].
11260///
11261/// This type should generally not be used directly.
11262#[derive(Bundle)]
11263pub struct AbstractBoatMetadataBundle {
11264    _marker: AbstractBoat,
11265    parent: AbstractVehicleMetadataBundle,
11266    paddle_left: PaddleLeft,
11267    paddle_right: PaddleRight,
11268    bubble_time: BubbleTime,
11269}
11270impl Default for AbstractBoatMetadataBundle {
11271    fn default() -> Self {
11272        Self {
11273            _marker: AbstractBoat,
11274            parent: Default::default(),
11275            paddle_left: PaddleLeft(false),
11276            paddle_right: PaddleRight(false),
11277            bubble_time: BubbleTime(0),
11278        }
11279    }
11280}
11281
11282/// The marker component for entities of type `minecraft:acacia_boat`.
11283///
11284/// # Metadata
11285///
11286/// This entity type does not add any additional metadata. It will still have
11287/// metadata from parent types.
11288///
11289/// # Parents
11290///
11291/// Entities with `AcaciaBoat` will also have the following marker components
11292/// and their metadata fields:
11293///
11294/// - [AbstractBoat]
11295/// - [AbstractVehicle]
11296/// - [AbstractEntity]
11297///
11298/// # Children
11299///
11300/// This entity type has no children types.
11301#[derive(Component)]
11302pub struct AcaciaBoat;
11303impl AcaciaBoat {
11304    fn apply_metadata(
11305        entity: &mut bevy_ecs::system::EntityCommands,
11306        d: EntityDataItem,
11307    ) -> Result<(), UpdateMetadataError> {
11308        match d.index {
11309            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11310            _ => {}
11311        }
11312        Ok(())
11313    }
11314}
11315
11316/// The metadata bundle for [AcaciaBoat].
11317///
11318/// This type should generally not be used directly.
11319#[derive(Bundle)]
11320pub struct AcaciaBoatMetadataBundle {
11321    _marker: AcaciaBoat,
11322    parent: AbstractBoatMetadataBundle,
11323}
11324impl Default for AcaciaBoatMetadataBundle {
11325    fn default() -> Self {
11326        Self {
11327            _marker: AcaciaBoat,
11328            parent: Default::default(),
11329        }
11330    }
11331}
11332
11333/// The marker component for entities of type `minecraft:acacia_chest_boat`.
11334///
11335/// # Metadata
11336///
11337/// This entity type does not add any additional metadata. It will still have
11338/// metadata from parent types.
11339///
11340/// # Parents
11341///
11342/// Entities with `AcaciaChestBoat` will also have the following marker
11343/// components and their metadata fields:
11344///
11345/// - [AbstractBoat]
11346/// - [AbstractVehicle]
11347/// - [AbstractEntity]
11348///
11349/// # Children
11350///
11351/// This entity type has no children types.
11352#[derive(Component)]
11353pub struct AcaciaChestBoat;
11354impl AcaciaChestBoat {
11355    fn apply_metadata(
11356        entity: &mut bevy_ecs::system::EntityCommands,
11357        d: EntityDataItem,
11358    ) -> Result<(), UpdateMetadataError> {
11359        match d.index {
11360            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11361            _ => {}
11362        }
11363        Ok(())
11364    }
11365}
11366
11367/// The metadata bundle for [AcaciaChestBoat].
11368///
11369/// This type should generally not be used directly.
11370#[derive(Bundle)]
11371pub struct AcaciaChestBoatMetadataBundle {
11372    _marker: AcaciaChestBoat,
11373    parent: AbstractBoatMetadataBundle,
11374}
11375impl Default for AcaciaChestBoatMetadataBundle {
11376    fn default() -> Self {
11377        Self {
11378            _marker: AcaciaChestBoat,
11379            parent: Default::default(),
11380        }
11381    }
11382}
11383
11384/// The marker component for entities of type `minecraft:bamboo_chest_raft`.
11385///
11386/// # Metadata
11387///
11388/// This entity type does not add any additional metadata. It will still have
11389/// metadata from parent types.
11390///
11391/// # Parents
11392///
11393/// Entities with `BambooChestRaft` will also have the following marker
11394/// components and their metadata fields:
11395///
11396/// - [AbstractBoat]
11397/// - [AbstractVehicle]
11398/// - [AbstractEntity]
11399///
11400/// # Children
11401///
11402/// This entity type has no children types.
11403#[derive(Component)]
11404pub struct BambooChestRaft;
11405impl BambooChestRaft {
11406    fn apply_metadata(
11407        entity: &mut bevy_ecs::system::EntityCommands,
11408        d: EntityDataItem,
11409    ) -> Result<(), UpdateMetadataError> {
11410        match d.index {
11411            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11412            _ => {}
11413        }
11414        Ok(())
11415    }
11416}
11417
11418/// The metadata bundle for [BambooChestRaft].
11419///
11420/// This type should generally not be used directly.
11421#[derive(Bundle)]
11422pub struct BambooChestRaftMetadataBundle {
11423    _marker: BambooChestRaft,
11424    parent: AbstractBoatMetadataBundle,
11425}
11426impl Default for BambooChestRaftMetadataBundle {
11427    fn default() -> Self {
11428        Self {
11429            _marker: BambooChestRaft,
11430            parent: Default::default(),
11431        }
11432    }
11433}
11434
11435/// The marker component for entities of type `minecraft:bamboo_raft`.
11436///
11437/// # Metadata
11438///
11439/// This entity type does not add any additional metadata. It will still have
11440/// metadata from parent types.
11441///
11442/// # Parents
11443///
11444/// Entities with `BambooRaft` will also have the following marker components
11445/// and their metadata fields:
11446///
11447/// - [AbstractBoat]
11448/// - [AbstractVehicle]
11449/// - [AbstractEntity]
11450///
11451/// # Children
11452///
11453/// This entity type has no children types.
11454#[derive(Component)]
11455pub struct BambooRaft;
11456impl BambooRaft {
11457    fn apply_metadata(
11458        entity: &mut bevy_ecs::system::EntityCommands,
11459        d: EntityDataItem,
11460    ) -> Result<(), UpdateMetadataError> {
11461        match d.index {
11462            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11463            _ => {}
11464        }
11465        Ok(())
11466    }
11467}
11468
11469/// The metadata bundle for [BambooRaft].
11470///
11471/// This type should generally not be used directly.
11472#[derive(Bundle)]
11473pub struct BambooRaftMetadataBundle {
11474    _marker: BambooRaft,
11475    parent: AbstractBoatMetadataBundle,
11476}
11477impl Default for BambooRaftMetadataBundle {
11478    fn default() -> Self {
11479        Self {
11480            _marker: BambooRaft,
11481            parent: Default::default(),
11482        }
11483    }
11484}
11485
11486/// The marker component for entities of type `minecraft:birch_boat`.
11487///
11488/// # Metadata
11489///
11490/// This entity type does not add any additional metadata. It will still have
11491/// metadata from parent types.
11492///
11493/// # Parents
11494///
11495/// Entities with `BirchBoat` will also have the following marker components and
11496/// their metadata fields:
11497///
11498/// - [AbstractBoat]
11499/// - [AbstractVehicle]
11500/// - [AbstractEntity]
11501///
11502/// # Children
11503///
11504/// This entity type has no children types.
11505#[derive(Component)]
11506pub struct BirchBoat;
11507impl BirchBoat {
11508    fn apply_metadata(
11509        entity: &mut bevy_ecs::system::EntityCommands,
11510        d: EntityDataItem,
11511    ) -> Result<(), UpdateMetadataError> {
11512        match d.index {
11513            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11514            _ => {}
11515        }
11516        Ok(())
11517    }
11518}
11519
11520/// The metadata bundle for [BirchBoat].
11521///
11522/// This type should generally not be used directly.
11523#[derive(Bundle)]
11524pub struct BirchBoatMetadataBundle {
11525    _marker: BirchBoat,
11526    parent: AbstractBoatMetadataBundle,
11527}
11528impl Default for BirchBoatMetadataBundle {
11529    fn default() -> Self {
11530        Self {
11531            _marker: BirchBoat,
11532            parent: Default::default(),
11533        }
11534    }
11535}
11536
11537/// The marker component for entities of type `minecraft:birch_chest_boat`.
11538///
11539/// # Metadata
11540///
11541/// This entity type does not add any additional metadata. It will still have
11542/// metadata from parent types.
11543///
11544/// # Parents
11545///
11546/// Entities with `BirchChestBoat` will also have the following marker
11547/// components and their metadata fields:
11548///
11549/// - [AbstractBoat]
11550/// - [AbstractVehicle]
11551/// - [AbstractEntity]
11552///
11553/// # Children
11554///
11555/// This entity type has no children types.
11556#[derive(Component)]
11557pub struct BirchChestBoat;
11558impl BirchChestBoat {
11559    fn apply_metadata(
11560        entity: &mut bevy_ecs::system::EntityCommands,
11561        d: EntityDataItem,
11562    ) -> Result<(), UpdateMetadataError> {
11563        match d.index {
11564            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11565            _ => {}
11566        }
11567        Ok(())
11568    }
11569}
11570
11571/// The metadata bundle for [BirchChestBoat].
11572///
11573/// This type should generally not be used directly.
11574#[derive(Bundle)]
11575pub struct BirchChestBoatMetadataBundle {
11576    _marker: BirchChestBoat,
11577    parent: AbstractBoatMetadataBundle,
11578}
11579impl Default for BirchChestBoatMetadataBundle {
11580    fn default() -> Self {
11581        Self {
11582            _marker: BirchChestBoat,
11583            parent: Default::default(),
11584        }
11585    }
11586}
11587
11588/// The marker component for entities of type `minecraft:cherry_boat`.
11589///
11590/// # Metadata
11591///
11592/// This entity type does not add any additional metadata. It will still have
11593/// metadata from parent types.
11594///
11595/// # Parents
11596///
11597/// Entities with `CherryBoat` will also have the following marker components
11598/// and their metadata fields:
11599///
11600/// - [AbstractBoat]
11601/// - [AbstractVehicle]
11602/// - [AbstractEntity]
11603///
11604/// # Children
11605///
11606/// This entity type has no children types.
11607#[derive(Component)]
11608pub struct CherryBoat;
11609impl CherryBoat {
11610    fn apply_metadata(
11611        entity: &mut bevy_ecs::system::EntityCommands,
11612        d: EntityDataItem,
11613    ) -> Result<(), UpdateMetadataError> {
11614        match d.index {
11615            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11616            _ => {}
11617        }
11618        Ok(())
11619    }
11620}
11621
11622/// The metadata bundle for [CherryBoat].
11623///
11624/// This type should generally not be used directly.
11625#[derive(Bundle)]
11626pub struct CherryBoatMetadataBundle {
11627    _marker: CherryBoat,
11628    parent: AbstractBoatMetadataBundle,
11629}
11630impl Default for CherryBoatMetadataBundle {
11631    fn default() -> Self {
11632        Self {
11633            _marker: CherryBoat,
11634            parent: Default::default(),
11635        }
11636    }
11637}
11638
11639/// The marker component for entities of type `minecraft:cherry_chest_boat`.
11640///
11641/// # Metadata
11642///
11643/// This entity type does not add any additional metadata. It will still have
11644/// metadata from parent types.
11645///
11646/// # Parents
11647///
11648/// Entities with `CherryChestBoat` will also have the following marker
11649/// components and their metadata fields:
11650///
11651/// - [AbstractBoat]
11652/// - [AbstractVehicle]
11653/// - [AbstractEntity]
11654///
11655/// # Children
11656///
11657/// This entity type has no children types.
11658#[derive(Component)]
11659pub struct CherryChestBoat;
11660impl CherryChestBoat {
11661    fn apply_metadata(
11662        entity: &mut bevy_ecs::system::EntityCommands,
11663        d: EntityDataItem,
11664    ) -> Result<(), UpdateMetadataError> {
11665        match d.index {
11666            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11667            _ => {}
11668        }
11669        Ok(())
11670    }
11671}
11672
11673/// The metadata bundle for [CherryChestBoat].
11674///
11675/// This type should generally not be used directly.
11676#[derive(Bundle)]
11677pub struct CherryChestBoatMetadataBundle {
11678    _marker: CherryChestBoat,
11679    parent: AbstractBoatMetadataBundle,
11680}
11681impl Default for CherryChestBoatMetadataBundle {
11682    fn default() -> Self {
11683        Self {
11684            _marker: CherryChestBoat,
11685            parent: Default::default(),
11686        }
11687    }
11688}
11689
11690/// The marker component for entities of type `minecraft:dark_oak_boat`.
11691///
11692/// # Metadata
11693///
11694/// This entity type does not add any additional metadata. It will still have
11695/// metadata from parent types.
11696///
11697/// # Parents
11698///
11699/// Entities with `DarkOakBoat` will also have the following marker components
11700/// and their metadata fields:
11701///
11702/// - [AbstractBoat]
11703/// - [AbstractVehicle]
11704/// - [AbstractEntity]
11705///
11706/// # Children
11707///
11708/// This entity type has no children types.
11709#[derive(Component)]
11710pub struct DarkOakBoat;
11711impl DarkOakBoat {
11712    fn apply_metadata(
11713        entity: &mut bevy_ecs::system::EntityCommands,
11714        d: EntityDataItem,
11715    ) -> Result<(), UpdateMetadataError> {
11716        match d.index {
11717            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11718            _ => {}
11719        }
11720        Ok(())
11721    }
11722}
11723
11724/// The metadata bundle for [DarkOakBoat].
11725///
11726/// This type should generally not be used directly.
11727#[derive(Bundle)]
11728pub struct DarkOakBoatMetadataBundle {
11729    _marker: DarkOakBoat,
11730    parent: AbstractBoatMetadataBundle,
11731}
11732impl Default for DarkOakBoatMetadataBundle {
11733    fn default() -> Self {
11734        Self {
11735            _marker: DarkOakBoat,
11736            parent: Default::default(),
11737        }
11738    }
11739}
11740
11741/// The marker component for entities of type `minecraft:dark_oak_chest_boat`.
11742///
11743/// # Metadata
11744///
11745/// This entity type does not add any additional metadata. It will still have
11746/// metadata from parent types.
11747///
11748/// # Parents
11749///
11750/// Entities with `DarkOakChestBoat` will also have the following marker
11751/// components and their metadata fields:
11752///
11753/// - [AbstractBoat]
11754/// - [AbstractVehicle]
11755/// - [AbstractEntity]
11756///
11757/// # Children
11758///
11759/// This entity type has no children types.
11760#[derive(Component)]
11761pub struct DarkOakChestBoat;
11762impl DarkOakChestBoat {
11763    fn apply_metadata(
11764        entity: &mut bevy_ecs::system::EntityCommands,
11765        d: EntityDataItem,
11766    ) -> Result<(), UpdateMetadataError> {
11767        match d.index {
11768            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11769            _ => {}
11770        }
11771        Ok(())
11772    }
11773}
11774
11775/// The metadata bundle for [DarkOakChestBoat].
11776///
11777/// This type should generally not be used directly.
11778#[derive(Bundle)]
11779pub struct DarkOakChestBoatMetadataBundle {
11780    _marker: DarkOakChestBoat,
11781    parent: AbstractBoatMetadataBundle,
11782}
11783impl Default for DarkOakChestBoatMetadataBundle {
11784    fn default() -> Self {
11785        Self {
11786            _marker: DarkOakChestBoat,
11787            parent: Default::default(),
11788        }
11789    }
11790}
11791
11792/// The marker component for entities of type `minecraft:jungle_boat`.
11793///
11794/// # Metadata
11795///
11796/// This entity type does not add any additional metadata. It will still have
11797/// metadata from parent types.
11798///
11799/// # Parents
11800///
11801/// Entities with `JungleBoat` will also have the following marker components
11802/// and their metadata fields:
11803///
11804/// - [AbstractBoat]
11805/// - [AbstractVehicle]
11806/// - [AbstractEntity]
11807///
11808/// # Children
11809///
11810/// This entity type has no children types.
11811#[derive(Component)]
11812pub struct JungleBoat;
11813impl JungleBoat {
11814    fn apply_metadata(
11815        entity: &mut bevy_ecs::system::EntityCommands,
11816        d: EntityDataItem,
11817    ) -> Result<(), UpdateMetadataError> {
11818        match d.index {
11819            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11820            _ => {}
11821        }
11822        Ok(())
11823    }
11824}
11825
11826/// The metadata bundle for [JungleBoat].
11827///
11828/// This type should generally not be used directly.
11829#[derive(Bundle)]
11830pub struct JungleBoatMetadataBundle {
11831    _marker: JungleBoat,
11832    parent: AbstractBoatMetadataBundle,
11833}
11834impl Default for JungleBoatMetadataBundle {
11835    fn default() -> Self {
11836        Self {
11837            _marker: JungleBoat,
11838            parent: Default::default(),
11839        }
11840    }
11841}
11842
11843/// The marker component for entities of type `minecraft:jungle_chest_boat`.
11844///
11845/// # Metadata
11846///
11847/// This entity type does not add any additional metadata. It will still have
11848/// metadata from parent types.
11849///
11850/// # Parents
11851///
11852/// Entities with `JungleChestBoat` will also have the following marker
11853/// components and their metadata fields:
11854///
11855/// - [AbstractBoat]
11856/// - [AbstractVehicle]
11857/// - [AbstractEntity]
11858///
11859/// # Children
11860///
11861/// This entity type has no children types.
11862#[derive(Component)]
11863pub struct JungleChestBoat;
11864impl JungleChestBoat {
11865    fn apply_metadata(
11866        entity: &mut bevy_ecs::system::EntityCommands,
11867        d: EntityDataItem,
11868    ) -> Result<(), UpdateMetadataError> {
11869        match d.index {
11870            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11871            _ => {}
11872        }
11873        Ok(())
11874    }
11875}
11876
11877/// The metadata bundle for [JungleChestBoat].
11878///
11879/// This type should generally not be used directly.
11880#[derive(Bundle)]
11881pub struct JungleChestBoatMetadataBundle {
11882    _marker: JungleChestBoat,
11883    parent: AbstractBoatMetadataBundle,
11884}
11885impl Default for JungleChestBoatMetadataBundle {
11886    fn default() -> Self {
11887        Self {
11888            _marker: JungleChestBoat,
11889            parent: Default::default(),
11890        }
11891    }
11892}
11893
11894/// The marker component for entities of type `minecraft:mangrove_boat`.
11895///
11896/// # Metadata
11897///
11898/// This entity type does not add any additional metadata. It will still have
11899/// metadata from parent types.
11900///
11901/// # Parents
11902///
11903/// Entities with `MangroveBoat` will also have the following marker components
11904/// and their metadata fields:
11905///
11906/// - [AbstractBoat]
11907/// - [AbstractVehicle]
11908/// - [AbstractEntity]
11909///
11910/// # Children
11911///
11912/// This entity type has no children types.
11913#[derive(Component)]
11914pub struct MangroveBoat;
11915impl MangroveBoat {
11916    fn apply_metadata(
11917        entity: &mut bevy_ecs::system::EntityCommands,
11918        d: EntityDataItem,
11919    ) -> Result<(), UpdateMetadataError> {
11920        match d.index {
11921            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11922            _ => {}
11923        }
11924        Ok(())
11925    }
11926}
11927
11928/// The metadata bundle for [MangroveBoat].
11929///
11930/// This type should generally not be used directly.
11931#[derive(Bundle)]
11932pub struct MangroveBoatMetadataBundle {
11933    _marker: MangroveBoat,
11934    parent: AbstractBoatMetadataBundle,
11935}
11936impl Default for MangroveBoatMetadataBundle {
11937    fn default() -> Self {
11938        Self {
11939            _marker: MangroveBoat,
11940            parent: Default::default(),
11941        }
11942    }
11943}
11944
11945/// The marker component for entities of type `minecraft:mangrove_chest_boat`.
11946///
11947/// # Metadata
11948///
11949/// This entity type does not add any additional metadata. It will still have
11950/// metadata from parent types.
11951///
11952/// # Parents
11953///
11954/// Entities with `MangroveChestBoat` will also have the following marker
11955/// components and their metadata fields:
11956///
11957/// - [AbstractBoat]
11958/// - [AbstractVehicle]
11959/// - [AbstractEntity]
11960///
11961/// # Children
11962///
11963/// This entity type has no children types.
11964#[derive(Component)]
11965pub struct MangroveChestBoat;
11966impl MangroveChestBoat {
11967    fn apply_metadata(
11968        entity: &mut bevy_ecs::system::EntityCommands,
11969        d: EntityDataItem,
11970    ) -> Result<(), UpdateMetadataError> {
11971        match d.index {
11972            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
11973            _ => {}
11974        }
11975        Ok(())
11976    }
11977}
11978
11979/// The metadata bundle for [MangroveChestBoat].
11980///
11981/// This type should generally not be used directly.
11982#[derive(Bundle)]
11983pub struct MangroveChestBoatMetadataBundle {
11984    _marker: MangroveChestBoat,
11985    parent: AbstractBoatMetadataBundle,
11986}
11987impl Default for MangroveChestBoatMetadataBundle {
11988    fn default() -> Self {
11989        Self {
11990            _marker: MangroveChestBoat,
11991            parent: Default::default(),
11992        }
11993    }
11994}
11995
11996/// The marker component for entities of type `minecraft:oak_boat`.
11997///
11998/// # Metadata
11999///
12000/// This entity type does not add any additional metadata. It will still have
12001/// metadata from parent types.
12002///
12003/// # Parents
12004///
12005/// Entities with `OakBoat` will also have the following marker components and
12006/// their metadata fields:
12007///
12008/// - [AbstractBoat]
12009/// - [AbstractVehicle]
12010/// - [AbstractEntity]
12011///
12012/// # Children
12013///
12014/// This entity type has no children types.
12015#[derive(Component)]
12016pub struct OakBoat;
12017impl OakBoat {
12018    fn apply_metadata(
12019        entity: &mut bevy_ecs::system::EntityCommands,
12020        d: EntityDataItem,
12021    ) -> Result<(), UpdateMetadataError> {
12022        match d.index {
12023            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12024            _ => {}
12025        }
12026        Ok(())
12027    }
12028}
12029
12030/// The metadata bundle for [OakBoat].
12031///
12032/// This type should generally not be used directly.
12033#[derive(Bundle)]
12034pub struct OakBoatMetadataBundle {
12035    _marker: OakBoat,
12036    parent: AbstractBoatMetadataBundle,
12037}
12038impl Default for OakBoatMetadataBundle {
12039    fn default() -> Self {
12040        Self {
12041            _marker: OakBoat,
12042            parent: Default::default(),
12043        }
12044    }
12045}
12046
12047/// The marker component for entities of type `minecraft:oak_chest_boat`.
12048///
12049/// # Metadata
12050///
12051/// This entity type does not add any additional metadata. It will still have
12052/// metadata from parent types.
12053///
12054/// # Parents
12055///
12056/// Entities with `OakChestBoat` will also have the following marker components
12057/// and their metadata fields:
12058///
12059/// - [AbstractBoat]
12060/// - [AbstractVehicle]
12061/// - [AbstractEntity]
12062///
12063/// # Children
12064///
12065/// This entity type has no children types.
12066#[derive(Component)]
12067pub struct OakChestBoat;
12068impl OakChestBoat {
12069    fn apply_metadata(
12070        entity: &mut bevy_ecs::system::EntityCommands,
12071        d: EntityDataItem,
12072    ) -> Result<(), UpdateMetadataError> {
12073        match d.index {
12074            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12075            _ => {}
12076        }
12077        Ok(())
12078    }
12079}
12080
12081/// The metadata bundle for [OakChestBoat].
12082///
12083/// This type should generally not be used directly.
12084#[derive(Bundle)]
12085pub struct OakChestBoatMetadataBundle {
12086    _marker: OakChestBoat,
12087    parent: AbstractBoatMetadataBundle,
12088}
12089impl Default for OakChestBoatMetadataBundle {
12090    fn default() -> Self {
12091        Self {
12092            _marker: OakChestBoat,
12093            parent: Default::default(),
12094        }
12095    }
12096}
12097
12098/// The marker component for entities of type `minecraft:pale_oak_boat`.
12099///
12100/// # Metadata
12101///
12102/// This entity type does not add any additional metadata. It will still have
12103/// metadata from parent types.
12104///
12105/// # Parents
12106///
12107/// Entities with `PaleOakBoat` will also have the following marker components
12108/// and their metadata fields:
12109///
12110/// - [AbstractBoat]
12111/// - [AbstractVehicle]
12112/// - [AbstractEntity]
12113///
12114/// # Children
12115///
12116/// This entity type has no children types.
12117#[derive(Component)]
12118pub struct PaleOakBoat;
12119impl PaleOakBoat {
12120    fn apply_metadata(
12121        entity: &mut bevy_ecs::system::EntityCommands,
12122        d: EntityDataItem,
12123    ) -> Result<(), UpdateMetadataError> {
12124        match d.index {
12125            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12126            _ => {}
12127        }
12128        Ok(())
12129    }
12130}
12131
12132/// The metadata bundle for [PaleOakBoat].
12133///
12134/// This type should generally not be used directly.
12135#[derive(Bundle)]
12136pub struct PaleOakBoatMetadataBundle {
12137    _marker: PaleOakBoat,
12138    parent: AbstractBoatMetadataBundle,
12139}
12140impl Default for PaleOakBoatMetadataBundle {
12141    fn default() -> Self {
12142        Self {
12143            _marker: PaleOakBoat,
12144            parent: Default::default(),
12145        }
12146    }
12147}
12148
12149/// The marker component for entities of type `minecraft:pale_oak_chest_boat`.
12150///
12151/// # Metadata
12152///
12153/// This entity type does not add any additional metadata. It will still have
12154/// metadata from parent types.
12155///
12156/// # Parents
12157///
12158/// Entities with `PaleOakChestBoat` will also have the following marker
12159/// components and their metadata fields:
12160///
12161/// - [AbstractBoat]
12162/// - [AbstractVehicle]
12163/// - [AbstractEntity]
12164///
12165/// # Children
12166///
12167/// This entity type has no children types.
12168#[derive(Component)]
12169pub struct PaleOakChestBoat;
12170impl PaleOakChestBoat {
12171    fn apply_metadata(
12172        entity: &mut bevy_ecs::system::EntityCommands,
12173        d: EntityDataItem,
12174    ) -> Result<(), UpdateMetadataError> {
12175        match d.index {
12176            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12177            _ => {}
12178        }
12179        Ok(())
12180    }
12181}
12182
12183/// The metadata bundle for [PaleOakChestBoat].
12184///
12185/// This type should generally not be used directly.
12186#[derive(Bundle)]
12187pub struct PaleOakChestBoatMetadataBundle {
12188    _marker: PaleOakChestBoat,
12189    parent: AbstractBoatMetadataBundle,
12190}
12191impl Default for PaleOakChestBoatMetadataBundle {
12192    fn default() -> Self {
12193        Self {
12194            _marker: PaleOakChestBoat,
12195            parent: Default::default(),
12196        }
12197    }
12198}
12199
12200/// The marker component for entities of type `minecraft:spruce_boat`.
12201///
12202/// # Metadata
12203///
12204/// This entity type does not add any additional metadata. It will still have
12205/// metadata from parent types.
12206///
12207/// # Parents
12208///
12209/// Entities with `SpruceBoat` will also have the following marker components
12210/// and their metadata fields:
12211///
12212/// - [AbstractBoat]
12213/// - [AbstractVehicle]
12214/// - [AbstractEntity]
12215///
12216/// # Children
12217///
12218/// This entity type has no children types.
12219#[derive(Component)]
12220pub struct SpruceBoat;
12221impl SpruceBoat {
12222    fn apply_metadata(
12223        entity: &mut bevy_ecs::system::EntityCommands,
12224        d: EntityDataItem,
12225    ) -> Result<(), UpdateMetadataError> {
12226        match d.index {
12227            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12228            _ => {}
12229        }
12230        Ok(())
12231    }
12232}
12233
12234/// The metadata bundle for [SpruceBoat].
12235///
12236/// This type should generally not be used directly.
12237#[derive(Bundle)]
12238pub struct SpruceBoatMetadataBundle {
12239    _marker: SpruceBoat,
12240    parent: AbstractBoatMetadataBundle,
12241}
12242impl Default for SpruceBoatMetadataBundle {
12243    fn default() -> Self {
12244        Self {
12245            _marker: SpruceBoat,
12246            parent: Default::default(),
12247        }
12248    }
12249}
12250
12251/// The marker component for entities of type `minecraft:spruce_chest_boat`.
12252///
12253/// # Metadata
12254///
12255/// This entity type does not add any additional metadata. It will still have
12256/// metadata from parent types.
12257///
12258/// # Parents
12259///
12260/// Entities with `SpruceChestBoat` will also have the following marker
12261/// components and their metadata fields:
12262///
12263/// - [AbstractBoat]
12264/// - [AbstractVehicle]
12265/// - [AbstractEntity]
12266///
12267/// # Children
12268///
12269/// This entity type has no children types.
12270#[derive(Component)]
12271pub struct SpruceChestBoat;
12272impl SpruceChestBoat {
12273    fn apply_metadata(
12274        entity: &mut bevy_ecs::system::EntityCommands,
12275        d: EntityDataItem,
12276    ) -> Result<(), UpdateMetadataError> {
12277        match d.index {
12278            0..=13 => AbstractBoat::apply_metadata(entity, d)?,
12279            _ => {}
12280        }
12281        Ok(())
12282    }
12283}
12284
12285/// The metadata bundle for [SpruceChestBoat].
12286///
12287/// This type should generally not be used directly.
12288#[derive(Bundle)]
12289pub struct SpruceChestBoatMetadataBundle {
12290    _marker: SpruceChestBoat,
12291    parent: AbstractBoatMetadataBundle,
12292}
12293impl Default for SpruceChestBoatMetadataBundle {
12294    fn default() -> Self {
12295        Self {
12296            _marker: SpruceChestBoat,
12297            parent: Default::default(),
12298        }
12299    }
12300}
12301
12302/// A metadata field for [AbstractMinecart].
12303#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
12304pub struct CustomDisplayBlock(pub azalea_block::BlockState);
12305/// A metadata field for [AbstractMinecart].
12306#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
12307pub struct DisplayOffset(pub i32);
12308/// An abstract entity marker component.
12309///
12310/// # Metadata
12311///
12312/// These are the metadata components that all `AbstractMinecart` entities are
12313/// guaranteed to have, in addition to the metadata components from parent
12314/// types:
12315///
12316/// - [CustomDisplayBlock]
12317/// - [DisplayOffset]
12318///
12319/// # Parents
12320///
12321/// Entities with `AbstractMinecart` will also have the following marker
12322/// components and their metadata fields:
12323///
12324/// - [AbstractVehicle]
12325/// - [AbstractEntity]
12326///
12327/// # Children
12328///
12329/// - [ChestMinecart]
12330/// - [CommandBlockMinecart]
12331/// - [FurnaceMinecart]
12332/// - [HopperMinecart]
12333/// - [Minecart]
12334/// - [SpawnerMinecart]
12335/// - [TntMinecart]
12336#[derive(Component)]
12337pub struct AbstractMinecart;
12338impl AbstractMinecart {
12339    fn apply_metadata(
12340        entity: &mut bevy_ecs::system::EntityCommands,
12341        d: EntityDataItem,
12342    ) -> Result<(), UpdateMetadataError> {
12343        match d.index {
12344            0..=10 => AbstractVehicle::apply_metadata(entity, d)?,
12345            11 => {
12346                entity.insert(CustomDisplayBlock(d.value.into_optional_block_state()?));
12347            }
12348            12 => {
12349                entity.insert(DisplayOffset(d.value.into_int()?));
12350            }
12351            _ => {}
12352        }
12353        Ok(())
12354    }
12355}
12356
12357/// The metadata bundle for [AbstractMinecart].
12358///
12359/// This type should generally not be used directly.
12360#[derive(Bundle)]
12361pub struct AbstractMinecartMetadataBundle {
12362    _marker: AbstractMinecart,
12363    parent: AbstractVehicleMetadataBundle,
12364    custom_display_block: CustomDisplayBlock,
12365    display_offset: DisplayOffset,
12366}
12367impl Default for AbstractMinecartMetadataBundle {
12368    fn default() -> Self {
12369        Self {
12370            _marker: AbstractMinecart,
12371            parent: Default::default(),
12372            custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
12373            display_offset: DisplayOffset(Default::default()),
12374        }
12375    }
12376}
12377
12378/// The marker component for entities of type `minecraft:chest_minecart`.
12379///
12380/// # Metadata
12381///
12382/// This entity type does not add any additional metadata. It will still have
12383/// metadata from parent types.
12384///
12385/// # Parents
12386///
12387/// Entities with `ChestMinecart` will also have the following marker components
12388/// and their metadata fields:
12389///
12390/// - [AbstractMinecart]
12391/// - [AbstractVehicle]
12392/// - [AbstractEntity]
12393///
12394/// # Children
12395///
12396/// This entity type has no children types.
12397#[derive(Component)]
12398pub struct ChestMinecart;
12399impl ChestMinecart {
12400    fn apply_metadata(
12401        entity: &mut bevy_ecs::system::EntityCommands,
12402        d: EntityDataItem,
12403    ) -> Result<(), UpdateMetadataError> {
12404        match d.index {
12405            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12406            _ => {}
12407        }
12408        Ok(())
12409    }
12410}
12411
12412/// The metadata bundle for [ChestMinecart].
12413///
12414/// This type should generally not be used directly.
12415#[derive(Bundle)]
12416pub struct ChestMinecartMetadataBundle {
12417    _marker: ChestMinecart,
12418    parent: AbstractMinecartMetadataBundle,
12419}
12420impl Default for ChestMinecartMetadataBundle {
12421    fn default() -> Self {
12422        Self {
12423            _marker: ChestMinecart,
12424            parent: Default::default(),
12425        }
12426    }
12427}
12428
12429/// A metadata field for [CommandBlockMinecart].
12430#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
12431pub struct CommandName(pub Box<str>);
12432/// A metadata field for [CommandBlockMinecart].
12433#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
12434pub struct LastOutput(pub Box<FormattedText>);
12435/// The marker component for entities of type
12436/// `minecraft:command_block_minecart`.
12437///
12438/// # Metadata
12439///
12440/// These are the metadata components that all `CommandBlockMinecart` entities
12441/// are guaranteed to have, in addition to the metadata components from parent
12442/// types:
12443///
12444/// - [CommandName]
12445/// - [LastOutput]
12446///
12447/// # Parents
12448///
12449/// Entities with `CommandBlockMinecart` will also have the following marker
12450/// components and their metadata fields:
12451///
12452/// - [AbstractMinecart]
12453/// - [AbstractVehicle]
12454/// - [AbstractEntity]
12455///
12456/// # Children
12457///
12458/// This entity type has no children types.
12459#[derive(Component)]
12460pub struct CommandBlockMinecart;
12461impl CommandBlockMinecart {
12462    fn apply_metadata(
12463        entity: &mut bevy_ecs::system::EntityCommands,
12464        d: EntityDataItem,
12465    ) -> Result<(), UpdateMetadataError> {
12466        match d.index {
12467            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12468            13 => {
12469                entity.insert(CommandName(d.value.into_string()?));
12470            }
12471            14 => {
12472                entity.insert(LastOutput(d.value.into_formatted_text()?));
12473            }
12474            _ => {}
12475        }
12476        Ok(())
12477    }
12478}
12479
12480/// The metadata bundle for [CommandBlockMinecart].
12481///
12482/// This type should generally not be used directly.
12483#[derive(Bundle)]
12484pub struct CommandBlockMinecartMetadataBundle {
12485    _marker: CommandBlockMinecart,
12486    parent: AbstractMinecartMetadataBundle,
12487    command_name: CommandName,
12488    last_output: LastOutput,
12489}
12490impl Default for CommandBlockMinecartMetadataBundle {
12491    fn default() -> Self {
12492        Self {
12493            _marker: CommandBlockMinecart,
12494            parent: Default::default(),
12495            command_name: CommandName("".into()),
12496            last_output: LastOutput(Default::default()),
12497        }
12498    }
12499}
12500
12501/// A metadata field for [FurnaceMinecart].
12502#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
12503pub struct Fuel(pub bool);
12504/// The marker component for entities of type `minecraft:furnace_minecart`.
12505///
12506/// # Metadata
12507///
12508/// These are the metadata components that all `FurnaceMinecart` entities are
12509/// guaranteed to have, in addition to the metadata components from parent
12510/// types:
12511///
12512/// - [Fuel]
12513///
12514/// # Parents
12515///
12516/// Entities with `FurnaceMinecart` will also have the following marker
12517/// components and their metadata fields:
12518///
12519/// - [AbstractMinecart]
12520/// - [AbstractVehicle]
12521/// - [AbstractEntity]
12522///
12523/// # Children
12524///
12525/// This entity type has no children types.
12526#[derive(Component)]
12527pub struct FurnaceMinecart;
12528impl FurnaceMinecart {
12529    fn apply_metadata(
12530        entity: &mut bevy_ecs::system::EntityCommands,
12531        d: EntityDataItem,
12532    ) -> Result<(), UpdateMetadataError> {
12533        match d.index {
12534            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12535            13 => {
12536                entity.insert(Fuel(d.value.into_boolean()?));
12537            }
12538            _ => {}
12539        }
12540        Ok(())
12541    }
12542}
12543
12544/// The metadata bundle for [FurnaceMinecart].
12545///
12546/// This type should generally not be used directly.
12547#[derive(Bundle)]
12548pub struct FurnaceMinecartMetadataBundle {
12549    _marker: FurnaceMinecart,
12550    parent: AbstractMinecartMetadataBundle,
12551    fuel: Fuel,
12552}
12553impl Default for FurnaceMinecartMetadataBundle {
12554    fn default() -> Self {
12555        Self {
12556            _marker: FurnaceMinecart,
12557            parent: Default::default(),
12558            fuel: Fuel(false),
12559        }
12560    }
12561}
12562
12563/// The marker component for entities of type `minecraft:hopper_minecart`.
12564///
12565/// # Metadata
12566///
12567/// This entity type does not add any additional metadata. It will still have
12568/// metadata from parent types.
12569///
12570/// # Parents
12571///
12572/// Entities with `HopperMinecart` will also have the following marker
12573/// components and their metadata fields:
12574///
12575/// - [AbstractMinecart]
12576/// - [AbstractVehicle]
12577/// - [AbstractEntity]
12578///
12579/// # Children
12580///
12581/// This entity type has no children types.
12582#[derive(Component)]
12583pub struct HopperMinecart;
12584impl HopperMinecart {
12585    fn apply_metadata(
12586        entity: &mut bevy_ecs::system::EntityCommands,
12587        d: EntityDataItem,
12588    ) -> Result<(), UpdateMetadataError> {
12589        match d.index {
12590            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12591            _ => {}
12592        }
12593        Ok(())
12594    }
12595}
12596
12597/// The metadata bundle for [HopperMinecart].
12598///
12599/// This type should generally not be used directly.
12600#[derive(Bundle)]
12601pub struct HopperMinecartMetadataBundle {
12602    _marker: HopperMinecart,
12603    parent: AbstractMinecartMetadataBundle,
12604}
12605impl Default for HopperMinecartMetadataBundle {
12606    fn default() -> Self {
12607        Self {
12608            _marker: HopperMinecart,
12609            parent: Default::default(),
12610        }
12611    }
12612}
12613
12614/// The marker component for entities of type `minecraft:minecart`.
12615///
12616/// # Metadata
12617///
12618/// This entity type does not add any additional metadata. It will still have
12619/// metadata from parent types.
12620///
12621/// # Parents
12622///
12623/// Entities with `Minecart` will also have the following marker components and
12624/// their metadata fields:
12625///
12626/// - [AbstractMinecart]
12627/// - [AbstractVehicle]
12628/// - [AbstractEntity]
12629///
12630/// # Children
12631///
12632/// This entity type has no children types.
12633#[derive(Component)]
12634pub struct Minecart;
12635impl Minecart {
12636    fn apply_metadata(
12637        entity: &mut bevy_ecs::system::EntityCommands,
12638        d: EntityDataItem,
12639    ) -> Result<(), UpdateMetadataError> {
12640        match d.index {
12641            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12642            _ => {}
12643        }
12644        Ok(())
12645    }
12646}
12647
12648/// The metadata bundle for [Minecart].
12649///
12650/// This type should generally not be used directly.
12651#[derive(Bundle)]
12652pub struct MinecartMetadataBundle {
12653    _marker: Minecart,
12654    parent: AbstractMinecartMetadataBundle,
12655}
12656impl Default for MinecartMetadataBundle {
12657    fn default() -> Self {
12658        Self {
12659            _marker: Minecart,
12660            parent: Default::default(),
12661        }
12662    }
12663}
12664
12665/// The marker component for entities of type `minecraft:spawner_minecart`.
12666///
12667/// # Metadata
12668///
12669/// This entity type does not add any additional metadata. It will still have
12670/// metadata from parent types.
12671///
12672/// # Parents
12673///
12674/// Entities with `SpawnerMinecart` will also have the following marker
12675/// components and their metadata fields:
12676///
12677/// - [AbstractMinecart]
12678/// - [AbstractVehicle]
12679/// - [AbstractEntity]
12680///
12681/// # Children
12682///
12683/// This entity type has no children types.
12684#[derive(Component)]
12685pub struct SpawnerMinecart;
12686impl SpawnerMinecart {
12687    fn apply_metadata(
12688        entity: &mut bevy_ecs::system::EntityCommands,
12689        d: EntityDataItem,
12690    ) -> Result<(), UpdateMetadataError> {
12691        match d.index {
12692            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12693            _ => {}
12694        }
12695        Ok(())
12696    }
12697}
12698
12699/// The metadata bundle for [SpawnerMinecart].
12700///
12701/// This type should generally not be used directly.
12702#[derive(Bundle)]
12703pub struct SpawnerMinecartMetadataBundle {
12704    _marker: SpawnerMinecart,
12705    parent: AbstractMinecartMetadataBundle,
12706}
12707impl Default for SpawnerMinecartMetadataBundle {
12708    fn default() -> Self {
12709        Self {
12710            _marker: SpawnerMinecart,
12711            parent: Default::default(),
12712        }
12713    }
12714}
12715
12716/// The marker component for entities of type `minecraft:tnt_minecart`.
12717///
12718/// # Metadata
12719///
12720/// This entity type does not add any additional metadata. It will still have
12721/// metadata from parent types.
12722///
12723/// # Parents
12724///
12725/// Entities with `TntMinecart` will also have the following marker components
12726/// and their metadata fields:
12727///
12728/// - [AbstractMinecart]
12729/// - [AbstractVehicle]
12730/// - [AbstractEntity]
12731///
12732/// # Children
12733///
12734/// This entity type has no children types.
12735#[derive(Component)]
12736pub struct TntMinecart;
12737impl TntMinecart {
12738    fn apply_metadata(
12739        entity: &mut bevy_ecs::system::EntityCommands,
12740        d: EntityDataItem,
12741    ) -> Result<(), UpdateMetadataError> {
12742        match d.index {
12743            0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
12744            _ => {}
12745        }
12746        Ok(())
12747    }
12748}
12749
12750/// The metadata bundle for [TntMinecart].
12751///
12752/// This type should generally not be used directly.
12753#[derive(Bundle)]
12754pub struct TntMinecartMetadataBundle {
12755    _marker: TntMinecart,
12756    parent: AbstractMinecartMetadataBundle,
12757}
12758impl Default for TntMinecartMetadataBundle {
12759    fn default() -> Self {
12760        Self {
12761            _marker: TntMinecart,
12762            parent: Default::default(),
12763        }
12764    }
12765}
12766
12767pub fn apply_metadata(
12768    entity: &mut bevy_ecs::system::EntityCommands,
12769    entity_kind: EntityKind,
12770    items: Vec<EntityDataItem>,
12771) -> Result<(), UpdateMetadataError> {
12772    match entity_kind {
12773        EntityKind::AcaciaBoat => {
12774            for d in items {
12775                AcaciaBoat::apply_metadata(entity, d)?;
12776            }
12777        }
12778        EntityKind::AcaciaChestBoat => {
12779            for d in items {
12780                AcaciaChestBoat::apply_metadata(entity, d)?;
12781            }
12782        }
12783        EntityKind::Allay => {
12784            for d in items {
12785                Allay::apply_metadata(entity, d)?;
12786            }
12787        }
12788        EntityKind::AreaEffectCloud => {
12789            for d in items {
12790                AreaEffectCloud::apply_metadata(entity, d)?;
12791            }
12792        }
12793        EntityKind::Armadillo => {
12794            for d in items {
12795                Armadillo::apply_metadata(entity, d)?;
12796            }
12797        }
12798        EntityKind::ArmorStand => {
12799            for d in items {
12800                ArmorStand::apply_metadata(entity, d)?;
12801            }
12802        }
12803        EntityKind::Arrow => {
12804            for d in items {
12805                Arrow::apply_metadata(entity, d)?;
12806            }
12807        }
12808        EntityKind::Axolotl => {
12809            for d in items {
12810                Axolotl::apply_metadata(entity, d)?;
12811            }
12812        }
12813        EntityKind::BambooChestRaft => {
12814            for d in items {
12815                BambooChestRaft::apply_metadata(entity, d)?;
12816            }
12817        }
12818        EntityKind::BambooRaft => {
12819            for d in items {
12820                BambooRaft::apply_metadata(entity, d)?;
12821            }
12822        }
12823        EntityKind::Bat => {
12824            for d in items {
12825                Bat::apply_metadata(entity, d)?;
12826            }
12827        }
12828        EntityKind::Bee => {
12829            for d in items {
12830                Bee::apply_metadata(entity, d)?;
12831            }
12832        }
12833        EntityKind::BirchBoat => {
12834            for d in items {
12835                BirchBoat::apply_metadata(entity, d)?;
12836            }
12837        }
12838        EntityKind::BirchChestBoat => {
12839            for d in items {
12840                BirchChestBoat::apply_metadata(entity, d)?;
12841            }
12842        }
12843        EntityKind::Blaze => {
12844            for d in items {
12845                Blaze::apply_metadata(entity, d)?;
12846            }
12847        }
12848        EntityKind::BlockDisplay => {
12849            for d in items {
12850                BlockDisplay::apply_metadata(entity, d)?;
12851            }
12852        }
12853        EntityKind::Bogged => {
12854            for d in items {
12855                Bogged::apply_metadata(entity, d)?;
12856            }
12857        }
12858        EntityKind::Breeze => {
12859            for d in items {
12860                Breeze::apply_metadata(entity, d)?;
12861            }
12862        }
12863        EntityKind::BreezeWindCharge => {
12864            for d in items {
12865                BreezeWindCharge::apply_metadata(entity, d)?;
12866            }
12867        }
12868        EntityKind::Camel => {
12869            for d in items {
12870                Camel::apply_metadata(entity, d)?;
12871            }
12872        }
12873        EntityKind::CamelHusk => {
12874            for d in items {
12875                CamelHusk::apply_metadata(entity, d)?;
12876            }
12877        }
12878        EntityKind::Cat => {
12879            for d in items {
12880                Cat::apply_metadata(entity, d)?;
12881            }
12882        }
12883        EntityKind::CaveSpider => {
12884            for d in items {
12885                CaveSpider::apply_metadata(entity, d)?;
12886            }
12887        }
12888        EntityKind::CherryBoat => {
12889            for d in items {
12890                CherryBoat::apply_metadata(entity, d)?;
12891            }
12892        }
12893        EntityKind::CherryChestBoat => {
12894            for d in items {
12895                CherryChestBoat::apply_metadata(entity, d)?;
12896            }
12897        }
12898        EntityKind::ChestMinecart => {
12899            for d in items {
12900                ChestMinecart::apply_metadata(entity, d)?;
12901            }
12902        }
12903        EntityKind::Chicken => {
12904            for d in items {
12905                Chicken::apply_metadata(entity, d)?;
12906            }
12907        }
12908        EntityKind::Cod => {
12909            for d in items {
12910                Cod::apply_metadata(entity, d)?;
12911            }
12912        }
12913        EntityKind::CommandBlockMinecart => {
12914            for d in items {
12915                CommandBlockMinecart::apply_metadata(entity, d)?;
12916            }
12917        }
12918        EntityKind::CopperGolem => {
12919            for d in items {
12920                CopperGolem::apply_metadata(entity, d)?;
12921            }
12922        }
12923        EntityKind::Cow => {
12924            for d in items {
12925                Cow::apply_metadata(entity, d)?;
12926            }
12927        }
12928        EntityKind::Creaking => {
12929            for d in items {
12930                Creaking::apply_metadata(entity, d)?;
12931            }
12932        }
12933        EntityKind::Creeper => {
12934            for d in items {
12935                Creeper::apply_metadata(entity, d)?;
12936            }
12937        }
12938        EntityKind::DarkOakBoat => {
12939            for d in items {
12940                DarkOakBoat::apply_metadata(entity, d)?;
12941            }
12942        }
12943        EntityKind::DarkOakChestBoat => {
12944            for d in items {
12945                DarkOakChestBoat::apply_metadata(entity, d)?;
12946            }
12947        }
12948        EntityKind::Dolphin => {
12949            for d in items {
12950                Dolphin::apply_metadata(entity, d)?;
12951            }
12952        }
12953        EntityKind::Donkey => {
12954            for d in items {
12955                Donkey::apply_metadata(entity, d)?;
12956            }
12957        }
12958        EntityKind::DragonFireball => {
12959            for d in items {
12960                DragonFireball::apply_metadata(entity, d)?;
12961            }
12962        }
12963        EntityKind::Drowned => {
12964            for d in items {
12965                Drowned::apply_metadata(entity, d)?;
12966            }
12967        }
12968        EntityKind::Egg => {
12969            for d in items {
12970                Egg::apply_metadata(entity, d)?;
12971            }
12972        }
12973        EntityKind::ElderGuardian => {
12974            for d in items {
12975                ElderGuardian::apply_metadata(entity, d)?;
12976            }
12977        }
12978        EntityKind::EndCrystal => {
12979            for d in items {
12980                EndCrystal::apply_metadata(entity, d)?;
12981            }
12982        }
12983        EntityKind::EnderDragon => {
12984            for d in items {
12985                EnderDragon::apply_metadata(entity, d)?;
12986            }
12987        }
12988        EntityKind::EnderPearl => {
12989            for d in items {
12990                EnderPearl::apply_metadata(entity, d)?;
12991            }
12992        }
12993        EntityKind::Enderman => {
12994            for d in items {
12995                Enderman::apply_metadata(entity, d)?;
12996            }
12997        }
12998        EntityKind::Endermite => {
12999            for d in items {
13000                Endermite::apply_metadata(entity, d)?;
13001            }
13002        }
13003        EntityKind::Evoker => {
13004            for d in items {
13005                Evoker::apply_metadata(entity, d)?;
13006            }
13007        }
13008        EntityKind::EvokerFangs => {
13009            for d in items {
13010                EvokerFangs::apply_metadata(entity, d)?;
13011            }
13012        }
13013        EntityKind::ExperienceBottle => {
13014            for d in items {
13015                ExperienceBottle::apply_metadata(entity, d)?;
13016            }
13017        }
13018        EntityKind::ExperienceOrb => {
13019            for d in items {
13020                ExperienceOrb::apply_metadata(entity, d)?;
13021            }
13022        }
13023        EntityKind::EyeOfEnder => {
13024            for d in items {
13025                EyeOfEnder::apply_metadata(entity, d)?;
13026            }
13027        }
13028        EntityKind::FallingBlock => {
13029            for d in items {
13030                FallingBlock::apply_metadata(entity, d)?;
13031            }
13032        }
13033        EntityKind::Fireball => {
13034            for d in items {
13035                Fireball::apply_metadata(entity, d)?;
13036            }
13037        }
13038        EntityKind::FireworkRocket => {
13039            for d in items {
13040                FireworkRocket::apply_metadata(entity, d)?;
13041            }
13042        }
13043        EntityKind::FishingBobber => {
13044            for d in items {
13045                FishingBobber::apply_metadata(entity, d)?;
13046            }
13047        }
13048        EntityKind::Fox => {
13049            for d in items {
13050                Fox::apply_metadata(entity, d)?;
13051            }
13052        }
13053        EntityKind::Frog => {
13054            for d in items {
13055                Frog::apply_metadata(entity, d)?;
13056            }
13057        }
13058        EntityKind::FurnaceMinecart => {
13059            for d in items {
13060                FurnaceMinecart::apply_metadata(entity, d)?;
13061            }
13062        }
13063        EntityKind::Ghast => {
13064            for d in items {
13065                Ghast::apply_metadata(entity, d)?;
13066            }
13067        }
13068        EntityKind::Giant => {
13069            for d in items {
13070                Giant::apply_metadata(entity, d)?;
13071            }
13072        }
13073        EntityKind::GlowItemFrame => {
13074            for d in items {
13075                GlowItemFrame::apply_metadata(entity, d)?;
13076            }
13077        }
13078        EntityKind::GlowSquid => {
13079            for d in items {
13080                GlowSquid::apply_metadata(entity, d)?;
13081            }
13082        }
13083        EntityKind::Goat => {
13084            for d in items {
13085                Goat::apply_metadata(entity, d)?;
13086            }
13087        }
13088        EntityKind::Guardian => {
13089            for d in items {
13090                Guardian::apply_metadata(entity, d)?;
13091            }
13092        }
13093        EntityKind::HappyGhast => {
13094            for d in items {
13095                HappyGhast::apply_metadata(entity, d)?;
13096            }
13097        }
13098        EntityKind::Hoglin => {
13099            for d in items {
13100                Hoglin::apply_metadata(entity, d)?;
13101            }
13102        }
13103        EntityKind::HopperMinecart => {
13104            for d in items {
13105                HopperMinecart::apply_metadata(entity, d)?;
13106            }
13107        }
13108        EntityKind::Horse => {
13109            for d in items {
13110                Horse::apply_metadata(entity, d)?;
13111            }
13112        }
13113        EntityKind::Husk => {
13114            for d in items {
13115                Husk::apply_metadata(entity, d)?;
13116            }
13117        }
13118        EntityKind::Illusioner => {
13119            for d in items {
13120                Illusioner::apply_metadata(entity, d)?;
13121            }
13122        }
13123        EntityKind::Interaction => {
13124            for d in items {
13125                Interaction::apply_metadata(entity, d)?;
13126            }
13127        }
13128        EntityKind::IronGolem => {
13129            for d in items {
13130                IronGolem::apply_metadata(entity, d)?;
13131            }
13132        }
13133        EntityKind::Item => {
13134            for d in items {
13135                Item::apply_metadata(entity, d)?;
13136            }
13137        }
13138        EntityKind::ItemDisplay => {
13139            for d in items {
13140                ItemDisplay::apply_metadata(entity, d)?;
13141            }
13142        }
13143        EntityKind::ItemFrame => {
13144            for d in items {
13145                ItemFrame::apply_metadata(entity, d)?;
13146            }
13147        }
13148        EntityKind::JungleBoat => {
13149            for d in items {
13150                JungleBoat::apply_metadata(entity, d)?;
13151            }
13152        }
13153        EntityKind::JungleChestBoat => {
13154            for d in items {
13155                JungleChestBoat::apply_metadata(entity, d)?;
13156            }
13157        }
13158        EntityKind::LeashKnot => {
13159            for d in items {
13160                LeashKnot::apply_metadata(entity, d)?;
13161            }
13162        }
13163        EntityKind::LightningBolt => {
13164            for d in items {
13165                LightningBolt::apply_metadata(entity, d)?;
13166            }
13167        }
13168        EntityKind::LingeringPotion => {
13169            for d in items {
13170                LingeringPotion::apply_metadata(entity, d)?;
13171            }
13172        }
13173        EntityKind::Llama => {
13174            for d in items {
13175                Llama::apply_metadata(entity, d)?;
13176            }
13177        }
13178        EntityKind::LlamaSpit => {
13179            for d in items {
13180                LlamaSpit::apply_metadata(entity, d)?;
13181            }
13182        }
13183        EntityKind::MagmaCube => {
13184            for d in items {
13185                MagmaCube::apply_metadata(entity, d)?;
13186            }
13187        }
13188        EntityKind::MangroveBoat => {
13189            for d in items {
13190                MangroveBoat::apply_metadata(entity, d)?;
13191            }
13192        }
13193        EntityKind::MangroveChestBoat => {
13194            for d in items {
13195                MangroveChestBoat::apply_metadata(entity, d)?;
13196            }
13197        }
13198        EntityKind::Mannequin => {
13199            for d in items {
13200                Mannequin::apply_metadata(entity, d)?;
13201            }
13202        }
13203        EntityKind::Marker => {
13204            for d in items {
13205                Marker::apply_metadata(entity, d)?;
13206            }
13207        }
13208        EntityKind::Minecart => {
13209            for d in items {
13210                Minecart::apply_metadata(entity, d)?;
13211            }
13212        }
13213        EntityKind::Mooshroom => {
13214            for d in items {
13215                Mooshroom::apply_metadata(entity, d)?;
13216            }
13217        }
13218        EntityKind::Mule => {
13219            for d in items {
13220                Mule::apply_metadata(entity, d)?;
13221            }
13222        }
13223        EntityKind::Nautilus => {
13224            for d in items {
13225                Nautilus::apply_metadata(entity, d)?;
13226            }
13227        }
13228        EntityKind::OakBoat => {
13229            for d in items {
13230                OakBoat::apply_metadata(entity, d)?;
13231            }
13232        }
13233        EntityKind::OakChestBoat => {
13234            for d in items {
13235                OakChestBoat::apply_metadata(entity, d)?;
13236            }
13237        }
13238        EntityKind::Ocelot => {
13239            for d in items {
13240                Ocelot::apply_metadata(entity, d)?;
13241            }
13242        }
13243        EntityKind::OminousItemSpawner => {
13244            for d in items {
13245                OminousItemSpawner::apply_metadata(entity, d)?;
13246            }
13247        }
13248        EntityKind::Painting => {
13249            for d in items {
13250                Painting::apply_metadata(entity, d)?;
13251            }
13252        }
13253        EntityKind::PaleOakBoat => {
13254            for d in items {
13255                PaleOakBoat::apply_metadata(entity, d)?;
13256            }
13257        }
13258        EntityKind::PaleOakChestBoat => {
13259            for d in items {
13260                PaleOakChestBoat::apply_metadata(entity, d)?;
13261            }
13262        }
13263        EntityKind::Panda => {
13264            for d in items {
13265                Panda::apply_metadata(entity, d)?;
13266            }
13267        }
13268        EntityKind::Parched => {
13269            for d in items {
13270                Parched::apply_metadata(entity, d)?;
13271            }
13272        }
13273        EntityKind::Parrot => {
13274            for d in items {
13275                Parrot::apply_metadata(entity, d)?;
13276            }
13277        }
13278        EntityKind::Phantom => {
13279            for d in items {
13280                Phantom::apply_metadata(entity, d)?;
13281            }
13282        }
13283        EntityKind::Pig => {
13284            for d in items {
13285                Pig::apply_metadata(entity, d)?;
13286            }
13287        }
13288        EntityKind::Piglin => {
13289            for d in items {
13290                Piglin::apply_metadata(entity, d)?;
13291            }
13292        }
13293        EntityKind::PiglinBrute => {
13294            for d in items {
13295                PiglinBrute::apply_metadata(entity, d)?;
13296            }
13297        }
13298        EntityKind::Pillager => {
13299            for d in items {
13300                Pillager::apply_metadata(entity, d)?;
13301            }
13302        }
13303        EntityKind::Player => {
13304            for d in items {
13305                Player::apply_metadata(entity, d)?;
13306            }
13307        }
13308        EntityKind::PolarBear => {
13309            for d in items {
13310                PolarBear::apply_metadata(entity, d)?;
13311            }
13312        }
13313        EntityKind::Pufferfish => {
13314            for d in items {
13315                Pufferfish::apply_metadata(entity, d)?;
13316            }
13317        }
13318        EntityKind::Rabbit => {
13319            for d in items {
13320                Rabbit::apply_metadata(entity, d)?;
13321            }
13322        }
13323        EntityKind::Ravager => {
13324            for d in items {
13325                Ravager::apply_metadata(entity, d)?;
13326            }
13327        }
13328        EntityKind::Salmon => {
13329            for d in items {
13330                Salmon::apply_metadata(entity, d)?;
13331            }
13332        }
13333        EntityKind::Sheep => {
13334            for d in items {
13335                Sheep::apply_metadata(entity, d)?;
13336            }
13337        }
13338        EntityKind::Shulker => {
13339            for d in items {
13340                Shulker::apply_metadata(entity, d)?;
13341            }
13342        }
13343        EntityKind::ShulkerBullet => {
13344            for d in items {
13345                ShulkerBullet::apply_metadata(entity, d)?;
13346            }
13347        }
13348        EntityKind::Silverfish => {
13349            for d in items {
13350                Silverfish::apply_metadata(entity, d)?;
13351            }
13352        }
13353        EntityKind::Skeleton => {
13354            for d in items {
13355                Skeleton::apply_metadata(entity, d)?;
13356            }
13357        }
13358        EntityKind::SkeletonHorse => {
13359            for d in items {
13360                SkeletonHorse::apply_metadata(entity, d)?;
13361            }
13362        }
13363        EntityKind::Slime => {
13364            for d in items {
13365                Slime::apply_metadata(entity, d)?;
13366            }
13367        }
13368        EntityKind::SmallFireball => {
13369            for d in items {
13370                SmallFireball::apply_metadata(entity, d)?;
13371            }
13372        }
13373        EntityKind::Sniffer => {
13374            for d in items {
13375                Sniffer::apply_metadata(entity, d)?;
13376            }
13377        }
13378        EntityKind::SnowGolem => {
13379            for d in items {
13380                SnowGolem::apply_metadata(entity, d)?;
13381            }
13382        }
13383        EntityKind::Snowball => {
13384            for d in items {
13385                Snowball::apply_metadata(entity, d)?;
13386            }
13387        }
13388        EntityKind::SpawnerMinecart => {
13389            for d in items {
13390                SpawnerMinecart::apply_metadata(entity, d)?;
13391            }
13392        }
13393        EntityKind::SpectralArrow => {
13394            for d in items {
13395                SpectralArrow::apply_metadata(entity, d)?;
13396            }
13397        }
13398        EntityKind::Spider => {
13399            for d in items {
13400                Spider::apply_metadata(entity, d)?;
13401            }
13402        }
13403        EntityKind::SplashPotion => {
13404            for d in items {
13405                SplashPotion::apply_metadata(entity, d)?;
13406            }
13407        }
13408        EntityKind::SpruceBoat => {
13409            for d in items {
13410                SpruceBoat::apply_metadata(entity, d)?;
13411            }
13412        }
13413        EntityKind::SpruceChestBoat => {
13414            for d in items {
13415                SpruceChestBoat::apply_metadata(entity, d)?;
13416            }
13417        }
13418        EntityKind::Squid => {
13419            for d in items {
13420                Squid::apply_metadata(entity, d)?;
13421            }
13422        }
13423        EntityKind::Stray => {
13424            for d in items {
13425                Stray::apply_metadata(entity, d)?;
13426            }
13427        }
13428        EntityKind::Strider => {
13429            for d in items {
13430                Strider::apply_metadata(entity, d)?;
13431            }
13432        }
13433        EntityKind::Tadpole => {
13434            for d in items {
13435                Tadpole::apply_metadata(entity, d)?;
13436            }
13437        }
13438        EntityKind::TextDisplay => {
13439            for d in items {
13440                TextDisplay::apply_metadata(entity, d)?;
13441            }
13442        }
13443        EntityKind::Tnt => {
13444            for d in items {
13445                Tnt::apply_metadata(entity, d)?;
13446            }
13447        }
13448        EntityKind::TntMinecart => {
13449            for d in items {
13450                TntMinecart::apply_metadata(entity, d)?;
13451            }
13452        }
13453        EntityKind::TraderLlama => {
13454            for d in items {
13455                TraderLlama::apply_metadata(entity, d)?;
13456            }
13457        }
13458        EntityKind::Trident => {
13459            for d in items {
13460                Trident::apply_metadata(entity, d)?;
13461            }
13462        }
13463        EntityKind::TropicalFish => {
13464            for d in items {
13465                TropicalFish::apply_metadata(entity, d)?;
13466            }
13467        }
13468        EntityKind::Turtle => {
13469            for d in items {
13470                Turtle::apply_metadata(entity, d)?;
13471            }
13472        }
13473        EntityKind::Vex => {
13474            for d in items {
13475                Vex::apply_metadata(entity, d)?;
13476            }
13477        }
13478        EntityKind::Villager => {
13479            for d in items {
13480                Villager::apply_metadata(entity, d)?;
13481            }
13482        }
13483        EntityKind::Vindicator => {
13484            for d in items {
13485                Vindicator::apply_metadata(entity, d)?;
13486            }
13487        }
13488        EntityKind::WanderingTrader => {
13489            for d in items {
13490                WanderingTrader::apply_metadata(entity, d)?;
13491            }
13492        }
13493        EntityKind::Warden => {
13494            for d in items {
13495                Warden::apply_metadata(entity, d)?;
13496            }
13497        }
13498        EntityKind::WindCharge => {
13499            for d in items {
13500                WindCharge::apply_metadata(entity, d)?;
13501            }
13502        }
13503        EntityKind::Witch => {
13504            for d in items {
13505                Witch::apply_metadata(entity, d)?;
13506            }
13507        }
13508        EntityKind::Wither => {
13509            for d in items {
13510                Wither::apply_metadata(entity, d)?;
13511            }
13512        }
13513        EntityKind::WitherSkeleton => {
13514            for d in items {
13515                WitherSkeleton::apply_metadata(entity, d)?;
13516            }
13517        }
13518        EntityKind::WitherSkull => {
13519            for d in items {
13520                WitherSkull::apply_metadata(entity, d)?;
13521            }
13522        }
13523        EntityKind::Wolf => {
13524            for d in items {
13525                Wolf::apply_metadata(entity, d)?;
13526            }
13527        }
13528        EntityKind::Zoglin => {
13529            for d in items {
13530                Zoglin::apply_metadata(entity, d)?;
13531            }
13532        }
13533        EntityKind::Zombie => {
13534            for d in items {
13535                Zombie::apply_metadata(entity, d)?;
13536            }
13537        }
13538        EntityKind::ZombieHorse => {
13539            for d in items {
13540                ZombieHorse::apply_metadata(entity, d)?;
13541            }
13542        }
13543        EntityKind::ZombieNautilus => {
13544            for d in items {
13545                ZombieNautilus::apply_metadata(entity, d)?;
13546            }
13547        }
13548        EntityKind::ZombieVillager => {
13549            for d in items {
13550                ZombieVillager::apply_metadata(entity, d)?;
13551            }
13552        }
13553        EntityKind::ZombifiedPiglin => {
13554            for d in items {
13555                ZombifiedPiglin::apply_metadata(entity, d)?;
13556            }
13557        }
13558    }
13559    Ok(())
13560}
13561
13562pub fn apply_default_metadata(entity: &mut bevy_ecs::system::EntityCommands, kind: EntityKind) {
13563    match kind {
13564        EntityKind::AcaciaBoat => {
13565            entity.insert(AcaciaBoatMetadataBundle::default());
13566        }
13567        EntityKind::AcaciaChestBoat => {
13568            entity.insert(AcaciaChestBoatMetadataBundle::default());
13569        }
13570        EntityKind::Allay => {
13571            entity.insert(AllayMetadataBundle::default());
13572        }
13573        EntityKind::AreaEffectCloud => {
13574            entity.insert(AreaEffectCloudMetadataBundle::default());
13575        }
13576        EntityKind::Armadillo => {
13577            entity.insert(ArmadilloMetadataBundle::default());
13578        }
13579        EntityKind::ArmorStand => {
13580            entity.insert(ArmorStandMetadataBundle::default());
13581        }
13582        EntityKind::Arrow => {
13583            entity.insert(ArrowMetadataBundle::default());
13584        }
13585        EntityKind::Axolotl => {
13586            entity.insert(AxolotlMetadataBundle::default());
13587        }
13588        EntityKind::BambooChestRaft => {
13589            entity.insert(BambooChestRaftMetadataBundle::default());
13590        }
13591        EntityKind::BambooRaft => {
13592            entity.insert(BambooRaftMetadataBundle::default());
13593        }
13594        EntityKind::Bat => {
13595            entity.insert(BatMetadataBundle::default());
13596        }
13597        EntityKind::Bee => {
13598            entity.insert(BeeMetadataBundle::default());
13599        }
13600        EntityKind::BirchBoat => {
13601            entity.insert(BirchBoatMetadataBundle::default());
13602        }
13603        EntityKind::BirchChestBoat => {
13604            entity.insert(BirchChestBoatMetadataBundle::default());
13605        }
13606        EntityKind::Blaze => {
13607            entity.insert(BlazeMetadataBundle::default());
13608        }
13609        EntityKind::BlockDisplay => {
13610            entity.insert(BlockDisplayMetadataBundle::default());
13611        }
13612        EntityKind::Bogged => {
13613            entity.insert(BoggedMetadataBundle::default());
13614        }
13615        EntityKind::Breeze => {
13616            entity.insert(BreezeMetadataBundle::default());
13617        }
13618        EntityKind::BreezeWindCharge => {
13619            entity.insert(BreezeWindChargeMetadataBundle::default());
13620        }
13621        EntityKind::Camel => {
13622            entity.insert(CamelMetadataBundle::default());
13623        }
13624        EntityKind::CamelHusk => {
13625            entity.insert(CamelHuskMetadataBundle::default());
13626        }
13627        EntityKind::Cat => {
13628            entity.insert(CatMetadataBundle::default());
13629        }
13630        EntityKind::CaveSpider => {
13631            entity.insert(CaveSpiderMetadataBundle::default());
13632        }
13633        EntityKind::CherryBoat => {
13634            entity.insert(CherryBoatMetadataBundle::default());
13635        }
13636        EntityKind::CherryChestBoat => {
13637            entity.insert(CherryChestBoatMetadataBundle::default());
13638        }
13639        EntityKind::ChestMinecart => {
13640            entity.insert(ChestMinecartMetadataBundle::default());
13641        }
13642        EntityKind::Chicken => {
13643            entity.insert(ChickenMetadataBundle::default());
13644        }
13645        EntityKind::Cod => {
13646            entity.insert(CodMetadataBundle::default());
13647        }
13648        EntityKind::CommandBlockMinecart => {
13649            entity.insert(CommandBlockMinecartMetadataBundle::default());
13650        }
13651        EntityKind::CopperGolem => {
13652            entity.insert(CopperGolemMetadataBundle::default());
13653        }
13654        EntityKind::Cow => {
13655            entity.insert(CowMetadataBundle::default());
13656        }
13657        EntityKind::Creaking => {
13658            entity.insert(CreakingMetadataBundle::default());
13659        }
13660        EntityKind::Creeper => {
13661            entity.insert(CreeperMetadataBundle::default());
13662        }
13663        EntityKind::DarkOakBoat => {
13664            entity.insert(DarkOakBoatMetadataBundle::default());
13665        }
13666        EntityKind::DarkOakChestBoat => {
13667            entity.insert(DarkOakChestBoatMetadataBundle::default());
13668        }
13669        EntityKind::Dolphin => {
13670            entity.insert(DolphinMetadataBundle::default());
13671        }
13672        EntityKind::Donkey => {
13673            entity.insert(DonkeyMetadataBundle::default());
13674        }
13675        EntityKind::DragonFireball => {
13676            entity.insert(DragonFireballMetadataBundle::default());
13677        }
13678        EntityKind::Drowned => {
13679            entity.insert(DrownedMetadataBundle::default());
13680        }
13681        EntityKind::Egg => {
13682            entity.insert(EggMetadataBundle::default());
13683        }
13684        EntityKind::ElderGuardian => {
13685            entity.insert(ElderGuardianMetadataBundle::default());
13686        }
13687        EntityKind::EndCrystal => {
13688            entity.insert(EndCrystalMetadataBundle::default());
13689        }
13690        EntityKind::EnderDragon => {
13691            entity.insert(EnderDragonMetadataBundle::default());
13692        }
13693        EntityKind::EnderPearl => {
13694            entity.insert(EnderPearlMetadataBundle::default());
13695        }
13696        EntityKind::Enderman => {
13697            entity.insert(EndermanMetadataBundle::default());
13698        }
13699        EntityKind::Endermite => {
13700            entity.insert(EndermiteMetadataBundle::default());
13701        }
13702        EntityKind::Evoker => {
13703            entity.insert(EvokerMetadataBundle::default());
13704        }
13705        EntityKind::EvokerFangs => {
13706            entity.insert(EvokerFangsMetadataBundle::default());
13707        }
13708        EntityKind::ExperienceBottle => {
13709            entity.insert(ExperienceBottleMetadataBundle::default());
13710        }
13711        EntityKind::ExperienceOrb => {
13712            entity.insert(ExperienceOrbMetadataBundle::default());
13713        }
13714        EntityKind::EyeOfEnder => {
13715            entity.insert(EyeOfEnderMetadataBundle::default());
13716        }
13717        EntityKind::FallingBlock => {
13718            entity.insert(FallingBlockMetadataBundle::default());
13719        }
13720        EntityKind::Fireball => {
13721            entity.insert(FireballMetadataBundle::default());
13722        }
13723        EntityKind::FireworkRocket => {
13724            entity.insert(FireworkRocketMetadataBundle::default());
13725        }
13726        EntityKind::FishingBobber => {
13727            entity.insert(FishingBobberMetadataBundle::default());
13728        }
13729        EntityKind::Fox => {
13730            entity.insert(FoxMetadataBundle::default());
13731        }
13732        EntityKind::Frog => {
13733            entity.insert(FrogMetadataBundle::default());
13734        }
13735        EntityKind::FurnaceMinecart => {
13736            entity.insert(FurnaceMinecartMetadataBundle::default());
13737        }
13738        EntityKind::Ghast => {
13739            entity.insert(GhastMetadataBundle::default());
13740        }
13741        EntityKind::Giant => {
13742            entity.insert(GiantMetadataBundle::default());
13743        }
13744        EntityKind::GlowItemFrame => {
13745            entity.insert(GlowItemFrameMetadataBundle::default());
13746        }
13747        EntityKind::GlowSquid => {
13748            entity.insert(GlowSquidMetadataBundle::default());
13749        }
13750        EntityKind::Goat => {
13751            entity.insert(GoatMetadataBundle::default());
13752        }
13753        EntityKind::Guardian => {
13754            entity.insert(GuardianMetadataBundle::default());
13755        }
13756        EntityKind::HappyGhast => {
13757            entity.insert(HappyGhastMetadataBundle::default());
13758        }
13759        EntityKind::Hoglin => {
13760            entity.insert(HoglinMetadataBundle::default());
13761        }
13762        EntityKind::HopperMinecart => {
13763            entity.insert(HopperMinecartMetadataBundle::default());
13764        }
13765        EntityKind::Horse => {
13766            entity.insert(HorseMetadataBundle::default());
13767        }
13768        EntityKind::Husk => {
13769            entity.insert(HuskMetadataBundle::default());
13770        }
13771        EntityKind::Illusioner => {
13772            entity.insert(IllusionerMetadataBundle::default());
13773        }
13774        EntityKind::Interaction => {
13775            entity.insert(InteractionMetadataBundle::default());
13776        }
13777        EntityKind::IronGolem => {
13778            entity.insert(IronGolemMetadataBundle::default());
13779        }
13780        EntityKind::Item => {
13781            entity.insert(ItemMetadataBundle::default());
13782        }
13783        EntityKind::ItemDisplay => {
13784            entity.insert(ItemDisplayMetadataBundle::default());
13785        }
13786        EntityKind::ItemFrame => {
13787            entity.insert(ItemFrameMetadataBundle::default());
13788        }
13789        EntityKind::JungleBoat => {
13790            entity.insert(JungleBoatMetadataBundle::default());
13791        }
13792        EntityKind::JungleChestBoat => {
13793            entity.insert(JungleChestBoatMetadataBundle::default());
13794        }
13795        EntityKind::LeashKnot => {
13796            entity.insert(LeashKnotMetadataBundle::default());
13797        }
13798        EntityKind::LightningBolt => {
13799            entity.insert(LightningBoltMetadataBundle::default());
13800        }
13801        EntityKind::LingeringPotion => {
13802            entity.insert(LingeringPotionMetadataBundle::default());
13803        }
13804        EntityKind::Llama => {
13805            entity.insert(LlamaMetadataBundle::default());
13806        }
13807        EntityKind::LlamaSpit => {
13808            entity.insert(LlamaSpitMetadataBundle::default());
13809        }
13810        EntityKind::MagmaCube => {
13811            entity.insert(MagmaCubeMetadataBundle::default());
13812        }
13813        EntityKind::MangroveBoat => {
13814            entity.insert(MangroveBoatMetadataBundle::default());
13815        }
13816        EntityKind::MangroveChestBoat => {
13817            entity.insert(MangroveChestBoatMetadataBundle::default());
13818        }
13819        EntityKind::Mannequin => {
13820            entity.insert(MannequinMetadataBundle::default());
13821        }
13822        EntityKind::Marker => {
13823            entity.insert(MarkerMetadataBundle::default());
13824        }
13825        EntityKind::Minecart => {
13826            entity.insert(MinecartMetadataBundle::default());
13827        }
13828        EntityKind::Mooshroom => {
13829            entity.insert(MooshroomMetadataBundle::default());
13830        }
13831        EntityKind::Mule => {
13832            entity.insert(MuleMetadataBundle::default());
13833        }
13834        EntityKind::Nautilus => {
13835            entity.insert(NautilusMetadataBundle::default());
13836        }
13837        EntityKind::OakBoat => {
13838            entity.insert(OakBoatMetadataBundle::default());
13839        }
13840        EntityKind::OakChestBoat => {
13841            entity.insert(OakChestBoatMetadataBundle::default());
13842        }
13843        EntityKind::Ocelot => {
13844            entity.insert(OcelotMetadataBundle::default());
13845        }
13846        EntityKind::OminousItemSpawner => {
13847            entity.insert(OminousItemSpawnerMetadataBundle::default());
13848        }
13849        EntityKind::Painting => {
13850            entity.insert(PaintingMetadataBundle::default());
13851        }
13852        EntityKind::PaleOakBoat => {
13853            entity.insert(PaleOakBoatMetadataBundle::default());
13854        }
13855        EntityKind::PaleOakChestBoat => {
13856            entity.insert(PaleOakChestBoatMetadataBundle::default());
13857        }
13858        EntityKind::Panda => {
13859            entity.insert(PandaMetadataBundle::default());
13860        }
13861        EntityKind::Parched => {
13862            entity.insert(ParchedMetadataBundle::default());
13863        }
13864        EntityKind::Parrot => {
13865            entity.insert(ParrotMetadataBundle::default());
13866        }
13867        EntityKind::Phantom => {
13868            entity.insert(PhantomMetadataBundle::default());
13869        }
13870        EntityKind::Pig => {
13871            entity.insert(PigMetadataBundle::default());
13872        }
13873        EntityKind::Piglin => {
13874            entity.insert(PiglinMetadataBundle::default());
13875        }
13876        EntityKind::PiglinBrute => {
13877            entity.insert(PiglinBruteMetadataBundle::default());
13878        }
13879        EntityKind::Pillager => {
13880            entity.insert(PillagerMetadataBundle::default());
13881        }
13882        EntityKind::Player => {
13883            entity.insert(PlayerMetadataBundle::default());
13884        }
13885        EntityKind::PolarBear => {
13886            entity.insert(PolarBearMetadataBundle::default());
13887        }
13888        EntityKind::Pufferfish => {
13889            entity.insert(PufferfishMetadataBundle::default());
13890        }
13891        EntityKind::Rabbit => {
13892            entity.insert(RabbitMetadataBundle::default());
13893        }
13894        EntityKind::Ravager => {
13895            entity.insert(RavagerMetadataBundle::default());
13896        }
13897        EntityKind::Salmon => {
13898            entity.insert(SalmonMetadataBundle::default());
13899        }
13900        EntityKind::Sheep => {
13901            entity.insert(SheepMetadataBundle::default());
13902        }
13903        EntityKind::Shulker => {
13904            entity.insert(ShulkerMetadataBundle::default());
13905        }
13906        EntityKind::ShulkerBullet => {
13907            entity.insert(ShulkerBulletMetadataBundle::default());
13908        }
13909        EntityKind::Silverfish => {
13910            entity.insert(SilverfishMetadataBundle::default());
13911        }
13912        EntityKind::Skeleton => {
13913            entity.insert(SkeletonMetadataBundle::default());
13914        }
13915        EntityKind::SkeletonHorse => {
13916            entity.insert(SkeletonHorseMetadataBundle::default());
13917        }
13918        EntityKind::Slime => {
13919            entity.insert(SlimeMetadataBundle::default());
13920        }
13921        EntityKind::SmallFireball => {
13922            entity.insert(SmallFireballMetadataBundle::default());
13923        }
13924        EntityKind::Sniffer => {
13925            entity.insert(SnifferMetadataBundle::default());
13926        }
13927        EntityKind::SnowGolem => {
13928            entity.insert(SnowGolemMetadataBundle::default());
13929        }
13930        EntityKind::Snowball => {
13931            entity.insert(SnowballMetadataBundle::default());
13932        }
13933        EntityKind::SpawnerMinecart => {
13934            entity.insert(SpawnerMinecartMetadataBundle::default());
13935        }
13936        EntityKind::SpectralArrow => {
13937            entity.insert(SpectralArrowMetadataBundle::default());
13938        }
13939        EntityKind::Spider => {
13940            entity.insert(SpiderMetadataBundle::default());
13941        }
13942        EntityKind::SplashPotion => {
13943            entity.insert(SplashPotionMetadataBundle::default());
13944        }
13945        EntityKind::SpruceBoat => {
13946            entity.insert(SpruceBoatMetadataBundle::default());
13947        }
13948        EntityKind::SpruceChestBoat => {
13949            entity.insert(SpruceChestBoatMetadataBundle::default());
13950        }
13951        EntityKind::Squid => {
13952            entity.insert(SquidMetadataBundle::default());
13953        }
13954        EntityKind::Stray => {
13955            entity.insert(StrayMetadataBundle::default());
13956        }
13957        EntityKind::Strider => {
13958            entity.insert(StriderMetadataBundle::default());
13959        }
13960        EntityKind::Tadpole => {
13961            entity.insert(TadpoleMetadataBundle::default());
13962        }
13963        EntityKind::TextDisplay => {
13964            entity.insert(TextDisplayMetadataBundle::default());
13965        }
13966        EntityKind::Tnt => {
13967            entity.insert(TntMetadataBundle::default());
13968        }
13969        EntityKind::TntMinecart => {
13970            entity.insert(TntMinecartMetadataBundle::default());
13971        }
13972        EntityKind::TraderLlama => {
13973            entity.insert(TraderLlamaMetadataBundle::default());
13974        }
13975        EntityKind::Trident => {
13976            entity.insert(TridentMetadataBundle::default());
13977        }
13978        EntityKind::TropicalFish => {
13979            entity.insert(TropicalFishMetadataBundle::default());
13980        }
13981        EntityKind::Turtle => {
13982            entity.insert(TurtleMetadataBundle::default());
13983        }
13984        EntityKind::Vex => {
13985            entity.insert(VexMetadataBundle::default());
13986        }
13987        EntityKind::Villager => {
13988            entity.insert(VillagerMetadataBundle::default());
13989        }
13990        EntityKind::Vindicator => {
13991            entity.insert(VindicatorMetadataBundle::default());
13992        }
13993        EntityKind::WanderingTrader => {
13994            entity.insert(WanderingTraderMetadataBundle::default());
13995        }
13996        EntityKind::Warden => {
13997            entity.insert(WardenMetadataBundle::default());
13998        }
13999        EntityKind::WindCharge => {
14000            entity.insert(WindChargeMetadataBundle::default());
14001        }
14002        EntityKind::Witch => {
14003            entity.insert(WitchMetadataBundle::default());
14004        }
14005        EntityKind::Wither => {
14006            entity.insert(WitherMetadataBundle::default());
14007        }
14008        EntityKind::WitherSkeleton => {
14009            entity.insert(WitherSkeletonMetadataBundle::default());
14010        }
14011        EntityKind::WitherSkull => {
14012            entity.insert(WitherSkullMetadataBundle::default());
14013        }
14014        EntityKind::Wolf => {
14015            entity.insert(WolfMetadataBundle::default());
14016        }
14017        EntityKind::Zoglin => {
14018            entity.insert(ZoglinMetadataBundle::default());
14019        }
14020        EntityKind::Zombie => {
14021            entity.insert(ZombieMetadataBundle::default());
14022        }
14023        EntityKind::ZombieHorse => {
14024            entity.insert(ZombieHorseMetadataBundle::default());
14025        }
14026        EntityKind::ZombieNautilus => {
14027            entity.insert(ZombieNautilusMetadataBundle::default());
14028        }
14029        EntityKind::ZombieVillager => {
14030            entity.insert(ZombieVillagerMetadataBundle::default());
14031        }
14032        EntityKind::ZombifiedPiglin => {
14033            entity.insert(ZombifiedPiglinMetadataBundle::default());
14034        }
14035    }
14036}