diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2023-07-14 22:20:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-14 22:20:40 -0500 |
| commit | 7405427199e5a994d4a6a706f84434a69cb7a7d9 (patch) | |
| tree | ca537e5d761bc053187d952fced0915c850b92aa /azalea-world/src/entity | |
| parent | d1afd02aa84e7b4450c1607277f078eb2a0f1bf3 (diff) | |
| download | azalea-drasl-7405427199e5a994d4a6a706f84434a69cb7a7d9.tar.xz | |
Mining (#95)
* more mining stuff
* initialize azalea-tags crate
* more mining stuff 2
* mining in ecs
* well technically mining works but
no codegen for how long it takes to mine each block yet
* rename downloads to __cache__
it was bothering me since it's not *just* downloads
* codegen block behavior
* fix not sending packet to finish breaking block
* mining animation 🎉
* clippy
* cleanup, move Client::mine into a client extension
* add azalea/src/mining.rs
---------
Co-authored-by: mat <git@matdoes.dev>
Diffstat (limited to 'azalea-world/src/entity')
| -rw-r--r-- | azalea-world/src/entity/attributes.rs | 116 | ||||
| -rwxr-xr-x | azalea-world/src/entity/data.rs | 187 | ||||
| -rwxr-xr-x | azalea-world/src/entity/dimensions.rs | 38 | ||||
| -rw-r--r-- | azalea-world/src/entity/info.rs | 338 | ||||
| -rw-r--r-- | azalea-world/src/entity/metadata.rs | 11380 | ||||
| -rw-r--r-- | azalea-world/src/entity/mod.rs | 398 |
6 files changed, 0 insertions, 12457 deletions
diff --git a/azalea-world/src/entity/attributes.rs b/azalea-world/src/entity/attributes.rs deleted file mode 100644 index 97b890dc..00000000 --- a/azalea-world/src/entity/attributes.rs +++ /dev/null @@ -1,116 +0,0 @@ -//! See <https://minecraft.fandom.com/wiki/Attribute>. - -use std::{ - collections::HashMap, - io::{Cursor, Write}, -}; - -use azalea_buf::{BufReadError, McBuf, McBufReadable, McBufWritable}; -use bevy_ecs::component::Component; -use thiserror::Error; -use uuid::{uuid, Uuid}; - -#[derive(Clone, Debug, Component)] -pub struct Attributes { - pub speed: AttributeInstance, -} - -#[derive(Clone, Debug)] -pub struct AttributeInstance { - pub base: f64, - modifiers_by_uuid: HashMap<Uuid, AttributeModifier>, -} - -#[derive(Clone, Debug, Error)] -#[error("A modifier with this UUID is already present.")] -pub struct AlreadyPresentError; - -impl AttributeInstance { - pub fn new(base: f64) -> Self { - Self { - base, - modifiers_by_uuid: HashMap::new(), - } - } - - pub fn calculate(&self) -> f64 { - let mut total = self.base; - for modifier in self.modifiers_by_uuid.values() { - match modifier.operation { - AttributeModifierOperation::Addition => total += modifier.amount, - AttributeModifierOperation::MultiplyBase => total += self.base * modifier.amount, - _ => {} - } - if let AttributeModifierOperation::MultiplyTotal = modifier.operation { - total *= 1.0 + modifier.amount; - } - } - total - } - - /// Add a new modifier to this attribute. - pub fn insert(&mut self, modifier: AttributeModifier) -> Result<(), AlreadyPresentError> { - if self - .modifiers_by_uuid - .insert(modifier.uuid, modifier) - .is_some() - { - Err(AlreadyPresentError) - } else { - Ok(()) - } - } - - /// Remove the modifier with the given UUID from this attribute, returning - /// the previous modifier is present. - pub fn remove(&mut self, uuid: &Uuid) -> Option<AttributeModifier> { - self.modifiers_by_uuid.remove(uuid) - } -} - -#[derive(Clone, Debug)] -pub struct AttributeModifier { - pub uuid: Uuid, - pub name: String, - pub amount: f64, - pub operation: AttributeModifierOperation, -} - -#[derive(Clone, Debug, Copy, McBuf)] -pub enum AttributeModifierOperation { - Addition, - MultiplyBase, - MultiplyTotal, -} - -pub fn sprinting_modifier() -> AttributeModifier { - AttributeModifier { - uuid: uuid!("662A6B8D-DA3E-4C1C-8813-96EA6097278D"), - name: "Sprinting speed boost".to_string(), - amount: 0.30000001192092896, - operation: AttributeModifierOperation::MultiplyTotal, - } -} - -impl McBufReadable for AttributeModifier { - fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { - let uuid = Uuid::read_from(buf)?; - let amount = f64::read_from(buf)?; - let operation = AttributeModifierOperation::read_from(buf)?; - Ok(Self { - uuid, - name: "Unknown synced attribute modifier".to_string(), - amount, - operation, - }) - } -} - -impl McBufWritable for AttributeModifier { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - self.uuid.write_into(buf)?; - self.amount.write_into(buf)?; - self.operation.write_into(buf)?; - Ok(()) - } -} diff --git a/azalea-world/src/entity/data.rs b/azalea-world/src/entity/data.rs deleted file mode 100755 index 31d4ca2f..00000000 --- a/azalea-world/src/entity/data.rs +++ /dev/null @@ -1,187 +0,0 @@ -//! Define some types needed for entity metadata. - -use azalea_buf::{ - BufReadError, McBuf, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable, -}; -use azalea_chat::FormattedText; -use azalea_core::{BlockPos, Direction, GlobalPos, Particle, Vec3}; -use azalea_inventory::ItemSlot; -use bevy_ecs::component::Component; -use derive_more::Deref; -use enum_as_inner::EnumAsInner; -use nohash_hasher::IntSet; -use std::io::{Cursor, Write}; -use uuid::Uuid; - -#[derive(Clone, Debug, Deref)] -pub struct EntityMetadataItems(Vec<EntityDataItem>); - -#[derive(Clone, Debug)] -pub struct EntityDataItem { - // we can't identify what the index is for here because we don't know the - // entity type - pub index: u8, - pub value: EntityDataValue, -} - -impl McBufReadable for EntityMetadataItems { - fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { - let mut metadata = Vec::new(); - loop { - let id = u8::read_from(buf)?; - if id == 0xff { - break; - } - let value = EntityDataValue::read_from(buf)?; - metadata.push(EntityDataItem { index: id, value }); - } - Ok(EntityMetadataItems(metadata)) - } -} - -impl McBufWritable for EntityMetadataItems { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - for item in &self.0 { - item.index.write_into(buf)?; - item.value.write_into(buf)?; - } - 0xffu8.write_into(buf)?; - Ok(()) - } -} - -// Note: This enum is partially generated and parsed by -// codegen/lib/code/entity.py -#[derive(Clone, Debug, EnumAsInner, McBuf)] -pub enum EntityDataValue { - Byte(u8), - Int(#[var] i32), - Long(i64), - Float(f32), - String(String), - FormattedText(FormattedText), - OptionalFormattedText(Option<FormattedText>), - ItemStack(ItemSlot), - Boolean(bool), - Rotations(Rotations), - BlockPos(BlockPos), - OptionalBlockPos(Option<BlockPos>), - Direction(Direction), - OptionalUuid(Option<Uuid>), - BlockState(azalea_block::BlockState), - /// If this is air, that means it's absent, - OptionalBlockState(azalea_block::BlockState), - CompoundTag(azalea_nbt::Nbt), - Particle(Particle), - VillagerData(VillagerData), - // 0 for absent; 1 + actual value otherwise. Used for entity IDs. - OptionalUnsignedInt(OptionalUnsignedInt), - Pose(Pose), - CatVariant(azalea_registry::CatVariant), - FrogVariant(azalea_registry::FrogVariant), - OptionalGlobalPos(Option<GlobalPos>), - PaintingVariant(azalea_registry::PaintingVariant), - SnifferState(SnifferState), - Vector3(Vec3), - Quaternion(Quaternion), -} - -#[derive(Clone, Debug)] -pub struct OptionalUnsignedInt(pub Option<u32>); - -#[derive(Clone, Debug, McBuf)] -pub struct Quaternion { - pub x: f32, - pub y: f32, - pub z: f32, - pub w: f32, -} - -impl McBufReadable for OptionalUnsignedInt { - fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { - let val = u32::var_read_from(buf)?; - Ok(OptionalUnsignedInt(if val == 0 { - None - } else { - Some(val - 1) - })) - } -} -impl McBufWritable for OptionalUnsignedInt { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - match self.0 { - Some(val) => (val + 1).var_write_into(buf), - None => 0u32.var_write_into(buf), - } - } -} - -/// A set of x, y, and z rotations. This is used for armor stands. -#[derive(Clone, Debug, McBuf, Default)] -pub struct Rotations { - pub x: f32, - pub y: f32, - pub z: f32, -} - -#[derive(Clone, Debug, Copy, McBuf, Default, Component)] -pub enum Pose { - #[default] - Standing = 0, - FallFlying, - Sleeping, - Swimming, - SpinAttack, - Sneaking, - LongJumping, - Dying, -} - -#[derive(Debug, Clone, McBuf)] -pub struct VillagerData { - pub kind: azalea_registry::VillagerKind, - pub profession: azalea_registry::VillagerProfession, - #[var] - pub level: u32, -} - -impl TryFrom<EntityMetadataItems> for Vec<EntityDataValue> { - type Error = String; - - fn try_from(data: EntityMetadataItems) -> Result<Self, Self::Error> { - let mut data = data.0; - - data.sort_by(|a, b| a.index.cmp(&b.index)); - - let mut prev_indexes = IntSet::default(); - let len = data.len(); - // check to make sure it's valid, in vanilla this is guaranteed to pass - // but it's possible there's mods that mess with it so we want to make - // sure it's good - for item in &data { - if prev_indexes.contains(&item.index) { - return Err(format!("Index {} is duplicated", item.index)); - } - if item.index as usize > len { - return Err(format!("Index {} is too big", item.index)); - } - prev_indexes.insert(item.index); - } - - let data = data.into_iter().map(|d| d.value).collect(); - - Ok(data) - } -} - -#[derive(Debug, Copy, Clone, McBuf, Default)] -pub enum SnifferState { - #[default] - Idling, - FeelingHappy, - Scenting, - Sniffing, - Searching, - Digging, - Rising, -} diff --git a/azalea-world/src/entity/dimensions.rs b/azalea-world/src/entity/dimensions.rs deleted file mode 100755 index 5e716307..00000000 --- a/azalea-world/src/entity/dimensions.rs +++ /dev/null @@ -1,38 +0,0 @@ -use azalea_core::{Vec3, AABB}; -use bevy_ecs::{query::Changed, system::Query}; - -use super::{Physics, Position}; - -#[derive(Debug, Default)] -pub struct EntityDimensions { - pub width: f32, - pub height: f32, -} - -impl EntityDimensions { - pub fn make_bounding_box(&self, pos: &Vec3) -> AABB { - let radius = (self.width / 2.0) as f64; - let height = self.height as f64; - AABB { - min_x: pos.x - radius, - min_y: pos.y, - min_z: pos.z - radius, - - max_x: pos.x + radius, - max_y: pos.y + height, - max_z: pos.z + radius, - } - } -} - -/// Sets the position of the entity. This doesn't update the cache in -/// azalea-world, and should only be used within azalea-world! -/// -/// # Safety -/// Cached position in the world must be updated. -pub fn update_bounding_box(mut query: Query<(&Position, &mut Physics), Changed<Position>>) { - for (position, mut physics) in query.iter_mut() { - let bounding_box = physics.dimensions.make_bounding_box(position); - physics.bounding_box = bounding_box; - } -} diff --git a/azalea-world/src/entity/info.rs b/azalea-world/src/entity/info.rs deleted file mode 100644 index 03b72f94..00000000 --- a/azalea-world/src/entity/info.rs +++ /dev/null @@ -1,338 +0,0 @@ -//! Implement things relating to entity datas, like an index of uuids to -//! entities. - -use crate::{ - deduplicate_entities, deduplicate_local_entities, - entity::{ - self, add_dead, update_bounding_box, EntityUuid, MinecraftEntityId, Position, WorldName, - }, - update_entity_by_id_index, update_uuid_index, InstanceContainer, PartialInstance, -}; -use azalea_core::ChunkPos; -use bevy_app::{App, Plugin, PostUpdate, PreUpdate, Update}; -use bevy_ecs::{ - component::Component, - entity::Entity, - query::{Added, Changed, With, Without}, - schedule::{IntoSystemConfigs, SystemSet}, - system::{Commands, EntityCommand, Query, Res, ResMut, Resource}, - world::{EntityMut, World}, -}; -use derive_more::{Deref, DerefMut}; -use log::{debug, warn}; -use nohash_hasher::IntMap; -use parking_lot::RwLock; -use std::{ - collections::{HashMap, HashSet}, - fmt::Debug, - sync::Arc, -}; -use uuid::Uuid; - -use super::{Local, LookDirection}; - -/// A Bevy [`SystemSet`] for various types of entity updates. -#[derive(SystemSet, Debug, Hash, Eq, PartialEq, Clone)] -pub enum EntityUpdateSet { - /// Remove ECS entities that refer to an entity that was already in the ECS - /// before. - Deduplicate, - /// Create search indexes for entities. - Index, - /// Remove despawned entities from search indexes. - Deindex, -} - -/// Plugin handling some basic entity functionality. -pub struct EntityPlugin; -impl Plugin for EntityPlugin { - fn build(&self, app: &mut App) { - // entities get added pre-update - // added to indexes during update (done by this plugin) - // modified during update - // despawned post-update (done by this plugin) - app.add_systems( - PreUpdate, - remove_despawned_entities_from_indexes.in_set(EntityUpdateSet::Deindex), - ) - .add_systems( - PostUpdate, - (deduplicate_entities, deduplicate_local_entities).in_set(EntityUpdateSet::Deduplicate), - ) - .add_systems( - Update, - ( - ( - update_entity_chunk_positions, - update_uuid_index, - update_entity_by_id_index, - ) - .in_set(EntityUpdateSet::Index), - ( - add_updates_received, - debug_new_entity, - debug_detect_updates_received_on_local_entities, - add_dead, - update_bounding_box, - clamp_look_direction, - ), - ), - ) - .init_resource::<EntityInfos>(); - } -} - -fn debug_new_entity(query: Query<(Entity, Option<&Local>), Added<MinecraftEntityId>>) { - for (entity, local) in query.iter() { - if local.is_some() { - debug!("new local entity: {:?}", entity); - } else { - debug!("new entity: {:?}", entity); - } - } -} - -// How entity updates are processed (to avoid issues with shared worlds) -// - each bot contains a map of { entity id: updates received } -// - the shared world also contains a canonical "true" updates received for each -// entity -// - when a client loads an entity, its "updates received" is set to the same as -// the global "updates received" -// - when the shared world sees an entity for the first time, the "updates -// received" is set to 1. -// - clients can force the shared "updates received" to 0 to make it so certain -// entities (i.e. other bots in our swarm) don't get confused and updated by -// other bots -// - when a client gets an update to an entity, we check if our "updates -// received" is the same as the shared world's "updates received": if it is, -// then process the update and increment the client's and shared world's -// "updates received" if not, then we simply increment our local "updates -// received" and do nothing else - -/// Keep track of certain metadatas that are only relevant for this partial -/// world. -#[derive(Debug, Default)] -pub struct PartialEntityInfos { - // note: using MinecraftEntityId for entity ids is acceptable here since - // there's no chance of collisions here - /// The entity id of the player that owns this partial world. This will - /// make [`RelativeEntityUpdate`] pretend the entity doesn't exist so - /// it doesn't get modified from outside sources. - pub owner_entity: Option<Entity>, - /// A counter for each entity that tracks how many updates we've observed - /// for it. - /// - /// This is used for shared worlds (i.e. swarms), to make sure we don't - /// update entities twice on accident. - pub updates_received: IntMap<MinecraftEntityId, u32>, -} - -impl PartialEntityInfos { - pub fn new(owner_entity: Option<Entity>) -> Self { - Self { - owner_entity, - updates_received: IntMap::default(), - } - } -} - -/// An [`EntityCommand`] that applies a "relative update" to an entity, which -/// means this update won't be run multiple times by different clients in the -/// same world. -/// -/// This is used to avoid a bug where when there's multiple clients in the same -/// world and an entity sends a relative move packet to all clients, its -/// position gets desynced since the relative move is applied multiple times. -/// -/// Don't use this unless you actually got an entity update packet that all -/// other clients within render distance will get too. You usually don't need -/// this when the change isn't relative either. -pub struct RelativeEntityUpdate { - pub partial_world: Arc<RwLock<PartialInstance>>, - // a function that takes the entity and updates it - pub update: Box<dyn FnOnce(&mut EntityMut) + Send + Sync>, -} -impl EntityCommand for RelativeEntityUpdate { - fn apply(self, entity: Entity, world: &mut World) { - let partial_entity_infos = &mut self.partial_world.write().entity_infos; - - let mut entity_mut = world.entity_mut(entity); - - if Some(entity) == partial_entity_infos.owner_entity { - // if the entity owns this partial world, it's always allowed to update itself - (self.update)(&mut entity_mut); - return; - }; - - let entity_id = *entity_mut.get::<MinecraftEntityId>().unwrap(); - let Some(updates_received) = entity_mut.get_mut::<UpdatesReceived>() else { - // a client tried to update another client, which isn't allowed - return; - }; - - let this_client_updates_received = partial_entity_infos - .updates_received - .get(&entity_id) - .copied(); - - let can_update = this_client_updates_received.unwrap_or(1) == **updates_received; - if can_update { - let new_updates_received = this_client_updates_received.unwrap_or(0) + 1; - partial_entity_infos - .updates_received - .insert(entity_id, new_updates_received); - - **entity_mut.get_mut::<UpdatesReceived>().unwrap() = new_updates_received; - - let mut entity = world.entity_mut(entity); - (self.update)(&mut entity); - } - } -} - -/// Things that are shared between all the partial worlds. -#[derive(Resource, Default)] -pub struct EntityInfos { - /// An index of entities by their UUIDs - pub(crate) entity_by_uuid: HashMap<Uuid, Entity>, -} - -impl EntityInfos { - pub fn new() -> Self { - Self { - entity_by_uuid: HashMap::default(), - } - } - - pub fn get_entity_by_uuid(&self, uuid: &Uuid) -> Option<Entity> { - self.entity_by_uuid.get(uuid).copied() - } -} - -/// Update the chunk position indexes in [`EntityInfos`]. -fn update_entity_chunk_positions( - mut query: Query< - ( - Entity, - &entity::Position, - &mut entity::LastSentPosition, - &entity::WorldName, - ), - Changed<entity::Position>, - >, - instance_container: Res<InstanceContainer>, -) { - for (entity, pos, last_pos, world_name) in query.iter_mut() { - let world_lock = instance_container.get(world_name).unwrap(); - let mut world = world_lock.write(); - - let old_chunk = ChunkPos::from(*last_pos); - let new_chunk = ChunkPos::from(*pos); - - if old_chunk != new_chunk { - // move the entity from the old chunk to the new one - if let Some(entities) = world.entities_by_chunk.get_mut(&old_chunk) { - entities.remove(&entity); - } - world - .entities_by_chunk - .entry(new_chunk) - .or_default() - .insert(entity); - } - } -} -/// A component that lists all the local player entities that have this entity -/// loaded. If this is empty, the entity will be removed from the ECS. -#[derive(Component, Clone, Deref, DerefMut)] -pub struct LoadedBy(pub HashSet<Entity>); - -/// A component that counts the number of times this entity has been modified. -/// This is used for making sure two clients don't do the same relative update -/// on an entity. -/// -/// If an entity is local (i.e. it's a client/localplayer), this component -/// should NOT be present in the entity. -#[derive(Component, Debug, Deref, DerefMut)] -pub struct UpdatesReceived(u32); - -#[allow(clippy::type_complexity)] -pub fn add_updates_received( - mut commands: Commands, - query: Query< - Entity, - ( - Changed<MinecraftEntityId>, - (Without<UpdatesReceived>, Without<Local>), - ), - >, -) { - for entity in query.iter() { - // entities always start with 1 update received - commands.entity(entity).insert(UpdatesReceived(1)); - } -} - -/// The [`UpdatesReceived`] component should never be on [`Local`] entities. -/// This warns if an entity has both components. -fn debug_detect_updates_received_on_local_entities( - query: Query<Entity, (With<Local>, With<UpdatesReceived>)>, -) { - for entity in &query { - warn!("Entity {:?} has both Local and UpdatesReceived", entity); - } -} - -/// Despawn entities that aren't being loaded by anything. -fn remove_despawned_entities_from_indexes( - mut commands: Commands, - mut entity_infos: ResMut<EntityInfos>, - instance_container: Res<InstanceContainer>, - query: Query<(Entity, &EntityUuid, &Position, &WorldName, &LoadedBy), Changed<LoadedBy>>, -) { - for (entity, uuid, position, world_name, loaded_by) in &query { - let world_lock = instance_container.get(world_name).unwrap(); - let mut world = world_lock.write(); - - // if the entity has no references left, despawn it - if !loaded_by.is_empty() { - continue; - } - - // remove the entity from the chunk index - let chunk = ChunkPos::from(*position); - if let Some(entities_in_chunk) = world.entities_by_chunk.get_mut(&chunk) { - if entities_in_chunk.remove(&entity) { - // remove the chunk if there's no entities in it anymore - if entities_in_chunk.is_empty() { - world.entities_by_chunk.remove(&chunk); - } - } else { - warn!("Tried to remove entity from chunk {chunk:?} but the entity was not there."); - } - } else { - warn!("Tried to remove entity from chunk {chunk:?} but the chunk was not found."); - } - // remove it from the uuid index - if entity_infos.entity_by_uuid.remove(uuid).is_none() { - warn!("Tried to remove entity {entity:?} from the uuid index but it was not there."); - } - // and now remove the entity from the ecs - commands.entity(entity).despawn(); - debug!("Despawned entity {entity:?} because it was not loaded by anything."); - return; - } -} - -pub fn clamp_look_direction(mut query: Query<&mut LookDirection>) { - for mut look_direction in &mut query { - look_direction.y_rot %= 360.0; - look_direction.x_rot = look_direction.x_rot.clamp(-90.0, 90.0) % 360.0; - } -} - -impl Debug for EntityInfos { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("EntityInfos").finish() - } -} diff --git a/azalea-world/src/entity/metadata.rs b/azalea-world/src/entity/metadata.rs deleted file mode 100644 index ed7aa40c..00000000 --- a/azalea-world/src/entity/metadata.rs +++ /dev/null @@ -1,11380 +0,0 @@ -#![allow(clippy::single_match)] - -// This file is generated from codegen/lib/code/entity.py. -// Don't change it manually! - -use super::{ - EntityDataItem, EntityDataValue, OptionalUnsignedInt, Pose, Quaternion, Rotations, - SnifferState, VillagerData, -}; -use azalea_chat::FormattedText; -use azalea_core::{BlockPos, Direction, Particle, Vec3}; -use azalea_inventory::ItemSlot; -use bevy_ecs::{bundle::Bundle, component::Component}; -use derive_more::{Deref, DerefMut}; -use thiserror::Error; -use uuid::Uuid; - -#[derive(Error, Debug)] -pub enum UpdateMetadataError { - #[error("Wrong type ({0:?})")] - WrongType(EntityDataValue), -} -impl From<EntityDataValue> for UpdateMetadataError { - fn from(value: EntityDataValue) -> Self { - Self::WrongType(value) - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct OnFire(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ShiftKeyDown(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Sprinting(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Swimming(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CurrentlyGlowing(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Invisible(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct FallFlying(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AirSupply(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CustomName(pub Option<FormattedText>); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CustomNameVisible(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Silent(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct NoGravity(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TicksFrozen(pub i32); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct AutoSpinAttack(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct AbstractLivingUsingItem(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Health(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AbstractLivingEffectColor(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EffectAmbience(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ArrowCount(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StingerCount(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SleepingPos(pub Option<BlockPos>); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct NoAi(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LeftHanded(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Aggressive(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Dancing(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CanDuplicate(pub bool); -#[derive(Component)] -pub struct Allay; -impl Allay { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(Dancing(d.value.into_boolean()?)); - } - 17 => { - entity.insert(CanDuplicate(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AllayMetadataBundle { - _marker: Allay, - parent: AbstractCreatureMetadataBundle, - dancing: Dancing, - can_duplicate: CanDuplicate, -} -impl Default for AllayMetadataBundle { - fn default() -> Self { - Self { - _marker: Allay, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - dancing: Dancing(false), - can_duplicate: CanDuplicate(true), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Radius(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AreaEffectCloudColor(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Waiting(pub bool); -#[derive(Component)] -pub struct AreaEffectCloud; -impl AreaEffectCloud { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(Radius(d.value.into_float()?)); - } - 9 => { - entity.insert(AreaEffectCloudColor(d.value.into_int()?)); - } - 10 => { - entity.insert(Waiting(d.value.into_boolean()?)); - } - 11 => { - entity.insert(d.value.into_particle()?); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AreaEffectCloudMetadataBundle { - _marker: AreaEffectCloud, - parent: AbstractEntityMetadataBundle, - radius: Radius, - area_effect_cloud_color: AreaEffectCloudColor, - waiting: Waiting, - particle: Particle, -} -impl Default for AreaEffectCloudMetadataBundle { - fn default() -> Self { - Self { - _marker: AreaEffectCloud, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - radius: Radius(3.0), - area_effect_cloud_color: AreaEffectCloudColor(0), - waiting: Waiting(false), - particle: Particle::default(), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Small(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ShowArms(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct NoBasePlate(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ArmorStandMarker(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HeadPose(pub Rotations); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BodyPose(pub Rotations); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LeftArmPose(pub Rotations); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct RightArmPose(pub Rotations); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LeftLegPose(pub Rotations); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct RightLegPose(pub Rotations); -#[derive(Component)] -pub struct ArmorStand; -impl ArmorStand { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=14 => AbstractLiving::apply_metadata(entity, d)?, - 15 => { - let bitfield = d.value.into_byte()?; - entity.insert(Small(bitfield & 0x1 != 0)); - entity.insert(ShowArms(bitfield & 0x4 != 0)); - entity.insert(NoBasePlate(bitfield & 0x8 != 0)); - entity.insert(ArmorStandMarker(bitfield & 0x10 != 0)); - } - 16 => { - entity.insert(HeadPose(d.value.into_rotations()?)); - } - 17 => { - entity.insert(BodyPose(d.value.into_rotations()?)); - } - 18 => { - entity.insert(LeftArmPose(d.value.into_rotations()?)); - } - 19 => { - entity.insert(RightArmPose(d.value.into_rotations()?)); - } - 20 => { - entity.insert(LeftLegPose(d.value.into_rotations()?)); - } - 21 => { - entity.insert(RightLegPose(d.value.into_rotations()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ArmorStandMetadataBundle { - _marker: ArmorStand, - parent: AbstractLivingMetadataBundle, - small: Small, - show_arms: ShowArms, - no_base_plate: NoBasePlate, - armor_stand_marker: ArmorStandMarker, - head_pose: HeadPose, - body_pose: BodyPose, - left_arm_pose: LeftArmPose, - right_arm_pose: RightArmPose, - left_leg_pose: LeftLegPose, - right_leg_pose: RightLegPose, -} -impl Default for ArmorStandMetadataBundle { - fn default() -> Self { - Self { - _marker: ArmorStand, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - small: Small(false), - show_arms: ShowArms(false), - no_base_plate: NoBasePlate(false), - armor_stand_marker: ArmorStandMarker(false), - head_pose: HeadPose(Default::default()), - body_pose: BodyPose(Default::default()), - left_arm_pose: LeftArmPose(Default::default()), - right_arm_pose: RightArmPose(Default::default()), - left_leg_pose: LeftLegPose(Default::default()), - right_leg_pose: RightLegPose(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ArrowCritArrow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ArrowShotFromCrossbow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ArrowNoPhysics(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ArrowPierceLevel(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ArrowEffectColor(pub i32); -#[derive(Component)] -pub struct Arrow; -impl Arrow { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - let bitfield = d.value.into_byte()?; - entity.insert(ArrowCritArrow(bitfield & 0x1 != 0)); - entity.insert(ArrowShotFromCrossbow(bitfield & 0x4 != 0)); - entity.insert(ArrowNoPhysics(bitfield & 0x2 != 0)); - } - 9 => { - entity.insert(ArrowPierceLevel(d.value.into_byte()?)); - } - 10 => { - entity.insert(ArrowEffectColor(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ArrowMetadataBundle { - _marker: Arrow, - parent: AbstractEntityMetadataBundle, - arrow_crit_arrow: ArrowCritArrow, - arrow_shot_from_crossbow: ArrowShotFromCrossbow, - arrow_no_physics: ArrowNoPhysics, - arrow_pierce_level: ArrowPierceLevel, - arrow_effect_color: ArrowEffectColor, -} -impl Default for ArrowMetadataBundle { - fn default() -> Self { - Self { - _marker: Arrow, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - arrow_crit_arrow: ArrowCritArrow(false), - arrow_shot_from_crossbow: ArrowShotFromCrossbow(false), - arrow_no_physics: ArrowNoPhysics(false), - arrow_pierce_level: ArrowPierceLevel(0), - arrow_effect_color: ArrowEffectColor(-1), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AbstractAgeableBaby(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AxolotlVariant(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PlayingDead(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AxolotlFromBucket(pub bool); -#[derive(Component)] -pub struct Axolotl; -impl Axolotl { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(AxolotlVariant(d.value.into_int()?)); - } - 18 => { - entity.insert(PlayingDead(d.value.into_boolean()?)); - } - 19 => { - entity.insert(AxolotlFromBucket(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AxolotlMetadataBundle { - _marker: Axolotl, - parent: AbstractAnimalMetadataBundle, - axolotl_variant: AxolotlVariant, - playing_dead: PlayingDead, - axolotl_from_bucket: AxolotlFromBucket, -} -impl Default for AxolotlMetadataBundle { - fn default() -> Self { - Self { - _marker: Axolotl, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - axolotl_variant: AxolotlVariant(0), - playing_dead: PlayingDead(false), - axolotl_from_bucket: AxolotlFromBucket(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Resting(pub bool); -#[derive(Component)] -pub struct Bat; -impl Bat { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - 16 => { - let bitfield = d.value.into_byte()?; - entity.insert(Resting(bitfield & 0x1 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct BatMetadataBundle { - _marker: Bat, - parent: AbstractInsentientMetadataBundle, - resting: Resting, -} -impl Default for BatMetadataBundle { - fn default() -> Self { - Self { - _marker: Bat, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - resting: Resting(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HasNectar(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HasStung(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct BeeRolling(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BeeRemainingAngerTime(pub i32); -#[derive(Component)] -pub struct Bee; -impl Bee { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(HasNectar(bitfield & 0x8 != 0)); - entity.insert(HasStung(bitfield & 0x4 != 0)); - entity.insert(BeeRolling(bitfield & 0x2 != 0)); - } - 18 => { - entity.insert(BeeRemainingAngerTime(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct BeeMetadataBundle { - _marker: Bee, - parent: AbstractAnimalMetadataBundle, - has_nectar: HasNectar, - has_stung: HasStung, - bee_rolling: BeeRolling, - bee_remaining_anger_time: BeeRemainingAngerTime, -} -impl Default for BeeMetadataBundle { - fn default() -> Self { - Self { - _marker: Bee, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - has_nectar: HasNectar(false), - has_stung: HasStung(false), - bee_rolling: BeeRolling(false), - bee_remaining_anger_time: BeeRemainingAngerTime(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Charged(pub bool); -#[derive(Component)] -pub struct Blaze; -impl Blaze { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - let bitfield = d.value.into_byte()?; - entity.insert(Charged(bitfield & 0x1 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct BlazeMetadataBundle { - _marker: Blaze, - parent: AbstractMonsterMetadataBundle, - charged: Charged, -} -impl Default for BlazeMetadataBundle { - fn default() -> Self { - Self { - _marker: Blaze, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - charged: Charged(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayInterpolationStartDeltaTicks(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayInterpolationDuration(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayTranslation(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayScale(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayLeftRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayRightRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayBillboardRenderConstraints(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayBrightnessOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayViewRange(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayShadowRadius(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayShadowStrength(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayWidth(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayHeight(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayGlowColorOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockState(pub azalea_block::BlockState); -#[derive(Component)] -pub struct BlockDisplay; -impl BlockDisplay { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(BlockDisplayInterpolationStartDeltaTicks( - d.value.into_int()?, - )); - } - 9 => { - entity.insert(BlockDisplayInterpolationDuration(d.value.into_int()?)); - } - 10 => { - entity.insert(BlockDisplayTranslation(d.value.into_vector3()?)); - } - 11 => { - entity.insert(BlockDisplayScale(d.value.into_vector3()?)); - } - 12 => { - entity.insert(BlockDisplayLeftRotation(d.value.into_quaternion()?)); - } - 13 => { - entity.insert(BlockDisplayRightRotation(d.value.into_quaternion()?)); - } - 14 => { - entity.insert(BlockDisplayBillboardRenderConstraints(d.value.into_byte()?)); - } - 15 => { - entity.insert(BlockDisplayBrightnessOverride(d.value.into_int()?)); - } - 16 => { - entity.insert(BlockDisplayViewRange(d.value.into_float()?)); - } - 17 => { - entity.insert(BlockDisplayShadowRadius(d.value.into_float()?)); - } - 18 => { - entity.insert(BlockDisplayShadowStrength(d.value.into_float()?)); - } - 19 => { - entity.insert(BlockDisplayWidth(d.value.into_float()?)); - } - 20 => { - entity.insert(BlockDisplayHeight(d.value.into_float()?)); - } - 21 => { - entity.insert(BlockDisplayGlowColorOverride(d.value.into_int()?)); - } - 22 => { - entity.insert(BlockState(d.value.into_block_state()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct BlockDisplayMetadataBundle { - _marker: BlockDisplay, - parent: AbstractEntityMetadataBundle, - block_display_interpolation_start_delta_ticks: BlockDisplayInterpolationStartDeltaTicks, - block_display_interpolation_duration: BlockDisplayInterpolationDuration, - block_display_translation: BlockDisplayTranslation, - block_display_scale: BlockDisplayScale, - block_display_left_rotation: BlockDisplayLeftRotation, - block_display_right_rotation: BlockDisplayRightRotation, - block_display_billboard_render_constraints: BlockDisplayBillboardRenderConstraints, - block_display_brightness_override: BlockDisplayBrightnessOverride, - block_display_view_range: BlockDisplayViewRange, - block_display_shadow_radius: BlockDisplayShadowRadius, - block_display_shadow_strength: BlockDisplayShadowStrength, - block_display_width: BlockDisplayWidth, - block_display_height: BlockDisplayHeight, - block_display_glow_color_override: BlockDisplayGlowColorOverride, - block_state: BlockState, -} -impl Default for BlockDisplayMetadataBundle { - fn default() -> Self { - Self { - _marker: BlockDisplay, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - block_display_interpolation_start_delta_ticks: BlockDisplayInterpolationStartDeltaTicks( - 0, - ), - block_display_interpolation_duration: BlockDisplayInterpolationDuration(0), - block_display_translation: BlockDisplayTranslation(Vec3 { - x: 0.0, - y: 0.0, - z: 0.0, - }), - block_display_scale: BlockDisplayScale(Vec3 { - x: 1.0, - y: 1.0, - z: 1.0, - }), - block_display_left_rotation: BlockDisplayLeftRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - block_display_right_rotation: BlockDisplayRightRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - block_display_billboard_render_constraints: BlockDisplayBillboardRenderConstraints( - Default::default(), - ), - block_display_brightness_override: BlockDisplayBrightnessOverride(-1), - block_display_view_range: BlockDisplayViewRange(1.0), - block_display_shadow_radius: BlockDisplayShadowRadius(0.0), - block_display_shadow_strength: BlockDisplayShadowStrength(1.0), - block_display_width: BlockDisplayWidth(0.0), - block_display_height: BlockDisplayHeight(0.0), - block_display_glow_color_override: BlockDisplayGlowColorOverride(-1), - block_state: BlockState(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BoatHurt(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BoatHurtdir(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BoatDamage(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BoatKind(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PaddleLeft(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PaddleRight(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BubbleTime(pub i32); -#[derive(Component)] -pub struct Boat; -impl Boat { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(BoatHurt(d.value.into_int()?)); - } - 9 => { - entity.insert(BoatHurtdir(d.value.into_int()?)); - } - 10 => { - entity.insert(BoatDamage(d.value.into_float()?)); - } - 11 => { - entity.insert(BoatKind(d.value.into_int()?)); - } - 12 => { - entity.insert(PaddleLeft(d.value.into_boolean()?)); - } - 13 => { - entity.insert(PaddleRight(d.value.into_boolean()?)); - } - 14 => { - entity.insert(BubbleTime(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct BoatMetadataBundle { - _marker: Boat, - parent: AbstractEntityMetadataBundle, - boat_hurt: BoatHurt, - boat_hurtdir: BoatHurtdir, - boat_damage: BoatDamage, - boat_kind: BoatKind, - paddle_left: PaddleLeft, - paddle_right: PaddleRight, - bubble_time: BubbleTime, -} -impl Default for BoatMetadataBundle { - fn default() -> Self { - Self { - _marker: Boat, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - boat_hurt: BoatHurt(0), - boat_hurtdir: BoatHurtdir(1), - boat_damage: BoatDamage(0.0), - boat_kind: BoatKind(Default::default()), - paddle_left: PaddleLeft(false), - paddle_right: PaddleRight(false), - bubble_time: BubbleTime(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CamelTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CamelEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CamelStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CamelBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct CamelSaddled(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Dash(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LastPoseChangeTick(pub i64); -#[derive(Component)] -pub struct Camel; -impl Camel { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(CamelTamed(bitfield & 0x2 != 0)); - entity.insert(CamelEating(bitfield & 0x10 != 0)); - entity.insert(CamelStanding(bitfield & 0x20 != 0)); - entity.insert(CamelBred(bitfield & 0x8 != 0)); - entity.insert(CamelSaddled(bitfield & 0x4 != 0)); - } - 18 => { - entity.insert(Dash(d.value.into_boolean()?)); - } - 19 => { - entity.insert(LastPoseChangeTick(d.value.into_long()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CamelMetadataBundle { - _marker: Camel, - parent: AbstractAnimalMetadataBundle, - camel_tamed: CamelTamed, - camel_eating: CamelEating, - camel_standing: CamelStanding, - camel_bred: CamelBred, - camel_saddled: CamelSaddled, - dash: Dash, - last_pose_change_tick: LastPoseChangeTick, -} -impl Default for CamelMetadataBundle { - fn default() -> Self { - Self { - _marker: Camel, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - camel_tamed: CamelTamed(false), - camel_eating: CamelEating(false), - camel_standing: CamelStanding(false), - camel_bred: CamelBred(false), - camel_saddled: CamelSaddled(false), - dash: Dash(false), - last_pose_change_tick: LastPoseChangeTick(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Tame(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct InSittingPose(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Owneruuid(pub Option<Uuid>); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CatVariant(pub azalea_registry::CatVariant); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsLying(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct RelaxStateOne(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CatCollarColor(pub i32); -#[derive(Component)] -pub struct Cat; -impl Cat { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => AbstractTameable::apply_metadata(entity, d)?, - 19 => { - entity.insert(CatVariant(d.value.into_cat_variant()?)); - } - 20 => { - entity.insert(IsLying(d.value.into_boolean()?)); - } - 21 => { - entity.insert(RelaxStateOne(d.value.into_boolean()?)); - } - 22 => { - entity.insert(CatCollarColor(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CatMetadataBundle { - _marker: Cat, - parent: AbstractTameableMetadataBundle, - cat_variant: CatVariant, - is_lying: IsLying, - relax_state_one: RelaxStateOne, - cat_collar_color: CatCollarColor, -} -impl Default for CatMetadataBundle { - fn default() -> Self { - Self { - _marker: Cat, - parent: AbstractTameableMetadataBundle { - _marker: AbstractTameable, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - tame: Tame(false), - in_sitting_pose: InSittingPose(false), - owneruuid: Owneruuid(None), - }, - cat_variant: CatVariant(azalea_registry::CatVariant::Tabby), - is_lying: IsLying(false), - relax_state_one: RelaxStateOne(false), - cat_collar_color: CatCollarColor(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Climbing(pub bool); -#[derive(Component)] -pub struct CaveSpider; -impl CaveSpider { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => Spider::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CaveSpiderMetadataBundle { - _marker: CaveSpider, - parent: SpiderMetadataBundle, -} -impl Default for CaveSpiderMetadataBundle { - fn default() -> Self { - Self { - _marker: CaveSpider, - parent: SpiderMetadataBundle { - _marker: Spider, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - climbing: Climbing(false), - }, - } - } -} - -#[derive(Component)] -pub struct ChestBoat; -impl ChestBoat { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=14 => Boat::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ChestBoatMetadataBundle { - _marker: ChestBoat, - parent: BoatMetadataBundle, -} -impl Default for ChestBoatMetadataBundle { - fn default() -> Self { - Self { - _marker: ChestBoat, - parent: BoatMetadataBundle { - _marker: Boat, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - boat_hurt: BoatHurt(0), - boat_hurtdir: BoatHurtdir(1), - boat_damage: BoatDamage(0.0), - boat_kind: BoatKind(Default::default()), - paddle_left: PaddleLeft(false), - paddle_right: PaddleRight(false), - bubble_time: BubbleTime(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AbstractMinecartHurt(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AbstractMinecartHurtdir(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AbstractMinecartDamage(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DisplayBlock(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DisplayOffset(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CustomDisplay(pub bool); -#[derive(Component)] -pub struct ChestMinecart; -impl ChestMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ChestMinecartMetadataBundle { - _marker: ChestMinecart, - parent: AbstractMinecartMetadataBundle, -} -impl Default for ChestMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: ChestMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - } - } -} - -#[derive(Component)] -pub struct Chicken; -impl Chicken { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ChickenMetadataBundle { - _marker: Chicken, - parent: AbstractAnimalMetadataBundle, -} -impl Default for ChickenMetadataBundle { - fn default() -> Self { - Self { - _marker: Chicken, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CodFromBucket(pub bool); -#[derive(Component)] -pub struct Cod; -impl Cod { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(CodFromBucket(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CodMetadataBundle { - _marker: Cod, - parent: AbstractCreatureMetadataBundle, - cod_from_bucket: CodFromBucket, -} -impl Default for CodMetadataBundle { - fn default() -> Self { - Self { - _marker: Cod, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - cod_from_bucket: CodFromBucket(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CommandName(pub String); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LastOutput(pub FormattedText); -#[derive(Component)] -pub struct CommandBlockMinecart; -impl CommandBlockMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - 14 => { - entity.insert(CommandName(d.value.into_string()?)); - } - 15 => { - entity.insert(LastOutput(d.value.into_formatted_text()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CommandBlockMinecartMetadataBundle { - _marker: CommandBlockMinecart, - parent: AbstractMinecartMetadataBundle, - command_name: CommandName, - last_output: LastOutput, -} -impl Default for CommandBlockMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: CommandBlockMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - command_name: CommandName("".to_string()), - last_output: LastOutput(Default::default()), - } - } -} - -#[derive(Component)] -pub struct Cow; -impl Cow { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CowMetadataBundle { - _marker: Cow, - parent: AbstractAnimalMetadataBundle, -} -impl Default for CowMetadataBundle { - fn default() -> Self { - Self { - _marker: Cow, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SwellDir(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsPowered(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsIgnited(pub bool); -#[derive(Component)] -pub struct Creeper; -impl Creeper { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(SwellDir(d.value.into_int()?)); - } - 17 => { - entity.insert(IsPowered(d.value.into_boolean()?)); - } - 18 => { - entity.insert(IsIgnited(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct CreeperMetadataBundle { - _marker: Creeper, - parent: AbstractMonsterMetadataBundle, - swell_dir: SwellDir, - is_powered: IsPowered, - is_ignited: IsIgnited, -} -impl Default for CreeperMetadataBundle { - fn default() -> Self { - Self { - _marker: Creeper, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - swell_dir: SwellDir(-1), - is_powered: IsPowered(false), - is_ignited: IsIgnited(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TreasurePos(pub BlockPos); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct GotFish(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct MoistnessLevel(pub i32); -#[derive(Component)] -pub struct Dolphin; -impl Dolphin { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(TreasurePos(d.value.into_block_pos()?)); - } - 17 => { - entity.insert(GotFish(d.value.into_boolean()?)); - } - 18 => { - entity.insert(MoistnessLevel(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct DolphinMetadataBundle { - _marker: Dolphin, - parent: AbstractCreatureMetadataBundle, - treasure_pos: TreasurePos, - got_fish: GotFish, - moistness_level: MoistnessLevel, -} -impl Default for DolphinMetadataBundle { - fn default() -> Self { - Self { - _marker: Dolphin, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - treasure_pos: TreasurePos(BlockPos::new(0, 0, 0)), - got_fish: GotFish(false), - moistness_level: MoistnessLevel(2400), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct DonkeyTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct DonkeyEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct DonkeyStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct DonkeyBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct DonkeySaddled(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DonkeyChest(pub bool); -#[derive(Component)] -pub struct Donkey; -impl Donkey { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(DonkeyTamed(bitfield & 0x2 != 0)); - entity.insert(DonkeyEating(bitfield & 0x10 != 0)); - entity.insert(DonkeyStanding(bitfield & 0x20 != 0)); - entity.insert(DonkeyBred(bitfield & 0x8 != 0)); - entity.insert(DonkeySaddled(bitfield & 0x4 != 0)); - } - 18 => { - entity.insert(DonkeyChest(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct DonkeyMetadataBundle { - _marker: Donkey, - parent: AbstractAnimalMetadataBundle, - donkey_tamed: DonkeyTamed, - donkey_eating: DonkeyEating, - donkey_standing: DonkeyStanding, - donkey_bred: DonkeyBred, - donkey_saddled: DonkeySaddled, - donkey_chest: DonkeyChest, -} -impl Default for DonkeyMetadataBundle { - fn default() -> Self { - Self { - _marker: Donkey, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - donkey_tamed: DonkeyTamed(false), - donkey_eating: DonkeyEating(false), - donkey_standing: DonkeyStanding(false), - donkey_bred: DonkeyBred(false), - donkey_saddled: DonkeySaddled(false), - donkey_chest: DonkeyChest(false), - } - } -} - -#[derive(Component)] -pub struct DragonFireball; -impl DragonFireball { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct DragonFireballMetadataBundle { - _marker: DragonFireball, - parent: AbstractEntityMetadataBundle, -} -impl Default for DragonFireballMetadataBundle { - fn default() -> Self { - Self { - _marker: DragonFireball, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ZombieBaby(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SpecialType(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DrownedConversion(pub bool); -#[derive(Component)] -pub struct Drowned; -impl Drowned { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => Zombie::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct DrownedMetadataBundle { - _marker: Drowned, - parent: ZombieMetadataBundle, -} -impl Default for DrownedMetadataBundle { - fn default() -> Self { - Self { - _marker: Drowned, - parent: ZombieMetadataBundle { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zombie_baby: ZombieBaby(false), - special_type: SpecialType(0), - drowned_conversion: DrownedConversion(false), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EggItemStack(pub ItemSlot); -#[derive(Component)] -pub struct Egg; -impl Egg { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(EggItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EggMetadataBundle { - _marker: Egg, - parent: AbstractEntityMetadataBundle, - egg_item_stack: EggItemStack, -} -impl Default for EggMetadataBundle { - fn default() -> Self { - Self { - _marker: Egg, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - egg_item_stack: EggItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Moving(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AttackTarget(pub i32); -#[derive(Component)] -pub struct ElderGuardian; -impl ElderGuardian { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=17 => Guardian::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ElderGuardianMetadataBundle { - _marker: ElderGuardian, - parent: GuardianMetadataBundle, -} -impl Default for ElderGuardianMetadataBundle { - fn default() -> Self { - Self { - _marker: ElderGuardian, - parent: GuardianMetadataBundle { - _marker: Guardian, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - moving: Moving(false), - attack_target: AttackTarget(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BeamTarget(pub Option<BlockPos>); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ShowBottom(pub bool); -#[derive(Component)] -pub struct EndCrystal; -impl EndCrystal { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(BeamTarget(d.value.into_optional_block_pos()?)); - } - 9 => { - entity.insert(ShowBottom(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EndCrystalMetadataBundle { - _marker: EndCrystal, - parent: AbstractEntityMetadataBundle, - beam_target: BeamTarget, - show_bottom: ShowBottom, -} -impl Default for EndCrystalMetadataBundle { - fn default() -> Self { - Self { - _marker: EndCrystal, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - beam_target: BeamTarget(None), - show_bottom: ShowBottom(true), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Phase(pub i32); -#[derive(Component)] -pub struct EnderDragon; -impl EnderDragon { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - 16 => { - entity.insert(Phase(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EnderDragonMetadataBundle { - _marker: EnderDragon, - parent: AbstractInsentientMetadataBundle, - phase: Phase, -} -impl Default for EnderDragonMetadataBundle { - fn default() -> Self { - Self { - _marker: EnderDragon, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - phase: Phase(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EnderPearlItemStack(pub ItemSlot); -#[derive(Component)] -pub struct EnderPearl; -impl EnderPearl { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(EnderPearlItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EnderPearlMetadataBundle { - _marker: EnderPearl, - parent: AbstractEntityMetadataBundle, - ender_pearl_item_stack: EnderPearlItemStack, -} -impl Default for EnderPearlMetadataBundle { - fn default() -> Self { - Self { - _marker: EnderPearl, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - ender_pearl_item_stack: EnderPearlItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct CarryState(pub azalea_block::BlockState); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Creepy(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StaredAt(pub bool); -#[derive(Component)] -pub struct Enderman; -impl Enderman { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(CarryState(d.value.into_optional_block_state()?)); - } - 17 => { - entity.insert(Creepy(d.value.into_boolean()?)); - } - 18 => { - entity.insert(StaredAt(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EndermanMetadataBundle { - _marker: Enderman, - parent: AbstractMonsterMetadataBundle, - carry_state: CarryState, - creepy: Creepy, - stared_at: StaredAt, -} -impl Default for EndermanMetadataBundle { - fn default() -> Self { - Self { - _marker: Enderman, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - carry_state: CarryState(azalea_block::BlockState::AIR), - creepy: Creepy(false), - stared_at: StaredAt(false), - } - } -} - -#[derive(Component)] -pub struct Endermite; -impl Endermite { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EndermiteMetadataBundle { - _marker: Endermite, - parent: AbstractMonsterMetadataBundle, -} -impl Default for EndermiteMetadataBundle { - fn default() -> Self { - Self { - _marker: Endermite, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EvokerIsCelebrating(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EvokerSpellCasting(pub u8); -#[derive(Component)] -pub struct Evoker; -impl Evoker { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(EvokerIsCelebrating(d.value.into_boolean()?)); - } - 17 => { - entity.insert(EvokerSpellCasting(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EvokerMetadataBundle { - _marker: Evoker, - parent: AbstractMonsterMetadataBundle, - evoker_is_celebrating: EvokerIsCelebrating, - evoker_spell_casting: EvokerSpellCasting, -} -impl Default for EvokerMetadataBundle { - fn default() -> Self { - Self { - _marker: Evoker, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - evoker_is_celebrating: EvokerIsCelebrating(false), - evoker_spell_casting: EvokerSpellCasting(0), - } - } -} - -#[derive(Component)] -pub struct EvokerFangs; -impl EvokerFangs { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EvokerFangsMetadataBundle { - _marker: EvokerFangs, - parent: AbstractEntityMetadataBundle, -} -impl Default for EvokerFangsMetadataBundle { - fn default() -> Self { - Self { - _marker: EvokerFangs, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ExperienceBottleItemStack(pub ItemSlot); -#[derive(Component)] -pub struct ExperienceBottle; -impl ExperienceBottle { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(ExperienceBottleItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ExperienceBottleMetadataBundle { - _marker: ExperienceBottle, - parent: AbstractEntityMetadataBundle, - experience_bottle_item_stack: ExperienceBottleItemStack, -} -impl Default for ExperienceBottleMetadataBundle { - fn default() -> Self { - Self { - _marker: ExperienceBottle, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - experience_bottle_item_stack: ExperienceBottleItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component)] -pub struct ExperienceOrb; -impl ExperienceOrb { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ExperienceOrbMetadataBundle { - _marker: ExperienceOrb, - parent: AbstractEntityMetadataBundle, -} -impl Default for ExperienceOrbMetadataBundle { - fn default() -> Self { - Self { - _marker: ExperienceOrb, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EyeOfEnderItemStack(pub ItemSlot); -#[derive(Component)] -pub struct EyeOfEnder; -impl EyeOfEnder { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(EyeOfEnderItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct EyeOfEnderMetadataBundle { - _marker: EyeOfEnder, - parent: AbstractEntityMetadataBundle, - eye_of_ender_item_stack: EyeOfEnderItemStack, -} -impl Default for EyeOfEnderMetadataBundle { - fn default() -> Self { - Self { - _marker: EyeOfEnder, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - eye_of_ender_item_stack: EyeOfEnderItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StartPos(pub BlockPos); -#[derive(Component)] -pub struct FallingBlock; -impl FallingBlock { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(StartPos(d.value.into_block_pos()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FallingBlockMetadataBundle { - _marker: FallingBlock, - parent: AbstractEntityMetadataBundle, - start_pos: StartPos, -} -impl Default for FallingBlockMetadataBundle { - fn default() -> Self { - Self { - _marker: FallingBlock, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - start_pos: StartPos(BlockPos::new(0, 0, 0)), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct FireballItemStack(pub ItemSlot); -#[derive(Component)] -pub struct Fireball; -impl Fireball { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(FireballItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FireballMetadataBundle { - _marker: Fireball, - parent: AbstractEntityMetadataBundle, - fireball_item_stack: FireballItemStack, -} -impl Default for FireballMetadataBundle { - fn default() -> Self { - Self { - _marker: Fireball, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - fireball_item_stack: FireballItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct FireworksItem(pub ItemSlot); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AttachedToTarget(pub OptionalUnsignedInt); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ShotAtAngle(pub bool); -#[derive(Component)] -pub struct FireworkRocket; -impl FireworkRocket { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(FireworksItem(d.value.into_item_stack()?)); - } - 9 => { - entity.insert(AttachedToTarget(d.value.into_optional_unsigned_int()?)); - } - 10 => { - entity.insert(ShotAtAngle(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FireworkRocketMetadataBundle { - _marker: FireworkRocket, - parent: AbstractEntityMetadataBundle, - fireworks_item: FireworksItem, - attached_to_target: AttachedToTarget, - shot_at_angle: ShotAtAngle, -} -impl Default for FireworkRocketMetadataBundle { - fn default() -> Self { - Self { - _marker: FireworkRocket, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - fireworks_item: FireworksItem(ItemSlot::Empty), - attached_to_target: AttachedToTarget(OptionalUnsignedInt(None)), - shot_at_angle: ShotAtAngle(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HookedEntity(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Biting(pub bool); -#[derive(Component)] -pub struct FishingBobber; -impl FishingBobber { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(HookedEntity(d.value.into_int()?)); - } - 9 => { - entity.insert(Biting(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FishingBobberMetadataBundle { - _marker: FishingBobber, - parent: AbstractEntityMetadataBundle, - hooked_entity: HookedEntity, - biting: Biting, -} -impl Default for FishingBobberMetadataBundle { - fn default() -> Self { - Self { - _marker: FishingBobber, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - hooked_entity: HookedEntity(0), - biting: Biting(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct FoxKind(pub i32); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct FoxSitting(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Faceplanted(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Sleeping(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Pouncing(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Crouching(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct FoxInterested(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TrustedId0(pub Option<Uuid>); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TrustedId1(pub Option<Uuid>); -#[derive(Component)] -pub struct Fox; -impl Fox { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(FoxKind(d.value.into_int()?)); - } - 18 => { - let bitfield = d.value.into_byte()?; - entity.insert(FoxSitting(bitfield & 0x1 != 0)); - entity.insert(Faceplanted(bitfield & 0x40 != 0)); - entity.insert(Sleeping(bitfield & 0x20 != 0)); - entity.insert(Pouncing(bitfield & 0x10 != 0)); - entity.insert(Crouching(bitfield & 0x4 != 0)); - entity.insert(FoxInterested(bitfield & 0x8 != 0)); - } - 19 => { - entity.insert(TrustedId0(d.value.into_optional_uuid()?)); - } - 20 => { - entity.insert(TrustedId1(d.value.into_optional_uuid()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FoxMetadataBundle { - _marker: Fox, - parent: AbstractAnimalMetadataBundle, - fox_kind: FoxKind, - fox_sitting: FoxSitting, - faceplanted: Faceplanted, - sleeping: Sleeping, - pouncing: Pouncing, - crouching: Crouching, - fox_interested: FoxInterested, - trusted_id_0: TrustedId0, - trusted_id_1: TrustedId1, -} -impl Default for FoxMetadataBundle { - fn default() -> Self { - Self { - _marker: Fox, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - fox_kind: FoxKind(0), - fox_sitting: FoxSitting(false), - faceplanted: Faceplanted(false), - sleeping: Sleeping(false), - pouncing: Pouncing(false), - crouching: Crouching(false), - fox_interested: FoxInterested(false), - trusted_id_0: TrustedId0(None), - trusted_id_1: TrustedId1(None), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct FrogVariant(pub azalea_registry::FrogVariant); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TongueTarget(pub OptionalUnsignedInt); -#[derive(Component)] -pub struct Frog; -impl Frog { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(FrogVariant(d.value.into_frog_variant()?)); - } - 18 => { - entity.insert(TongueTarget(d.value.into_optional_unsigned_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FrogMetadataBundle { - _marker: Frog, - parent: AbstractAnimalMetadataBundle, - frog_variant: FrogVariant, - tongue_target: TongueTarget, -} -impl Default for FrogMetadataBundle { - fn default() -> Self { - Self { - _marker: Frog, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - frog_variant: FrogVariant(azalea_registry::FrogVariant::Temperate), - tongue_target: TongueTarget(OptionalUnsignedInt(None)), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Fuel(pub bool); -#[derive(Component)] -pub struct FurnaceMinecart; -impl FurnaceMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - 14 => { - entity.insert(Fuel(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct FurnaceMinecartMetadataBundle { - _marker: FurnaceMinecart, - parent: AbstractMinecartMetadataBundle, - fuel: Fuel, -} -impl Default for FurnaceMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: FurnaceMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - fuel: Fuel(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsCharging(pub bool); -#[derive(Component)] -pub struct Ghast; -impl Ghast { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - 16 => { - entity.insert(IsCharging(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GhastMetadataBundle { - _marker: Ghast, - parent: AbstractInsentientMetadataBundle, - is_charging: IsCharging, -} -impl Default for GhastMetadataBundle { - fn default() -> Self { - Self { - _marker: Ghast, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - is_charging: IsCharging(false), - } - } -} - -#[derive(Component)] -pub struct Giant; -impl Giant { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GiantMetadataBundle { - _marker: Giant, - parent: AbstractMonsterMetadataBundle, -} -impl Default for GiantMetadataBundle { - fn default() -> Self { - Self { - _marker: Giant, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemFrameItem(pub ItemSlot); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Rotation(pub i32); -#[derive(Component)] -pub struct GlowItemFrame; -impl GlowItemFrame { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=9 => ItemFrame::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GlowItemFrameMetadataBundle { - _marker: GlowItemFrame, - parent: ItemFrameMetadataBundle, -} -impl Default for GlowItemFrameMetadataBundle { - fn default() -> Self { - Self { - _marker: GlowItemFrame, - parent: ItemFrameMetadataBundle { - _marker: ItemFrame, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - item_frame_item: ItemFrameItem(ItemSlot::Empty), - rotation: Rotation(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DarkTicksRemaining(pub i32); -#[derive(Component)] -pub struct GlowSquid; -impl GlowSquid { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => Squid::apply_metadata(entity, d)?, - 16 => { - entity.insert(DarkTicksRemaining(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GlowSquidMetadataBundle { - _marker: GlowSquid, - parent: SquidMetadataBundle, - dark_ticks_remaining: DarkTicksRemaining, -} -impl Default for GlowSquidMetadataBundle { - fn default() -> Self { - Self { - _marker: GlowSquid, - parent: SquidMetadataBundle { - _marker: Squid, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - dark_ticks_remaining: DarkTicksRemaining(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsScreamingGoat(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HasLeftHorn(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HasRightHorn(pub bool); -#[derive(Component)] -pub struct Goat; -impl Goat { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(IsScreamingGoat(d.value.into_boolean()?)); - } - 18 => { - entity.insert(HasLeftHorn(d.value.into_boolean()?)); - } - 19 => { - entity.insert(HasRightHorn(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GoatMetadataBundle { - _marker: Goat, - parent: AbstractAnimalMetadataBundle, - is_screaming_goat: IsScreamingGoat, - has_left_horn: HasLeftHorn, - has_right_horn: HasRightHorn, -} -impl Default for GoatMetadataBundle { - fn default() -> Self { - Self { - _marker: Goat, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - is_screaming_goat: IsScreamingGoat(false), - has_left_horn: HasLeftHorn(true), - has_right_horn: HasRightHorn(true), - } - } -} - -#[derive(Component)] -pub struct Guardian; -impl Guardian { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(Moving(d.value.into_boolean()?)); - } - 17 => { - entity.insert(AttackTarget(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct GuardianMetadataBundle { - _marker: Guardian, - parent: AbstractMonsterMetadataBundle, - moving: Moving, - attack_target: AttackTarget, -} -impl Default for GuardianMetadataBundle { - fn default() -> Self { - Self { - _marker: Guardian, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - moving: Moving(false), - attack_target: AttackTarget(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HoglinImmuneToZombification(pub bool); -#[derive(Component)] -pub struct Hoglin; -impl Hoglin { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(HoglinImmuneToZombification(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct HoglinMetadataBundle { - _marker: Hoglin, - parent: AbstractAnimalMetadataBundle, - hoglin_immune_to_zombification: HoglinImmuneToZombification, -} -impl Default for HoglinMetadataBundle { - fn default() -> Self { - Self { - _marker: Hoglin, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - hoglin_immune_to_zombification: HoglinImmuneToZombification(false), - } - } -} - -#[derive(Component)] -pub struct HopperMinecart; -impl HopperMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct HopperMinecartMetadataBundle { - _marker: HopperMinecart, - parent: AbstractMinecartMetadataBundle, -} -impl Default for HopperMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: HopperMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HorseTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HorseEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HorseStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HorseBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HorseSaddled(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HorseTypeVariant(pub i32); -#[derive(Component)] -pub struct Horse; -impl Horse { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(HorseTamed(bitfield & 0x2 != 0)); - entity.insert(HorseEating(bitfield & 0x10 != 0)); - entity.insert(HorseStanding(bitfield & 0x20 != 0)); - entity.insert(HorseBred(bitfield & 0x8 != 0)); - entity.insert(HorseSaddled(bitfield & 0x4 != 0)); - } - 18 => { - entity.insert(HorseTypeVariant(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct HorseMetadataBundle { - _marker: Horse, - parent: AbstractAnimalMetadataBundle, - horse_tamed: HorseTamed, - horse_eating: HorseEating, - horse_standing: HorseStanding, - horse_bred: HorseBred, - horse_saddled: HorseSaddled, - horse_type_variant: HorseTypeVariant, -} -impl Default for HorseMetadataBundle { - fn default() -> Self { - Self { - _marker: Horse, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - horse_tamed: HorseTamed(false), - horse_eating: HorseEating(false), - horse_standing: HorseStanding(false), - horse_bred: HorseBred(false), - horse_saddled: HorseSaddled(false), - horse_type_variant: HorseTypeVariant(0), - } - } -} - -#[derive(Component)] -pub struct Husk; -impl Husk { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => Zombie::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct HuskMetadataBundle { - _marker: Husk, - parent: ZombieMetadataBundle, -} -impl Default for HuskMetadataBundle { - fn default() -> Self { - Self { - _marker: Husk, - parent: ZombieMetadataBundle { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zombie_baby: ZombieBaby(false), - special_type: SpecialType(0), - drowned_conversion: DrownedConversion(false), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IllusionerIsCelebrating(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IllusionerSpellCasting(pub u8); -#[derive(Component)] -pub struct Illusioner; -impl Illusioner { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(IllusionerIsCelebrating(d.value.into_boolean()?)); - } - 17 => { - entity.insert(IllusionerSpellCasting(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct IllusionerMetadataBundle { - _marker: Illusioner, - parent: AbstractMonsterMetadataBundle, - illusioner_is_celebrating: IllusionerIsCelebrating, - illusioner_spell_casting: IllusionerSpellCasting, -} -impl Default for IllusionerMetadataBundle { - fn default() -> Self { - Self { - _marker: Illusioner, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - illusioner_is_celebrating: IllusionerIsCelebrating(false), - illusioner_spell_casting: IllusionerSpellCasting(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct InteractionWidth(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct InteractionHeight(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Response(pub bool); -#[derive(Component)] -pub struct Interaction; -impl Interaction { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(InteractionWidth(d.value.into_float()?)); - } - 9 => { - entity.insert(InteractionHeight(d.value.into_float()?)); - } - 10 => { - entity.insert(Response(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct InteractionMetadataBundle { - _marker: Interaction, - parent: AbstractEntityMetadataBundle, - interaction_width: InteractionWidth, - interaction_height: InteractionHeight, - response: Response, -} -impl Default for InteractionMetadataBundle { - fn default() -> Self { - Self { - _marker: Interaction, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - interaction_width: InteractionWidth(1.0), - interaction_height: InteractionHeight(1.0), - response: Response(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct PlayerCreated(pub bool); -#[derive(Component)] -pub struct IronGolem; -impl IronGolem { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - let bitfield = d.value.into_byte()?; - entity.insert(PlayerCreated(bitfield & 0x1 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct IronGolemMetadataBundle { - _marker: IronGolem, - parent: AbstractCreatureMetadataBundle, - player_created: PlayerCreated, -} -impl Default for IronGolemMetadataBundle { - fn default() -> Self { - Self { - _marker: IronGolem, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - player_created: PlayerCreated(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemItem(pub ItemSlot); -#[derive(Component)] -pub struct Item; -impl Item { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(ItemItem(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ItemMetadataBundle { - _marker: Item, - parent: AbstractEntityMetadataBundle, - item_item: ItemItem, -} -impl Default for ItemMetadataBundle { - fn default() -> Self { - Self { - _marker: Item, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - item_item: ItemItem(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayInterpolationStartDeltaTicks(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayInterpolationDuration(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayTranslation(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayScale(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayLeftRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayRightRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayBillboardRenderConstraints(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayBrightnessOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayViewRange(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayShadowRadius(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayShadowStrength(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayWidth(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayHeight(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayGlowColorOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayItemStack(pub ItemSlot); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayItemDisplay(pub u8); -#[derive(Component)] -pub struct ItemDisplay; -impl ItemDisplay { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(ItemDisplayInterpolationStartDeltaTicks(d.value.into_int()?)); - } - 9 => { - entity.insert(ItemDisplayInterpolationDuration(d.value.into_int()?)); - } - 10 => { - entity.insert(ItemDisplayTranslation(d.value.into_vector3()?)); - } - 11 => { - entity.insert(ItemDisplayScale(d.value.into_vector3()?)); - } - 12 => { - entity.insert(ItemDisplayLeftRotation(d.value.into_quaternion()?)); - } - 13 => { - entity.insert(ItemDisplayRightRotation(d.value.into_quaternion()?)); - } - 14 => { - entity.insert(ItemDisplayBillboardRenderConstraints(d.value.into_byte()?)); - } - 15 => { - entity.insert(ItemDisplayBrightnessOverride(d.value.into_int()?)); - } - 16 => { - entity.insert(ItemDisplayViewRange(d.value.into_float()?)); - } - 17 => { - entity.insert(ItemDisplayShadowRadius(d.value.into_float()?)); - } - 18 => { - entity.insert(ItemDisplayShadowStrength(d.value.into_float()?)); - } - 19 => { - entity.insert(ItemDisplayWidth(d.value.into_float()?)); - } - 20 => { - entity.insert(ItemDisplayHeight(d.value.into_float()?)); - } - 21 => { - entity.insert(ItemDisplayGlowColorOverride(d.value.into_int()?)); - } - 22 => { - entity.insert(ItemDisplayItemStack(d.value.into_item_stack()?)); - } - 23 => { - entity.insert(ItemDisplayItemDisplay(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ItemDisplayMetadataBundle { - _marker: ItemDisplay, - parent: AbstractEntityMetadataBundle, - item_display_interpolation_start_delta_ticks: ItemDisplayInterpolationStartDeltaTicks, - item_display_interpolation_duration: ItemDisplayInterpolationDuration, - item_display_translation: ItemDisplayTranslation, - item_display_scale: ItemDisplayScale, - item_display_left_rotation: ItemDisplayLeftRotation, - item_display_right_rotation: ItemDisplayRightRotation, - item_display_billboard_render_constraints: ItemDisplayBillboardRenderConstraints, - item_display_brightness_override: ItemDisplayBrightnessOverride, - item_display_view_range: ItemDisplayViewRange, - item_display_shadow_radius: ItemDisplayShadowRadius, - item_display_shadow_strength: ItemDisplayShadowStrength, - item_display_width: ItemDisplayWidth, - item_display_height: ItemDisplayHeight, - item_display_glow_color_override: ItemDisplayGlowColorOverride, - item_display_item_stack: ItemDisplayItemStack, - item_display_item_display: ItemDisplayItemDisplay, -} -impl Default for ItemDisplayMetadataBundle { - fn default() -> Self { - Self { - _marker: ItemDisplay, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - item_display_interpolation_start_delta_ticks: ItemDisplayInterpolationStartDeltaTicks( - 0, - ), - item_display_interpolation_duration: ItemDisplayInterpolationDuration(0), - item_display_translation: ItemDisplayTranslation(Vec3 { - x: 0.0, - y: 0.0, - z: 0.0, - }), - item_display_scale: ItemDisplayScale(Vec3 { - x: 1.0, - y: 1.0, - z: 1.0, - }), - item_display_left_rotation: ItemDisplayLeftRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - item_display_right_rotation: ItemDisplayRightRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - item_display_billboard_render_constraints: ItemDisplayBillboardRenderConstraints( - Default::default(), - ), - item_display_brightness_override: ItemDisplayBrightnessOverride(-1), - item_display_view_range: ItemDisplayViewRange(1.0), - item_display_shadow_radius: ItemDisplayShadowRadius(0.0), - item_display_shadow_strength: ItemDisplayShadowStrength(1.0), - item_display_width: ItemDisplayWidth(0.0), - item_display_height: ItemDisplayHeight(0.0), - item_display_glow_color_override: ItemDisplayGlowColorOverride(-1), - item_display_item_stack: ItemDisplayItemStack(ItemSlot::Empty), - item_display_item_display: ItemDisplayItemDisplay(Default::default()), - } - } -} - -#[derive(Component)] -pub struct ItemFrame; -impl ItemFrame { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(ItemFrameItem(d.value.into_item_stack()?)); - } - 9 => { - entity.insert(Rotation(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ItemFrameMetadataBundle { - _marker: ItemFrame, - parent: AbstractEntityMetadataBundle, - item_frame_item: ItemFrameItem, - rotation: Rotation, -} -impl Default for ItemFrameMetadataBundle { - fn default() -> Self { - Self { - _marker: ItemFrame, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - item_frame_item: ItemFrameItem(ItemSlot::Empty), - rotation: Rotation(0), - } - } -} - -#[derive(Component)] -pub struct LeashKnot; -impl LeashKnot { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct LeashKnotMetadataBundle { - _marker: LeashKnot, - parent: AbstractEntityMetadataBundle, -} -impl Default for LeashKnotMetadataBundle { - fn default() -> Self { - Self { - _marker: LeashKnot, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component)] -pub struct LightningBolt; -impl LightningBolt { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct LightningBoltMetadataBundle { - _marker: LightningBolt, - parent: AbstractEntityMetadataBundle, -} -impl Default for LightningBoltMetadataBundle { - fn default() -> Self { - Self { - _marker: LightningBolt, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LlamaTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LlamaEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LlamaStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LlamaBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct LlamaSaddled(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LlamaChest(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Strength(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Swag(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LlamaVariant(pub i32); -#[derive(Component)] -pub struct Llama; -impl Llama { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(LlamaTamed(bitfield & 0x2 != 0)); - entity.insert(LlamaEating(bitfield & 0x10 != 0)); - entity.insert(LlamaStanding(bitfield & 0x20 != 0)); - entity.insert(LlamaBred(bitfield & 0x8 != 0)); - entity.insert(LlamaSaddled(bitfield & 0x4 != 0)); - } - 18 => { - entity.insert(LlamaChest(d.value.into_boolean()?)); - } - 19 => { - entity.insert(Strength(d.value.into_int()?)); - } - 20 => { - entity.insert(Swag(d.value.into_int()?)); - } - 21 => { - entity.insert(LlamaVariant(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct LlamaMetadataBundle { - _marker: Llama, - parent: AbstractAnimalMetadataBundle, - llama_tamed: LlamaTamed, - llama_eating: LlamaEating, - llama_standing: LlamaStanding, - llama_bred: LlamaBred, - llama_saddled: LlamaSaddled, - llama_chest: LlamaChest, - strength: Strength, - swag: Swag, - llama_variant: LlamaVariant, -} -impl Default for LlamaMetadataBundle { - fn default() -> Self { - Self { - _marker: Llama, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - llama_tamed: LlamaTamed(false), - llama_eating: LlamaEating(false), - llama_standing: LlamaStanding(false), - llama_bred: LlamaBred(false), - llama_saddled: LlamaSaddled(false), - llama_chest: LlamaChest(false), - strength: Strength(0), - swag: Swag(-1), - llama_variant: LlamaVariant(0), - } - } -} - -#[derive(Component)] -pub struct LlamaSpit; -impl LlamaSpit { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct LlamaSpitMetadataBundle { - _marker: LlamaSpit, - parent: AbstractEntityMetadataBundle, -} -impl Default for LlamaSpitMetadataBundle { - fn default() -> Self { - Self { - _marker: LlamaSpit, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SlimeSize(pub i32); -#[derive(Component)] -pub struct MagmaCube; -impl MagmaCube { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => Slime::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct MagmaCubeMetadataBundle { - _marker: MagmaCube, - parent: SlimeMetadataBundle, -} -impl Default for MagmaCubeMetadataBundle { - fn default() -> Self { - Self { - _marker: MagmaCube, - parent: SlimeMetadataBundle { - _marker: Slime, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - slime_size: SlimeSize(1), - }, - } - } -} - -#[derive(Component)] -pub struct Marker; -impl Marker { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct MarkerMetadataBundle { - _marker: Marker, - parent: AbstractEntityMetadataBundle, -} -impl Default for MarkerMetadataBundle { - fn default() -> Self { - Self { - _marker: Marker, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component)] -pub struct Minecart; -impl Minecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct MinecartMetadataBundle { - _marker: Minecart, - parent: AbstractMinecartMetadataBundle, -} -impl Default for MinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: Minecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct MooshroomKind(pub String); -#[derive(Component)] -pub struct Mooshroom; -impl Mooshroom { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => Cow::apply_metadata(entity, d)?, - 17 => { - entity.insert(MooshroomKind(d.value.into_string()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct MooshroomMetadataBundle { - _marker: Mooshroom, - parent: CowMetadataBundle, - mooshroom_kind: MooshroomKind, -} -impl Default for MooshroomMetadataBundle { - fn default() -> Self { - Self { - _marker: Mooshroom, - parent: CowMetadataBundle { - _marker: Cow, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - }, - mooshroom_kind: MooshroomKind(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct MuleTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct MuleEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct MuleStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct MuleBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct MuleSaddled(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct MuleChest(pub bool); -#[derive(Component)] -pub struct Mule; -impl Mule { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(MuleTamed(bitfield & 0x2 != 0)); - entity.insert(MuleEating(bitfield & 0x10 != 0)); - entity.insert(MuleStanding(bitfield & 0x20 != 0)); - entity.insert(MuleBred(bitfield & 0x8 != 0)); - entity.insert(MuleSaddled(bitfield & 0x4 != 0)); - } - 18 => { - entity.insert(MuleChest(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct MuleMetadataBundle { - _marker: Mule, - parent: AbstractAnimalMetadataBundle, - mule_tamed: MuleTamed, - mule_eating: MuleEating, - mule_standing: MuleStanding, - mule_bred: MuleBred, - mule_saddled: MuleSaddled, - mule_chest: MuleChest, -} -impl Default for MuleMetadataBundle { - fn default() -> Self { - Self { - _marker: Mule, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - mule_tamed: MuleTamed(false), - mule_eating: MuleEating(false), - mule_standing: MuleStanding(false), - mule_bred: MuleBred(false), - mule_saddled: MuleSaddled(false), - mule_chest: MuleChest(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Trusting(pub bool); -#[derive(Component)] -pub struct Ocelot; -impl Ocelot { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(Trusting(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct OcelotMetadataBundle { - _marker: Ocelot, - parent: AbstractAnimalMetadataBundle, - trusting: Trusting, -} -impl Default for OcelotMetadataBundle { - fn default() -> Self { - Self { - _marker: Ocelot, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - trusting: Trusting(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PaintingVariant(pub azalea_registry::PaintingVariant); -#[derive(Component)] -pub struct Painting; -impl Painting { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(PaintingVariant(d.value.into_painting_variant()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PaintingMetadataBundle { - _marker: Painting, - parent: AbstractEntityMetadataBundle, - painting_variant: PaintingVariant, -} -impl Default for PaintingMetadataBundle { - fn default() -> Self { - Self { - _marker: Painting, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - painting_variant: PaintingVariant(azalea_registry::PaintingVariant::Kebab), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PandaUnhappyCounter(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SneezeCounter(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct EatCounter(pub i32); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Sneezing(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct PandaSitting(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct OnBack(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct PandaRolling(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HiddenGene(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PandaFlags(pub u8); -#[derive(Component)] -pub struct Panda; -impl Panda { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(PandaUnhappyCounter(d.value.into_int()?)); - } - 18 => { - entity.insert(SneezeCounter(d.value.into_int()?)); - } - 19 => { - entity.insert(EatCounter(d.value.into_int()?)); - } - 20 => { - let bitfield = d.value.into_byte()?; - entity.insert(Sneezing(bitfield & 0x2 != 0)); - entity.insert(PandaSitting(bitfield & 0x8 != 0)); - entity.insert(OnBack(bitfield & 0x10 != 0)); - entity.insert(PandaRolling(bitfield & 0x4 != 0)); - } - 21 => { - entity.insert(HiddenGene(d.value.into_byte()?)); - } - 22 => { - entity.insert(PandaFlags(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PandaMetadataBundle { - _marker: Panda, - parent: AbstractAnimalMetadataBundle, - panda_unhappy_counter: PandaUnhappyCounter, - sneeze_counter: SneezeCounter, - eat_counter: EatCounter, - sneezing: Sneezing, - panda_sitting: PandaSitting, - on_back: OnBack, - panda_rolling: PandaRolling, - hidden_gene: HiddenGene, - panda_flags: PandaFlags, -} -impl Default for PandaMetadataBundle { - fn default() -> Self { - Self { - _marker: Panda, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - panda_unhappy_counter: PandaUnhappyCounter(0), - sneeze_counter: SneezeCounter(0), - eat_counter: EatCounter(0), - sneezing: Sneezing(false), - panda_sitting: PandaSitting(false), - on_back: OnBack(false), - panda_rolling: PandaRolling(false), - hidden_gene: HiddenGene(0), - panda_flags: PandaFlags(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ParrotVariant(pub i32); -#[derive(Component)] -pub struct Parrot; -impl Parrot { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => AbstractTameable::apply_metadata(entity, d)?, - 19 => { - entity.insert(ParrotVariant(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ParrotMetadataBundle { - _marker: Parrot, - parent: AbstractTameableMetadataBundle, - parrot_variant: ParrotVariant, -} -impl Default for ParrotMetadataBundle { - fn default() -> Self { - Self { - _marker: Parrot, - parent: AbstractTameableMetadataBundle { - _marker: AbstractTameable, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - tame: Tame(false), - in_sitting_pose: InSittingPose(false), - owneruuid: Owneruuid(None), - }, - parrot_variant: ParrotVariant(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PhantomSize(pub i32); -#[derive(Component)] -pub struct Phantom; -impl Phantom { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - 16 => { - entity.insert(PhantomSize(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PhantomMetadataBundle { - _marker: Phantom, - parent: AbstractInsentientMetadataBundle, - phantom_size: PhantomSize, -} -impl Default for PhantomMetadataBundle { - fn default() -> Self { - Self { - _marker: Phantom, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - phantom_size: PhantomSize(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PigSaddle(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PigBoostTime(pub i32); -#[derive(Component)] -pub struct Pig; -impl Pig { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(PigSaddle(d.value.into_boolean()?)); - } - 18 => { - entity.insert(PigBoostTime(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PigMetadataBundle { - _marker: Pig, - parent: AbstractAnimalMetadataBundle, - pig_saddle: PigSaddle, - pig_boost_time: PigBoostTime, -} -impl Default for PigMetadataBundle { - fn default() -> Self { - Self { - _marker: Pig, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - pig_saddle: PigSaddle(false), - pig_boost_time: PigBoostTime(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PiglinImmuneToZombification(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PiglinBaby(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PiglinIsChargingCrossbow(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct IsDancing(pub bool); -#[derive(Component)] -pub struct Piglin; -impl Piglin { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(PiglinImmuneToZombification(d.value.into_boolean()?)); - } - 17 => { - entity.insert(PiglinBaby(d.value.into_boolean()?)); - } - 18 => { - entity.insert(PiglinIsChargingCrossbow(d.value.into_boolean()?)); - } - 19 => { - entity.insert(IsDancing(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PiglinMetadataBundle { - _marker: Piglin, - parent: AbstractMonsterMetadataBundle, - piglin_immune_to_zombification: PiglinImmuneToZombification, - piglin_baby: PiglinBaby, - piglin_is_charging_crossbow: PiglinIsChargingCrossbow, - is_dancing: IsDancing, -} -impl Default for PiglinMetadataBundle { - fn default() -> Self { - Self { - _marker: Piglin, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - piglin_immune_to_zombification: PiglinImmuneToZombification(false), - piglin_baby: PiglinBaby(false), - piglin_is_charging_crossbow: PiglinIsChargingCrossbow(false), - is_dancing: IsDancing(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PiglinBruteImmuneToZombification(pub bool); -#[derive(Component)] -pub struct PiglinBrute; -impl PiglinBrute { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(PiglinBruteImmuneToZombification(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PiglinBruteMetadataBundle { - _marker: PiglinBrute, - parent: AbstractMonsterMetadataBundle, - piglin_brute_immune_to_zombification: PiglinBruteImmuneToZombification, -} -impl Default for PiglinBruteMetadataBundle { - fn default() -> Self { - Self { - _marker: PiglinBrute, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - piglin_brute_immune_to_zombification: PiglinBruteImmuneToZombification(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PillagerIsCelebrating(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PillagerIsChargingCrossbow(pub bool); -#[derive(Component)] -pub struct Pillager; -impl Pillager { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(PillagerIsCelebrating(d.value.into_boolean()?)); - } - 17 => { - entity.insert(PillagerIsChargingCrossbow(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PillagerMetadataBundle { - _marker: Pillager, - parent: AbstractMonsterMetadataBundle, - pillager_is_celebrating: PillagerIsCelebrating, - pillager_is_charging_crossbow: PillagerIsChargingCrossbow, -} -impl Default for PillagerMetadataBundle { - fn default() -> Self { - Self { - _marker: Pillager, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - pillager_is_celebrating: PillagerIsCelebrating(false), - pillager_is_charging_crossbow: PillagerIsChargingCrossbow(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PlayerAbsorption(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Score(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PlayerModeCustomisation(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PlayerMainHand(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ShoulderLeft(pub azalea_nbt::Nbt); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ShoulderRight(pub azalea_nbt::Nbt); -#[derive(Component)] -pub struct Player; -impl Player { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=14 => AbstractLiving::apply_metadata(entity, d)?, - 15 => { - entity.insert(PlayerAbsorption(d.value.into_float()?)); - } - 16 => { - entity.insert(Score(d.value.into_int()?)); - } - 17 => { - entity.insert(PlayerModeCustomisation(d.value.into_byte()?)); - } - 18 => { - entity.insert(PlayerMainHand(d.value.into_byte()?)); - } - 19 => { - entity.insert(ShoulderLeft(d.value.into_compound_tag()?)); - } - 20 => { - entity.insert(ShoulderRight(d.value.into_compound_tag()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PlayerMetadataBundle { - _marker: Player, - parent: AbstractLivingMetadataBundle, - player_absorption: PlayerAbsorption, - score: Score, - player_mode_customisation: PlayerModeCustomisation, - player_main_hand: PlayerMainHand, - shoulder_left: ShoulderLeft, - shoulder_right: ShoulderRight, -} -impl Default for PlayerMetadataBundle { - fn default() -> Self { - Self { - _marker: Player, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - player_absorption: PlayerAbsorption(0.0), - score: Score(0), - player_mode_customisation: PlayerModeCustomisation(0), - player_main_hand: PlayerMainHand(1), - shoulder_left: ShoulderLeft(azalea_nbt::Nbt::Compound(Default::default())), - shoulder_right: ShoulderRight(azalea_nbt::Nbt::Compound(Default::default())), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PolarBearStanding(pub bool); -#[derive(Component)] -pub struct PolarBear; -impl PolarBear { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(PolarBearStanding(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PolarBearMetadataBundle { - _marker: PolarBear, - parent: AbstractAnimalMetadataBundle, - polar_bear_standing: PolarBearStanding, -} -impl Default for PolarBearMetadataBundle { - fn default() -> Self { - Self { - _marker: PolarBear, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - polar_bear_standing: PolarBearStanding(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PotionItemStack(pub ItemSlot); -#[derive(Component)] -pub struct Potion; -impl Potion { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(PotionItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PotionMetadataBundle { - _marker: Potion, - parent: AbstractEntityMetadataBundle, - potion_item_stack: PotionItemStack, -} -impl Default for PotionMetadataBundle { - fn default() -> Self { - Self { - _marker: Potion, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - potion_item_stack: PotionItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PufferfishFromBucket(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct PuffState(pub i32); -#[derive(Component)] -pub struct Pufferfish; -impl Pufferfish { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(PufferfishFromBucket(d.value.into_boolean()?)); - } - 17 => { - entity.insert(PuffState(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct PufferfishMetadataBundle { - _marker: Pufferfish, - parent: AbstractCreatureMetadataBundle, - pufferfish_from_bucket: PufferfishFromBucket, - puff_state: PuffState, -} -impl Default for PufferfishMetadataBundle { - fn default() -> Self { - Self { - _marker: Pufferfish, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - pufferfish_from_bucket: PufferfishFromBucket(false), - puff_state: PuffState(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct RabbitKind(pub i32); -#[derive(Component)] -pub struct Rabbit; -impl Rabbit { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(RabbitKind(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct RabbitMetadataBundle { - _marker: Rabbit, - parent: AbstractAnimalMetadataBundle, - rabbit_kind: RabbitKind, -} -impl Default for RabbitMetadataBundle { - fn default() -> Self { - Self { - _marker: Rabbit, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - rabbit_kind: RabbitKind(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct RavagerIsCelebrating(pub bool); -#[derive(Component)] -pub struct Ravager; -impl Ravager { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(RavagerIsCelebrating(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct RavagerMetadataBundle { - _marker: Ravager, - parent: AbstractMonsterMetadataBundle, - ravager_is_celebrating: RavagerIsCelebrating, -} -impl Default for RavagerMetadataBundle { - fn default() -> Self { - Self { - _marker: Ravager, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - ravager_is_celebrating: RavagerIsCelebrating(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SalmonFromBucket(pub bool); -#[derive(Component)] -pub struct Salmon; -impl Salmon { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(SalmonFromBucket(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SalmonMetadataBundle { - _marker: Salmon, - parent: AbstractCreatureMetadataBundle, - salmon_from_bucket: SalmonFromBucket, -} -impl Default for SalmonMetadataBundle { - fn default() -> Self { - Self { - _marker: Salmon, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - salmon_from_bucket: SalmonFromBucket(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct Sheared(pub bool); -#[derive(Component)] -pub struct Sheep; -impl Sheep { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(Sheared(bitfield & 0x10 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SheepMetadataBundle { - _marker: Sheep, - parent: AbstractAnimalMetadataBundle, - sheared: Sheared, -} -impl Default for SheepMetadataBundle { - fn default() -> Self { - Self { - _marker: Sheep, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - sheared: Sheared(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct AttachFace(pub Direction); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Peek(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ShulkerColor(pub u8); -#[derive(Component)] -pub struct Shulker; -impl Shulker { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(AttachFace(d.value.into_direction()?)); - } - 17 => { - entity.insert(Peek(d.value.into_byte()?)); - } - 18 => { - entity.insert(ShulkerColor(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ShulkerMetadataBundle { - _marker: Shulker, - parent: AbstractCreatureMetadataBundle, - attach_face: AttachFace, - peek: Peek, - shulker_color: ShulkerColor, -} -impl Default for ShulkerMetadataBundle { - fn default() -> Self { - Self { - _marker: Shulker, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - attach_face: AttachFace(Default::default()), - peek: Peek(0), - shulker_color: ShulkerColor(16), - } - } -} - -#[derive(Component)] -pub struct ShulkerBullet; -impl ShulkerBullet { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ShulkerBulletMetadataBundle { - _marker: ShulkerBullet, - parent: AbstractEntityMetadataBundle, -} -impl Default for ShulkerBulletMetadataBundle { - fn default() -> Self { - Self { - _marker: ShulkerBullet, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - } - } -} - -#[derive(Component)] -pub struct Silverfish; -impl Silverfish { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SilverfishMetadataBundle { - _marker: Silverfish, - parent: AbstractMonsterMetadataBundle, -} -impl Default for SilverfishMetadataBundle { - fn default() -> Self { - Self { - _marker: Silverfish, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StrayConversion(pub bool); -#[derive(Component)] -pub struct Skeleton; -impl Skeleton { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(StrayConversion(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SkeletonMetadataBundle { - _marker: Skeleton, - parent: AbstractMonsterMetadataBundle, - stray_conversion: StrayConversion, -} -impl Default for SkeletonMetadataBundle { - fn default() -> Self { - Self { - _marker: Skeleton, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - stray_conversion: StrayConversion(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SkeletonHorseTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SkeletonHorseEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SkeletonHorseStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SkeletonHorseBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SkeletonHorseSaddled(pub bool); -#[derive(Component)] -pub struct SkeletonHorse; -impl SkeletonHorse { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(SkeletonHorseTamed(bitfield & 0x2 != 0)); - entity.insert(SkeletonHorseEating(bitfield & 0x10 != 0)); - entity.insert(SkeletonHorseStanding(bitfield & 0x20 != 0)); - entity.insert(SkeletonHorseBred(bitfield & 0x8 != 0)); - entity.insert(SkeletonHorseSaddled(bitfield & 0x4 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SkeletonHorseMetadataBundle { - _marker: SkeletonHorse, - parent: AbstractAnimalMetadataBundle, - skeleton_horse_tamed: SkeletonHorseTamed, - skeleton_horse_eating: SkeletonHorseEating, - skeleton_horse_standing: SkeletonHorseStanding, - skeleton_horse_bred: SkeletonHorseBred, - skeleton_horse_saddled: SkeletonHorseSaddled, -} -impl Default for SkeletonHorseMetadataBundle { - fn default() -> Self { - Self { - _marker: SkeletonHorse, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - skeleton_horse_tamed: SkeletonHorseTamed(false), - skeleton_horse_eating: SkeletonHorseEating(false), - skeleton_horse_standing: SkeletonHorseStanding(false), - skeleton_horse_bred: SkeletonHorseBred(false), - skeleton_horse_saddled: SkeletonHorseSaddled(false), - } - } -} - -#[derive(Component)] -pub struct Slime; -impl Slime { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - 16 => { - entity.insert(SlimeSize(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SlimeMetadataBundle { - _marker: Slime, - parent: AbstractInsentientMetadataBundle, - slime_size: SlimeSize, -} -impl Default for SlimeMetadataBundle { - fn default() -> Self { - Self { - _marker: Slime, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - slime_size: SlimeSize(1), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SmallFireballItemStack(pub ItemSlot); -#[derive(Component)] -pub struct SmallFireball; -impl SmallFireball { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(SmallFireballItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SmallFireballMetadataBundle { - _marker: SmallFireball, - parent: AbstractEntityMetadataBundle, - small_fireball_item_stack: SmallFireballItemStack, -} -impl Default for SmallFireballMetadataBundle { - fn default() -> Self { - Self { - _marker: SmallFireball, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - small_fireball_item_stack: SmallFireballItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct State(pub SnifferState); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct DropSeedAtTick(pub i32); -#[derive(Component)] -pub struct Sniffer; -impl Sniffer { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(State(d.value.into_sniffer_state()?)); - } - 18 => { - entity.insert(DropSeedAtTick(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SnifferMetadataBundle { - _marker: Sniffer, - parent: AbstractAnimalMetadataBundle, - state: State, - drop_seed_at_tick: DropSeedAtTick, -} -impl Default for SnifferMetadataBundle { - fn default() -> Self { - Self { - _marker: Sniffer, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - state: State(Default::default()), - drop_seed_at_tick: DropSeedAtTick(Default::default()), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct HasPumpkin(pub bool); -#[derive(Component)] -pub struct SnowGolem; -impl SnowGolem { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - let bitfield = d.value.into_byte()?; - entity.insert(HasPumpkin(bitfield & 0x10 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SnowGolemMetadataBundle { - _marker: SnowGolem, - parent: AbstractCreatureMetadataBundle, - has_pumpkin: HasPumpkin, -} -impl Default for SnowGolemMetadataBundle { - fn default() -> Self { - Self { - _marker: SnowGolem, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - has_pumpkin: HasPumpkin(true), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SnowballItemStack(pub ItemSlot); -#[derive(Component)] -pub struct Snowball; -impl Snowball { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(SnowballItemStack(d.value.into_item_stack()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SnowballMetadataBundle { - _marker: Snowball, - parent: AbstractEntityMetadataBundle, - snowball_item_stack: SnowballItemStack, -} -impl Default for SnowballMetadataBundle { - fn default() -> Self { - Self { - _marker: Snowball, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - snowball_item_stack: SnowballItemStack(ItemSlot::Empty), - } - } -} - -#[derive(Component)] -pub struct SpawnerMinecart; -impl SpawnerMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SpawnerMinecartMetadataBundle { - _marker: SpawnerMinecart, - parent: AbstractMinecartMetadataBundle, -} -impl Default for SpawnerMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: SpawnerMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SpectralArrowCritArrow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SpectralArrowShotFromCrossbow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct SpectralArrowNoPhysics(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct SpectralArrowPierceLevel(pub u8); -#[derive(Component)] -pub struct SpectralArrow; -impl SpectralArrow { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - let bitfield = d.value.into_byte()?; - entity.insert(SpectralArrowCritArrow(bitfield & 0x1 != 0)); - entity.insert(SpectralArrowShotFromCrossbow(bitfield & 0x4 != 0)); - entity.insert(SpectralArrowNoPhysics(bitfield & 0x2 != 0)); - } - 9 => { - entity.insert(SpectralArrowPierceLevel(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SpectralArrowMetadataBundle { - _marker: SpectralArrow, - parent: AbstractEntityMetadataBundle, - spectral_arrow_crit_arrow: SpectralArrowCritArrow, - spectral_arrow_shot_from_crossbow: SpectralArrowShotFromCrossbow, - spectral_arrow_no_physics: SpectralArrowNoPhysics, - spectral_arrow_pierce_level: SpectralArrowPierceLevel, -} -impl Default for SpectralArrowMetadataBundle { - fn default() -> Self { - Self { - _marker: SpectralArrow, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - spectral_arrow_crit_arrow: SpectralArrowCritArrow(false), - spectral_arrow_shot_from_crossbow: SpectralArrowShotFromCrossbow(false), - spectral_arrow_no_physics: SpectralArrowNoPhysics(false), - spectral_arrow_pierce_level: SpectralArrowPierceLevel(0), - } - } -} - -#[derive(Component)] -pub struct Spider; -impl Spider { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - let bitfield = d.value.into_byte()?; - entity.insert(Climbing(bitfield & 0x1 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SpiderMetadataBundle { - _marker: Spider, - parent: AbstractMonsterMetadataBundle, - climbing: Climbing, -} -impl Default for SpiderMetadataBundle { - fn default() -> Self { - Self { - _marker: Spider, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - climbing: Climbing(false), - } - } -} - -#[derive(Component)] -pub struct Squid; -impl Squid { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct SquidMetadataBundle { - _marker: Squid, - parent: AbstractCreatureMetadataBundle, -} -impl Default for SquidMetadataBundle { - fn default() -> Self { - Self { - _marker: Squid, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - } - } -} - -#[derive(Component)] -pub struct Stray; -impl Stray { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct StrayMetadataBundle { - _marker: Stray, - parent: AbstractMonsterMetadataBundle, -} -impl Default for StrayMetadataBundle { - fn default() -> Self { - Self { - _marker: Stray, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StriderBoostTime(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Suffocating(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StriderSaddle(pub bool); -#[derive(Component)] -pub struct Strider; -impl Strider { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(StriderBoostTime(d.value.into_int()?)); - } - 18 => { - entity.insert(Suffocating(d.value.into_boolean()?)); - } - 19 => { - entity.insert(StriderSaddle(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct StriderMetadataBundle { - _marker: Strider, - parent: AbstractAnimalMetadataBundle, - strider_boost_time: StriderBoostTime, - suffocating: Suffocating, - strider_saddle: StriderSaddle, -} -impl Default for StriderMetadataBundle { - fn default() -> Self { - Self { - _marker: Strider, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - strider_boost_time: StriderBoostTime(0), - suffocating: Suffocating(false), - strider_saddle: StriderSaddle(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TadpoleFromBucket(pub bool); -#[derive(Component)] -pub struct Tadpole; -impl Tadpole { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(TadpoleFromBucket(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TadpoleMetadataBundle { - _marker: Tadpole, - parent: AbstractCreatureMetadataBundle, - tadpole_from_bucket: TadpoleFromBucket, -} -impl Default for TadpoleMetadataBundle { - fn default() -> Self { - Self { - _marker: Tadpole, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - tadpole_from_bucket: TadpoleFromBucket(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayInterpolationStartDeltaTicks(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayInterpolationDuration(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayTranslation(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayScale(pub Vec3); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayLeftRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayRightRotation(pub Quaternion); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayBillboardRenderConstraints(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayBrightnessOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayViewRange(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayShadowRadius(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayShadowStrength(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayWidth(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayHeight(pub f32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayGlowColorOverride(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Text(pub FormattedText); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LineWidth(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct BackgroundColor(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TextOpacity(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct StyleFlags(pub u8); -#[derive(Component)] -pub struct TextDisplay; -impl TextDisplay { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(TextDisplayInterpolationStartDeltaTicks(d.value.into_int()?)); - } - 9 => { - entity.insert(TextDisplayInterpolationDuration(d.value.into_int()?)); - } - 10 => { - entity.insert(TextDisplayTranslation(d.value.into_vector3()?)); - } - 11 => { - entity.insert(TextDisplayScale(d.value.into_vector3()?)); - } - 12 => { - entity.insert(TextDisplayLeftRotation(d.value.into_quaternion()?)); - } - 13 => { - entity.insert(TextDisplayRightRotation(d.value.into_quaternion()?)); - } - 14 => { - entity.insert(TextDisplayBillboardRenderConstraints(d.value.into_byte()?)); - } - 15 => { - entity.insert(TextDisplayBrightnessOverride(d.value.into_int()?)); - } - 16 => { - entity.insert(TextDisplayViewRange(d.value.into_float()?)); - } - 17 => { - entity.insert(TextDisplayShadowRadius(d.value.into_float()?)); - } - 18 => { - entity.insert(TextDisplayShadowStrength(d.value.into_float()?)); - } - 19 => { - entity.insert(TextDisplayWidth(d.value.into_float()?)); - } - 20 => { - entity.insert(TextDisplayHeight(d.value.into_float()?)); - } - 21 => { - entity.insert(TextDisplayGlowColorOverride(d.value.into_int()?)); - } - 22 => { - entity.insert(Text(d.value.into_formatted_text()?)); - } - 23 => { - entity.insert(LineWidth(d.value.into_int()?)); - } - 24 => { - entity.insert(BackgroundColor(d.value.into_int()?)); - } - 25 => { - entity.insert(TextOpacity(d.value.into_byte()?)); - } - 26 => { - entity.insert(StyleFlags(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TextDisplayMetadataBundle { - _marker: TextDisplay, - parent: AbstractEntityMetadataBundle, - text_display_interpolation_start_delta_ticks: TextDisplayInterpolationStartDeltaTicks, - text_display_interpolation_duration: TextDisplayInterpolationDuration, - text_display_translation: TextDisplayTranslation, - text_display_scale: TextDisplayScale, - text_display_left_rotation: TextDisplayLeftRotation, - text_display_right_rotation: TextDisplayRightRotation, - text_display_billboard_render_constraints: TextDisplayBillboardRenderConstraints, - text_display_brightness_override: TextDisplayBrightnessOverride, - text_display_view_range: TextDisplayViewRange, - text_display_shadow_radius: TextDisplayShadowRadius, - text_display_shadow_strength: TextDisplayShadowStrength, - text_display_width: TextDisplayWidth, - text_display_height: TextDisplayHeight, - text_display_glow_color_override: TextDisplayGlowColorOverride, - text: Text, - line_width: LineWidth, - background_color: BackgroundColor, - text_opacity: TextOpacity, - style_flags: StyleFlags, -} -impl Default for TextDisplayMetadataBundle { - fn default() -> Self { - Self { - _marker: TextDisplay, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - text_display_interpolation_start_delta_ticks: TextDisplayInterpolationStartDeltaTicks( - 0, - ), - text_display_interpolation_duration: TextDisplayInterpolationDuration(0), - text_display_translation: TextDisplayTranslation(Vec3 { - x: 0.0, - y: 0.0, - z: 0.0, - }), - text_display_scale: TextDisplayScale(Vec3 { - x: 1.0, - y: 1.0, - z: 1.0, - }), - text_display_left_rotation: TextDisplayLeftRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - text_display_right_rotation: TextDisplayRightRotation(Quaternion { - x: 0.0, - y: 0.0, - z: 0.0, - w: 1.0, - }), - text_display_billboard_render_constraints: TextDisplayBillboardRenderConstraints( - Default::default(), - ), - text_display_brightness_override: TextDisplayBrightnessOverride(-1), - text_display_view_range: TextDisplayViewRange(1.0), - text_display_shadow_radius: TextDisplayShadowRadius(0.0), - text_display_shadow_strength: TextDisplayShadowStrength(1.0), - text_display_width: TextDisplayWidth(0.0), - text_display_height: TextDisplayHeight(0.0), - text_display_glow_color_override: TextDisplayGlowColorOverride(-1), - text: Text(Default::default()), - line_width: LineWidth(200), - background_color: BackgroundColor(1073741824), - text_opacity: TextOpacity(127), - style_flags: StyleFlags(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Fuse(pub i32); -#[derive(Component)] -pub struct Tnt; -impl Tnt { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(Fuse(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TntMetadataBundle { - _marker: Tnt, - parent: AbstractEntityMetadataBundle, - fuse: Fuse, -} -impl Default for TntMetadataBundle { - fn default() -> Self { - Self { - _marker: Tnt, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - fuse: Fuse(80), - } - } -} - -#[derive(Component)] -pub struct TntMinecart; -impl TntMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=13 => AbstractMinecart::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TntMinecartMetadataBundle { - _marker: TntMinecart, - parent: AbstractMinecartMetadataBundle, -} -impl Default for TntMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: TntMinecart, - parent: AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - }, - } - } -} - -#[derive(Component)] -pub struct TraderLlama; -impl TraderLlama { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=21 => Llama::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TraderLlamaMetadataBundle { - _marker: TraderLlama, - parent: LlamaMetadataBundle, -} -impl Default for TraderLlamaMetadataBundle { - fn default() -> Self { - Self { - _marker: TraderLlama, - parent: LlamaMetadataBundle { - _marker: Llama, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - llama_tamed: LlamaTamed(false), - llama_eating: LlamaEating(false), - llama_standing: LlamaStanding(false), - llama_bred: LlamaBred(false), - llama_saddled: LlamaSaddled(false), - llama_chest: LlamaChest(false), - strength: Strength(0), - swag: Swag(-1), - llama_variant: LlamaVariant(0), - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct TridentCritArrow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct TridentShotFromCrossbow(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct TridentNoPhysics(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TridentPierceLevel(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Loyalty(pub u8); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Foil(pub bool); -#[derive(Component)] -pub struct Trident; -impl Trident { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - let bitfield = d.value.into_byte()?; - entity.insert(TridentCritArrow(bitfield & 0x1 != 0)); - entity.insert(TridentShotFromCrossbow(bitfield & 0x4 != 0)); - entity.insert(TridentNoPhysics(bitfield & 0x2 != 0)); - } - 9 => { - entity.insert(TridentPierceLevel(d.value.into_byte()?)); - } - 10 => { - entity.insert(Loyalty(d.value.into_byte()?)); - } - 11 => { - entity.insert(Foil(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TridentMetadataBundle { - _marker: Trident, - parent: AbstractEntityMetadataBundle, - trident_crit_arrow: TridentCritArrow, - trident_shot_from_crossbow: TridentShotFromCrossbow, - trident_no_physics: TridentNoPhysics, - trident_pierce_level: TridentPierceLevel, - loyalty: Loyalty, - foil: Foil, -} -impl Default for TridentMetadataBundle { - fn default() -> Self { - Self { - _marker: Trident, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - trident_crit_arrow: TridentCritArrow(false), - trident_shot_from_crossbow: TridentShotFromCrossbow(false), - trident_no_physics: TridentNoPhysics(false), - trident_pierce_level: TridentPierceLevel(0), - loyalty: Loyalty(0), - foil: Foil(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TropicalFishFromBucket(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TropicalFishTypeVariant(pub i32); -#[derive(Component)] -pub struct TropicalFish; -impl TropicalFish { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(TropicalFishFromBucket(d.value.into_boolean()?)); - } - 17 => { - entity.insert(TropicalFishTypeVariant(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TropicalFishMetadataBundle { - _marker: TropicalFish, - parent: AbstractCreatureMetadataBundle, - tropical_fish_from_bucket: TropicalFishFromBucket, - tropical_fish_type_variant: TropicalFishTypeVariant, -} -impl Default for TropicalFishMetadataBundle { - fn default() -> Self { - Self { - _marker: TropicalFish, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - tropical_fish_from_bucket: TropicalFishFromBucket(false), - tropical_fish_type_variant: TropicalFishTypeVariant(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HomePos(pub BlockPos); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct HasEgg(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct LayingEgg(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TravelPos(pub BlockPos); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct GoingHome(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Travelling(pub bool); -#[derive(Component)] -pub struct Turtle; -impl Turtle { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - entity.insert(HomePos(d.value.into_block_pos()?)); - } - 18 => { - entity.insert(HasEgg(d.value.into_boolean()?)); - } - 19 => { - entity.insert(LayingEgg(d.value.into_boolean()?)); - } - 20 => { - entity.insert(TravelPos(d.value.into_block_pos()?)); - } - 21 => { - entity.insert(GoingHome(d.value.into_boolean()?)); - } - 22 => { - entity.insert(Travelling(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct TurtleMetadataBundle { - _marker: Turtle, - parent: AbstractAnimalMetadataBundle, - home_pos: HomePos, - has_egg: HasEgg, - laying_egg: LayingEgg, - travel_pos: TravelPos, - going_home: GoingHome, - travelling: Travelling, -} -impl Default for TurtleMetadataBundle { - fn default() -> Self { - Self { - _marker: Turtle, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - home_pos: HomePos(BlockPos::new(0, 0, 0)), - has_egg: HasEgg(false), - laying_egg: LayingEgg(false), - travel_pos: TravelPos(BlockPos::new(0, 0, 0)), - going_home: GoingHome(false), - travelling: Travelling(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct VexFlags(pub u8); -#[derive(Component)] -pub struct Vex; -impl Vex { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(VexFlags(d.value.into_byte()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct VexMetadataBundle { - _marker: Vex, - parent: AbstractMonsterMetadataBundle, - vex_flags: VexFlags, -} -impl Default for VexMetadataBundle { - fn default() -> Self { - Self { - _marker: Vex, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - vex_flags: VexFlags(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct VillagerUnhappyCounter(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct VillagerVillagerData(pub VillagerData); -#[derive(Component)] -pub struct Villager; -impl Villager { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAgeable::apply_metadata(entity, d)?, - 17 => { - entity.insert(VillagerUnhappyCounter(d.value.into_int()?)); - } - 18 => { - entity.insert(VillagerVillagerData(d.value.into_villager_data()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct VillagerMetadataBundle { - _marker: Villager, - parent: AbstractAgeableMetadataBundle, - villager_unhappy_counter: VillagerUnhappyCounter, - villager_villager_data: VillagerVillagerData, -} -impl Default for VillagerMetadataBundle { - fn default() -> Self { - Self { - _marker: Villager, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - villager_unhappy_counter: VillagerUnhappyCounter(0), - villager_villager_data: VillagerVillagerData(VillagerData { - kind: azalea_registry::VillagerKind::Plains, - profession: azalea_registry::VillagerProfession::None, - level: 0, - }), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct VindicatorIsCelebrating(pub bool); -#[derive(Component)] -pub struct Vindicator; -impl Vindicator { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(VindicatorIsCelebrating(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct VindicatorMetadataBundle { - _marker: Vindicator, - parent: AbstractMonsterMetadataBundle, - vindicator_is_celebrating: VindicatorIsCelebrating, -} -impl Default for VindicatorMetadataBundle { - fn default() -> Self { - Self { - _marker: Vindicator, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - vindicator_is_celebrating: VindicatorIsCelebrating(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WanderingTraderUnhappyCounter(pub i32); -#[derive(Component)] -pub struct WanderingTrader; -impl WanderingTrader { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAgeable::apply_metadata(entity, d)?, - 17 => { - entity.insert(WanderingTraderUnhappyCounter(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WanderingTraderMetadataBundle { - _marker: WanderingTrader, - parent: AbstractAgeableMetadataBundle, - wandering_trader_unhappy_counter: WanderingTraderUnhappyCounter, -} -impl Default for WanderingTraderMetadataBundle { - fn default() -> Self { - Self { - _marker: WanderingTrader, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - wandering_trader_unhappy_counter: WanderingTraderUnhappyCounter(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ClientAngerLevel(pub i32); -#[derive(Component)] -pub struct Warden; -impl Warden { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(ClientAngerLevel(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WardenMetadataBundle { - _marker: Warden, - parent: AbstractMonsterMetadataBundle, - client_anger_level: ClientAngerLevel, -} -impl Default for WardenMetadataBundle { - fn default() -> Self { - Self { - _marker: Warden, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - client_anger_level: ClientAngerLevel(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WitchIsCelebrating(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WitchUsingItem(pub bool); -#[derive(Component)] -pub struct Witch; -impl Witch { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(WitchIsCelebrating(d.value.into_boolean()?)); - } - 17 => { - entity.insert(WitchUsingItem(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WitchMetadataBundle { - _marker: Witch, - parent: AbstractMonsterMetadataBundle, - witch_is_celebrating: WitchIsCelebrating, - witch_using_item: WitchUsingItem, -} -impl Default for WitchMetadataBundle { - fn default() -> Self { - Self { - _marker: Witch, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - witch_is_celebrating: WitchIsCelebrating(false), - witch_using_item: WitchUsingItem(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TargetA(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TargetB(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct TargetC(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Inv(pub i32); -#[derive(Component)] -pub struct Wither; -impl Wither { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(TargetA(d.value.into_int()?)); - } - 17 => { - entity.insert(TargetB(d.value.into_int()?)); - } - 18 => { - entity.insert(TargetC(d.value.into_int()?)); - } - 19 => { - entity.insert(Inv(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WitherMetadataBundle { - _marker: Wither, - parent: AbstractMonsterMetadataBundle, - target_a: TargetA, - target_b: TargetB, - target_c: TargetC, - inv: Inv, -} -impl Default for WitherMetadataBundle { - fn default() -> Self { - Self { - _marker: Wither, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - target_a: TargetA(0), - target_b: TargetB(0), - target_c: TargetC(0), - inv: Inv(0), - } - } -} - -#[derive(Component)] -pub struct WitherSkeleton; -impl WitherSkeleton { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WitherSkeletonMetadataBundle { - _marker: WitherSkeleton, - parent: AbstractMonsterMetadataBundle, -} -impl Default for WitherSkeletonMetadataBundle { - fn default() -> Self { - Self { - _marker: WitherSkeleton, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Dangerous(pub bool); -#[derive(Component)] -pub struct WitherSkull; -impl WitherSkull { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(Dangerous(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WitherSkullMetadataBundle { - _marker: WitherSkull, - parent: AbstractEntityMetadataBundle, - dangerous: Dangerous, -} -impl Default for WitherSkullMetadataBundle { - fn default() -> Self { - Self { - _marker: WitherSkull, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - dangerous: Dangerous(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WolfInterested(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WolfCollarColor(pub i32); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct WolfRemainingAngerTime(pub i32); -#[derive(Component)] -pub struct Wolf; -impl Wolf { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => AbstractTameable::apply_metadata(entity, d)?, - 19 => { - entity.insert(WolfInterested(d.value.into_boolean()?)); - } - 20 => { - entity.insert(WolfCollarColor(d.value.into_int()?)); - } - 21 => { - entity.insert(WolfRemainingAngerTime(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct WolfMetadataBundle { - _marker: Wolf, - parent: AbstractTameableMetadataBundle, - wolf_interested: WolfInterested, - wolf_collar_color: WolfCollarColor, - wolf_remaining_anger_time: WolfRemainingAngerTime, -} -impl Default for WolfMetadataBundle { - fn default() -> Self { - Self { - _marker: Wolf, - parent: AbstractTameableMetadataBundle { - _marker: AbstractTameable, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - tame: Tame(false), - in_sitting_pose: InSittingPose(false), - owneruuid: Owneruuid(None), - }, - wolf_interested: WolfInterested(false), - wolf_collar_color: WolfCollarColor(Default::default()), - wolf_remaining_anger_time: WolfRemainingAngerTime(0), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ZoglinBaby(pub bool); -#[derive(Component)] -pub struct Zoglin; -impl Zoglin { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(ZoglinBaby(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ZoglinMetadataBundle { - _marker: Zoglin, - parent: AbstractMonsterMetadataBundle, - zoglin_baby: ZoglinBaby, -} -impl Default for ZoglinMetadataBundle { - fn default() -> Self { - Self { - _marker: Zoglin, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zoglin_baby: ZoglinBaby(false), - } - } -} - -#[derive(Component)] -pub struct Zombie; -impl Zombie { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractMonster::apply_metadata(entity, d)?, - 16 => { - entity.insert(ZombieBaby(d.value.into_boolean()?)); - } - 17 => { - entity.insert(SpecialType(d.value.into_int()?)); - } - 18 => { - entity.insert(DrownedConversion(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ZombieMetadataBundle { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle, - zombie_baby: ZombieBaby, - special_type: SpecialType, - drowned_conversion: DrownedConversion, -} -impl Default for ZombieMetadataBundle { - fn default() -> Self { - Self { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zombie_baby: ZombieBaby(false), - special_type: SpecialType(0), - drowned_conversion: DrownedConversion(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ZombieHorseTamed(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ZombieHorseEating(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ZombieHorseStanding(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ZombieHorseBred(pub bool); -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct ZombieHorseSaddled(pub bool); -#[derive(Component)] -pub struct ZombieHorse; -impl ZombieHorse { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(ZombieHorseTamed(bitfield & 0x2 != 0)); - entity.insert(ZombieHorseEating(bitfield & 0x10 != 0)); - entity.insert(ZombieHorseStanding(bitfield & 0x20 != 0)); - entity.insert(ZombieHorseBred(bitfield & 0x8 != 0)); - entity.insert(ZombieHorseSaddled(bitfield & 0x4 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ZombieHorseMetadataBundle { - _marker: ZombieHorse, - parent: AbstractAnimalMetadataBundle, - zombie_horse_tamed: ZombieHorseTamed, - zombie_horse_eating: ZombieHorseEating, - zombie_horse_standing: ZombieHorseStanding, - zombie_horse_bred: ZombieHorseBred, - zombie_horse_saddled: ZombieHorseSaddled, -} -impl Default for ZombieHorseMetadataBundle { - fn default() -> Self { - Self { - _marker: ZombieHorse, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - zombie_horse_tamed: ZombieHorseTamed(false), - zombie_horse_eating: ZombieHorseEating(false), - zombie_horse_standing: ZombieHorseStanding(false), - zombie_horse_bred: ZombieHorseBred(false), - zombie_horse_saddled: ZombieHorseSaddled(false), - } - } -} - -#[derive(Component, Deref, DerefMut, Clone)] -pub struct Converting(pub bool); -#[derive(Component, Deref, DerefMut, Clone)] -pub struct ZombieVillagerVillagerData(pub VillagerData); -#[derive(Component)] -pub struct ZombieVillager; -impl ZombieVillager { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => Zombie::apply_metadata(entity, d)?, - 19 => { - entity.insert(Converting(d.value.into_boolean()?)); - } - 20 => { - entity.insert(ZombieVillagerVillagerData(d.value.into_villager_data()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ZombieVillagerMetadataBundle { - _marker: ZombieVillager, - parent: ZombieMetadataBundle, - converting: Converting, - zombie_villager_villager_data: ZombieVillagerVillagerData, -} -impl Default for ZombieVillagerMetadataBundle { - fn default() -> Self { - Self { - _marker: ZombieVillager, - parent: ZombieMetadataBundle { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zombie_baby: ZombieBaby(false), - special_type: SpecialType(0), - drowned_conversion: DrownedConversion(false), - }, - converting: Converting(false), - zombie_villager_villager_data: ZombieVillagerVillagerData(VillagerData { - kind: azalea_registry::VillagerKind::Plains, - profession: azalea_registry::VillagerProfession::None, - level: 0, - }), - } - } -} - -#[derive(Component)] -pub struct ZombifiedPiglin; -impl ZombifiedPiglin { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=18 => Zombie::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct ZombifiedPiglinMetadataBundle { - _marker: ZombifiedPiglin, - parent: ZombieMetadataBundle, -} -impl Default for ZombifiedPiglinMetadataBundle { - fn default() -> Self { - Self { - _marker: ZombifiedPiglin, - parent: ZombieMetadataBundle { - _marker: Zombie, - parent: AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - }, - zombie_baby: ZombieBaby(false), - special_type: SpecialType(0), - drowned_conversion: DrownedConversion(false), - }, - } - } -} - -#[derive(Component)] -pub struct AbstractAgeable; -impl AbstractAgeable { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - 16 => { - entity.insert(AbstractAgeableBaby(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle, - abstract_ageable_baby: AbstractAgeableBaby, -} -impl Default for AbstractAgeableMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - } - } -} - -#[derive(Component)] -pub struct AbstractAnimal; -impl AbstractAnimal { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAgeable::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle, -} -impl Default for AbstractAnimalMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - } - } -} - -#[derive(Component)] -pub struct AbstractCreature; -impl AbstractCreature { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractInsentient::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle, -} -impl Default for AbstractCreatureMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - } - } -} - -#[derive(Component)] -pub struct AbstractEntity; -impl AbstractEntity { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0 => { - let bitfield = d.value.into_byte()?; - entity.insert(OnFire(bitfield & 0x1 != 0)); - entity.insert(ShiftKeyDown(bitfield & 0x2 != 0)); - entity.insert(Sprinting(bitfield & 0x8 != 0)); - entity.insert(Swimming(bitfield & 0x10 != 0)); - entity.insert(CurrentlyGlowing(bitfield & 0x40 != 0)); - entity.insert(Invisible(bitfield & 0x20 != 0)); - entity.insert(FallFlying(bitfield & 0x80 != 0)); - } - 1 => { - entity.insert(AirSupply(d.value.into_int()?)); - } - 2 => { - entity.insert(CustomName(d.value.into_optional_formatted_text()?)); - } - 3 => { - entity.insert(CustomNameVisible(d.value.into_boolean()?)); - } - 4 => { - entity.insert(Silent(d.value.into_boolean()?)); - } - 5 => { - entity.insert(NoGravity(d.value.into_boolean()?)); - } - 6 => { - entity.insert(d.value.into_pose()?); - } - 7 => { - entity.insert(TicksFrozen(d.value.into_int()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire, - shift_key_down: ShiftKeyDown, - sprinting: Sprinting, - swimming: Swimming, - currently_glowing: CurrentlyGlowing, - invisible: Invisible, - fall_flying: FallFlying, - air_supply: AirSupply, - custom_name: CustomName, - custom_name_visible: CustomNameVisible, - silent: Silent, - no_gravity: NoGravity, - pose: Pose, - ticks_frozen: TicksFrozen, -} -impl Default for AbstractEntityMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - } - } -} - -#[derive(Component)] -pub struct AbstractInsentient; -impl AbstractInsentient { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=14 => AbstractLiving::apply_metadata(entity, d)?, - 15 => { - let bitfield = d.value.into_byte()?; - entity.insert(NoAi(bitfield & 0x1 != 0)); - entity.insert(LeftHanded(bitfield & 0x2 != 0)); - entity.insert(Aggressive(bitfield & 0x4 != 0)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle, - no_ai: NoAi, - left_handed: LeftHanded, - aggressive: Aggressive, -} -impl Default for AbstractInsentientMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - } - } -} - -#[derive(Component)] -pub struct AbstractLiving; -impl AbstractLiving { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - let bitfield = d.value.into_byte()?; - entity.insert(AutoSpinAttack(bitfield & 0x4 != 0)); - entity.insert(AbstractLivingUsingItem(bitfield & 0x1 != 0)); - } - 9 => { - entity.insert(Health(d.value.into_float()?)); - } - 10 => { - entity.insert(AbstractLivingEffectColor(d.value.into_int()?)); - } - 11 => { - entity.insert(EffectAmbience(d.value.into_boolean()?)); - } - 12 => { - entity.insert(ArrowCount(d.value.into_int()?)); - } - 13 => { - entity.insert(StingerCount(d.value.into_int()?)); - } - 14 => { - entity.insert(SleepingPos(d.value.into_optional_block_pos()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle, - auto_spin_attack: AutoSpinAttack, - abstract_living_using_item: AbstractLivingUsingItem, - health: Health, - abstract_living_effect_color: AbstractLivingEffectColor, - effect_ambience: EffectAmbience, - arrow_count: ArrowCount, - stinger_count: StingerCount, - sleeping_pos: SleepingPos, -} -impl Default for AbstractLivingMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - } - } -} - -#[derive(Component)] -pub struct AbstractMinecart; -impl AbstractMinecart { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=7 => AbstractEntity::apply_metadata(entity, d)?, - 8 => { - entity.insert(AbstractMinecartHurt(d.value.into_int()?)); - } - 9 => { - entity.insert(AbstractMinecartHurtdir(d.value.into_int()?)); - } - 10 => { - entity.insert(AbstractMinecartDamage(d.value.into_float()?)); - } - 11 => { - entity.insert(DisplayBlock(d.value.into_int()?)); - } - 12 => { - entity.insert(DisplayOffset(d.value.into_int()?)); - } - 13 => { - entity.insert(CustomDisplay(d.value.into_boolean()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractMinecartMetadataBundle { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle, - abstract_minecart_hurt: AbstractMinecartHurt, - abstract_minecart_hurtdir: AbstractMinecartHurtdir, - abstract_minecart_damage: AbstractMinecartDamage, - display_block: DisplayBlock, - display_offset: DisplayOffset, - custom_display: CustomDisplay, -} -impl Default for AbstractMinecartMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractMinecart, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - abstract_minecart_hurt: AbstractMinecartHurt(0), - abstract_minecart_hurtdir: AbstractMinecartHurtdir(1), - abstract_minecart_damage: AbstractMinecartDamage(0.0), - display_block: DisplayBlock(Default::default()), - display_offset: DisplayOffset(6), - custom_display: CustomDisplay(false), - } - } -} - -#[derive(Component)] -pub struct AbstractMonster; -impl AbstractMonster { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=15 => AbstractCreature::apply_metadata(entity, d)?, - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractMonsterMetadataBundle { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle, -} -impl Default for AbstractMonsterMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractMonster, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - } - } -} - -#[derive(Component)] -pub struct AbstractTameable; -impl AbstractTameable { - pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - d: EntityDataItem, - ) -> Result<(), UpdateMetadataError> { - match d.index { - 0..=16 => AbstractAnimal::apply_metadata(entity, d)?, - 17 => { - let bitfield = d.value.into_byte()?; - entity.insert(Tame(bitfield & 0x4 != 0)); - entity.insert(InSittingPose(bitfield & 0x1 != 0)); - } - 18 => { - entity.insert(Owneruuid(d.value.into_optional_uuid()?)); - } - _ => {} - } - Ok(()) - } -} - -#[derive(Bundle)] -pub struct AbstractTameableMetadataBundle { - _marker: AbstractTameable, - parent: AbstractAnimalMetadataBundle, - tame: Tame, - in_sitting_pose: InSittingPose, - owneruuid: Owneruuid, -} -impl Default for AbstractTameableMetadataBundle { - fn default() -> Self { - Self { - _marker: AbstractTameable, - parent: AbstractAnimalMetadataBundle { - _marker: AbstractAnimal, - parent: AbstractAgeableMetadataBundle { - _marker: AbstractAgeable, - parent: AbstractCreatureMetadataBundle { - _marker: AbstractCreature, - parent: AbstractInsentientMetadataBundle { - _marker: AbstractInsentient, - parent: AbstractLivingMetadataBundle { - _marker: AbstractLiving, - parent: AbstractEntityMetadataBundle { - _marker: AbstractEntity, - on_fire: OnFire(false), - shift_key_down: ShiftKeyDown(false), - sprinting: Sprinting(false), - swimming: Swimming(false), - currently_glowing: CurrentlyGlowing(false), - invisible: Invisible(false), - fall_flying: FallFlying(false), - air_supply: AirSupply(Default::default()), - custom_name: CustomName(None), - custom_name_visible: CustomNameVisible(false), - silent: Silent(false), - no_gravity: NoGravity(false), - pose: Pose::default(), - ticks_frozen: TicksFrozen(0), - }, - auto_spin_attack: AutoSpinAttack(false), - abstract_living_using_item: AbstractLivingUsingItem(false), - health: Health(1.0), - abstract_living_effect_color: AbstractLivingEffectColor(0), - effect_ambience: EffectAmbience(false), - arrow_count: ArrowCount(0), - stinger_count: StingerCount(0), - sleeping_pos: SleepingPos(None), - }, - no_ai: NoAi(false), - left_handed: LeftHanded(false), - aggressive: Aggressive(false), - }, - }, - abstract_ageable_baby: AbstractAgeableBaby(false), - }, - }, - tame: Tame(false), - in_sitting_pose: InSittingPose(false), - owneruuid: Owneruuid(None), - } - } -} - -pub fn apply_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - entity_kind: azalea_registry::EntityKind, - items: Vec<EntityDataItem>, -) -> Result<(), UpdateMetadataError> { - match entity_kind { - azalea_registry::EntityKind::Allay => { - for d in items { - Allay::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::AreaEffectCloud => { - for d in items { - AreaEffectCloud::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ArmorStand => { - for d in items { - ArmorStand::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Arrow => { - for d in items { - Arrow::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Axolotl => { - for d in items { - Axolotl::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Bat => { - for d in items { - Bat::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Bee => { - for d in items { - Bee::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Blaze => { - for d in items { - Blaze::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::BlockDisplay => { - for d in items { - BlockDisplay::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Boat => { - for d in items { - Boat::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Camel => { - for d in items { - Camel::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Cat => { - for d in items { - Cat::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::CaveSpider => { - for d in items { - CaveSpider::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ChestBoat => { - for d in items { - ChestBoat::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ChestMinecart => { - for d in items { - ChestMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Chicken => { - for d in items { - Chicken::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Cod => { - for d in items { - Cod::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::CommandBlockMinecart => { - for d in items { - CommandBlockMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Cow => { - for d in items { - Cow::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Creeper => { - for d in items { - Creeper::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Dolphin => { - for d in items { - Dolphin::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Donkey => { - for d in items { - Donkey::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::DragonFireball => { - for d in items { - DragonFireball::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Drowned => { - for d in items { - Drowned::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Egg => { - for d in items { - Egg::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ElderGuardian => { - for d in items { - ElderGuardian::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::EndCrystal => { - for d in items { - EndCrystal::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::EnderDragon => { - for d in items { - EnderDragon::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::EnderPearl => { - for d in items { - EnderPearl::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Enderman => { - for d in items { - Enderman::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Endermite => { - for d in items { - Endermite::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Evoker => { - for d in items { - Evoker::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::EvokerFangs => { - for d in items { - EvokerFangs::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ExperienceBottle => { - for d in items { - ExperienceBottle::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ExperienceOrb => { - for d in items { - ExperienceOrb::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::EyeOfEnder => { - for d in items { - EyeOfEnder::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::FallingBlock => { - for d in items { - FallingBlock::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Fireball => { - for d in items { - Fireball::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::FireworkRocket => { - for d in items { - FireworkRocket::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::FishingBobber => { - for d in items { - FishingBobber::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Fox => { - for d in items { - Fox::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Frog => { - for d in items { - Frog::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::FurnaceMinecart => { - for d in items { - FurnaceMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Ghast => { - for d in items { - Ghast::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Giant => { - for d in items { - Giant::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::GlowItemFrame => { - for d in items { - GlowItemFrame::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::GlowSquid => { - for d in items { - GlowSquid::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Goat => { - for d in items { - Goat::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Guardian => { - for d in items { - Guardian::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Hoglin => { - for d in items { - Hoglin::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::HopperMinecart => { - for d in items { - HopperMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Horse => { - for d in items { - Horse::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Husk => { - for d in items { - Husk::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Illusioner => { - for d in items { - Illusioner::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Interaction => { - for d in items { - Interaction::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::IronGolem => { - for d in items { - IronGolem::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Item => { - for d in items { - Item::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ItemDisplay => { - for d in items { - ItemDisplay::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ItemFrame => { - for d in items { - ItemFrame::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::LeashKnot => { - for d in items { - LeashKnot::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::LightningBolt => { - for d in items { - LightningBolt::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Llama => { - for d in items { - Llama::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::LlamaSpit => { - for d in items { - LlamaSpit::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::MagmaCube => { - for d in items { - MagmaCube::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Marker => { - for d in items { - Marker::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Minecart => { - for d in items { - Minecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Mooshroom => { - for d in items { - Mooshroom::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Mule => { - for d in items { - Mule::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Ocelot => { - for d in items { - Ocelot::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Painting => { - for d in items { - Painting::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Panda => { - for d in items { - Panda::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Parrot => { - for d in items { - Parrot::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Phantom => { - for d in items { - Phantom::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Pig => { - for d in items { - Pig::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Piglin => { - for d in items { - Piglin::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::PiglinBrute => { - for d in items { - PiglinBrute::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Pillager => { - for d in items { - Pillager::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Player => { - for d in items { - Player::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::PolarBear => { - for d in items { - PolarBear::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Potion => { - for d in items { - Potion::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Pufferfish => { - for d in items { - Pufferfish::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Rabbit => { - for d in items { - Rabbit::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Ravager => { - for d in items { - Ravager::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Salmon => { - for d in items { - Salmon::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Sheep => { - for d in items { - Sheep::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Shulker => { - for d in items { - Shulker::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ShulkerBullet => { - for d in items { - ShulkerBullet::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Silverfish => { - for d in items { - Silverfish::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Skeleton => { - for d in items { - Skeleton::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::SkeletonHorse => { - for d in items { - SkeletonHorse::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Slime => { - for d in items { - Slime::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::SmallFireball => { - for d in items { - SmallFireball::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Sniffer => { - for d in items { - Sniffer::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::SnowGolem => { - for d in items { - SnowGolem::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Snowball => { - for d in items { - Snowball::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::SpawnerMinecart => { - for d in items { - SpawnerMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::SpectralArrow => { - for d in items { - SpectralArrow::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Spider => { - for d in items { - Spider::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Squid => { - for d in items { - Squid::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Stray => { - for d in items { - Stray::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Strider => { - for d in items { - Strider::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Tadpole => { - for d in items { - Tadpole::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::TextDisplay => { - for d in items { - TextDisplay::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Tnt => { - for d in items { - Tnt::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::TntMinecart => { - for d in items { - TntMinecart::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::TraderLlama => { - for d in items { - TraderLlama::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Trident => { - for d in items { - Trident::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::TropicalFish => { - for d in items { - TropicalFish::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Turtle => { - for d in items { - Turtle::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Vex => { - for d in items { - Vex::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Villager => { - for d in items { - Villager::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Vindicator => { - for d in items { - Vindicator::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::WanderingTrader => { - for d in items { - WanderingTrader::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Warden => { - for d in items { - Warden::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Witch => { - for d in items { - Witch::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Wither => { - for d in items { - Wither::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::WitherSkeleton => { - for d in items { - WitherSkeleton::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::WitherSkull => { - for d in items { - WitherSkull::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Wolf => { - for d in items { - Wolf::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Zoglin => { - for d in items { - Zoglin::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::Zombie => { - for d in items { - Zombie::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ZombieHorse => { - for d in items { - ZombieHorse::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ZombieVillager => { - for d in items { - ZombieVillager::apply_metadata(entity, d)?; - } - } - azalea_registry::EntityKind::ZombifiedPiglin => { - for d in items { - ZombifiedPiglin::apply_metadata(entity, d)?; - } - } - } - Ok(()) -} - -pub fn apply_default_metadata( - entity: &mut bevy_ecs::system::EntityCommands, - kind: azalea_registry::EntityKind, -) { - match kind { - azalea_registry::EntityKind::Allay => { - entity.insert(AllayMetadataBundle::default()); - } - azalea_registry::EntityKind::AreaEffectCloud => { - entity.insert(AreaEffectCloudMetadataBundle::default()); - } - azalea_registry::EntityKind::ArmorStand => { - entity.insert(ArmorStandMetadataBundle::default()); - } - azalea_registry::EntityKind::Arrow => { - entity.insert(ArrowMetadataBundle::default()); - } - azalea_registry::EntityKind::Axolotl => { - entity.insert(AxolotlMetadataBundle::default()); - } - azalea_registry::EntityKind::Bat => { - entity.insert(BatMetadataBundle::default()); - } - azalea_registry::EntityKind::Bee => { - entity.insert(BeeMetadataBundle::default()); - } - azalea_registry::EntityKind::Blaze => { - entity.insert(BlazeMetadataBundle::default()); - } - azalea_registry::EntityKind::BlockDisplay => { - entity.insert(BlockDisplayMetadataBundle::default()); - } - azalea_registry::EntityKind::Boat => { - entity.insert(BoatMetadataBundle::default()); - } - azalea_registry::EntityKind::Camel => { - entity.insert(CamelMetadataBundle::default()); - } - azalea_registry::EntityKind::Cat => { - entity.insert(CatMetadataBundle::default()); - } - azalea_registry::EntityKind::CaveSpider => { - entity.insert(CaveSpiderMetadataBundle::default()); - } - azalea_registry::EntityKind::ChestBoat => { - entity.insert(ChestBoatMetadataBundle::default()); - } - azalea_registry::EntityKind::ChestMinecart => { - entity.insert(ChestMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::Chicken => { - entity.insert(ChickenMetadataBundle::default()); - } - azalea_registry::EntityKind::Cod => { - entity.insert(CodMetadataBundle::default()); - } - azalea_registry::EntityKind::CommandBlockMinecart => { - entity.insert(CommandBlockMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::Cow => { - entity.insert(CowMetadataBundle::default()); - } - azalea_registry::EntityKind::Creeper => { - entity.insert(CreeperMetadataBundle::default()); - } - azalea_registry::EntityKind::Dolphin => { - entity.insert(DolphinMetadataBundle::default()); - } - azalea_registry::EntityKind::Donkey => { - entity.insert(DonkeyMetadataBundle::default()); - } - azalea_registry::EntityKind::DragonFireball => { - entity.insert(DragonFireballMetadataBundle::default()); - } - azalea_registry::EntityKind::Drowned => { - entity.insert(DrownedMetadataBundle::default()); - } - azalea_registry::EntityKind::Egg => { - entity.insert(EggMetadataBundle::default()); - } - azalea_registry::EntityKind::ElderGuardian => { - entity.insert(ElderGuardianMetadataBundle::default()); - } - azalea_registry::EntityKind::EndCrystal => { - entity.insert(EndCrystalMetadataBundle::default()); - } - azalea_registry::EntityKind::EnderDragon => { - entity.insert(EnderDragonMetadataBundle::default()); - } - azalea_registry::EntityKind::EnderPearl => { - entity.insert(EnderPearlMetadataBundle::default()); - } - azalea_registry::EntityKind::Enderman => { - entity.insert(EndermanMetadataBundle::default()); - } - azalea_registry::EntityKind::Endermite => { - entity.insert(EndermiteMetadataBundle::default()); - } - azalea_registry::EntityKind::Evoker => { - entity.insert(EvokerMetadataBundle::default()); - } - azalea_registry::EntityKind::EvokerFangs => { - entity.insert(EvokerFangsMetadataBundle::default()); - } - azalea_registry::EntityKind::ExperienceBottle => { - entity.insert(ExperienceBottleMetadataBundle::default()); - } - azalea_registry::EntityKind::ExperienceOrb => { - entity.insert(ExperienceOrbMetadataBundle::default()); - } - azalea_registry::EntityKind::EyeOfEnder => { - entity.insert(EyeOfEnderMetadataBundle::default()); - } - azalea_registry::EntityKind::FallingBlock => { - entity.insert(FallingBlockMetadataBundle::default()); - } - azalea_registry::EntityKind::Fireball => { - entity.insert(FireballMetadataBundle::default()); - } - azalea_registry::EntityKind::FireworkRocket => { - entity.insert(FireworkRocketMetadataBundle::default()); - } - azalea_registry::EntityKind::FishingBobber => { - entity.insert(FishingBobberMetadataBundle::default()); - } - azalea_registry::EntityKind::Fox => { - entity.insert(FoxMetadataBundle::default()); - } - azalea_registry::EntityKind::Frog => { - entity.insert(FrogMetadataBundle::default()); - } - azalea_registry::EntityKind::FurnaceMinecart => { - entity.insert(FurnaceMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::Ghast => { - entity.insert(GhastMetadataBundle::default()); - } - azalea_registry::EntityKind::Giant => { - entity.insert(GiantMetadataBundle::default()); - } - azalea_registry::EntityKind::GlowItemFrame => { - entity.insert(GlowItemFrameMetadataBundle::default()); - } - azalea_registry::EntityKind::GlowSquid => { - entity.insert(GlowSquidMetadataBundle::default()); - } - azalea_registry::EntityKind::Goat => { - entity.insert(GoatMetadataBundle::default()); - } - azalea_registry::EntityKind::Guardian => { - entity.insert(GuardianMetadataBundle::default()); - } - azalea_registry::EntityKind::Hoglin => { - entity.insert(HoglinMetadataBundle::default()); - } - azalea_registry::EntityKind::HopperMinecart => { - entity.insert(HopperMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::Horse => { - entity.insert(HorseMetadataBundle::default()); - } - azalea_registry::EntityKind::Husk => { - entity.insert(HuskMetadataBundle::default()); - } - azalea_registry::EntityKind::Illusioner => { - entity.insert(IllusionerMetadataBundle::default()); - } - azalea_registry::EntityKind::Interaction => { - entity.insert(InteractionMetadataBundle::default()); - } - azalea_registry::EntityKind::IronGolem => { - entity.insert(IronGolemMetadataBundle::default()); - } - azalea_registry::EntityKind::Item => { - entity.insert(ItemMetadataBundle::default()); - } - azalea_registry::EntityKind::ItemDisplay => { - entity.insert(ItemDisplayMetadataBundle::default()); - } - azalea_registry::EntityKind::ItemFrame => { - entity.insert(ItemFrameMetadataBundle::default()); - } - azalea_registry::EntityKind::LeashKnot => { - entity.insert(LeashKnotMetadataBundle::default()); - } - azalea_registry::EntityKind::LightningBolt => { - entity.insert(LightningBoltMetadataBundle::default()); - } - azalea_registry::EntityKind::Llama => { - entity.insert(LlamaMetadataBundle::default()); - } - azalea_registry::EntityKind::LlamaSpit => { - entity.insert(LlamaSpitMetadataBundle::default()); - } - azalea_registry::EntityKind::MagmaCube => { - entity.insert(MagmaCubeMetadataBundle::default()); - } - azalea_registry::EntityKind::Marker => { - entity.insert(MarkerMetadataBundle::default()); - } - azalea_registry::EntityKind::Minecart => { - entity.insert(MinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::Mooshroom => { - entity.insert(MooshroomMetadataBundle::default()); - } - azalea_registry::EntityKind::Mule => { - entity.insert(MuleMetadataBundle::default()); - } - azalea_registry::EntityKind::Ocelot => { - entity.insert(OcelotMetadataBundle::default()); - } - azalea_registry::EntityKind::Painting => { - entity.insert(PaintingMetadataBundle::default()); - } - azalea_registry::EntityKind::Panda => { - entity.insert(PandaMetadataBundle::default()); - } - azalea_registry::EntityKind::Parrot => { - entity.insert(ParrotMetadataBundle::default()); - } - azalea_registry::EntityKind::Phantom => { - entity.insert(PhantomMetadataBundle::default()); - } - azalea_registry::EntityKind::Pig => { - entity.insert(PigMetadataBundle::default()); - } - azalea_registry::EntityKind::Piglin => { - entity.insert(PiglinMetadataBundle::default()); - } - azalea_registry::EntityKind::PiglinBrute => { - entity.insert(PiglinBruteMetadataBundle::default()); - } - azalea_registry::EntityKind::Pillager => { - entity.insert(PillagerMetadataBundle::default()); - } - azalea_registry::EntityKind::Player => { - entity.insert(PlayerMetadataBundle::default()); - } - azalea_registry::EntityKind::PolarBear => { - entity.insert(PolarBearMetadataBundle::default()); - } - azalea_registry::EntityKind::Potion => { - entity.insert(PotionMetadataBundle::default()); - } - azalea_registry::EntityKind::Pufferfish => { - entity.insert(PufferfishMetadataBundle::default()); - } - azalea_registry::EntityKind::Rabbit => { - entity.insert(RabbitMetadataBundle::default()); - } - azalea_registry::EntityKind::Ravager => { - entity.insert(RavagerMetadataBundle::default()); - } - azalea_registry::EntityKind::Salmon => { - entity.insert(SalmonMetadataBundle::default()); - } - azalea_registry::EntityKind::Sheep => { - entity.insert(SheepMetadataBundle::default()); - } - azalea_registry::EntityKind::Shulker => { - entity.insert(ShulkerMetadataBundle::default()); - } - azalea_registry::EntityKind::ShulkerBullet => { - entity.insert(ShulkerBulletMetadataBundle::default()); - } - azalea_registry::EntityKind::Silverfish => { - entity.insert(SilverfishMetadataBundle::default()); - } - azalea_registry::EntityKind::Skeleton => { - entity.insert(SkeletonMetadataBundle::default()); - } - azalea_registry::EntityKind::SkeletonHorse => { - entity.insert(SkeletonHorseMetadataBundle::default()); - } - azalea_registry::EntityKind::Slime => { - entity.insert(SlimeMetadataBundle::default()); - } - azalea_registry::EntityKind::SmallFireball => { - entity.insert(SmallFireballMetadataBundle::default()); - } - azalea_registry::EntityKind::Sniffer => { - entity.insert(SnifferMetadataBundle::default()); - } - azalea_registry::EntityKind::SnowGolem => { - entity.insert(SnowGolemMetadataBundle::default()); - } - azalea_registry::EntityKind::Snowball => { - entity.insert(SnowballMetadataBundle::default()); - } - azalea_registry::EntityKind::SpawnerMinecart => { - entity.insert(SpawnerMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::SpectralArrow => { - entity.insert(SpectralArrowMetadataBundle::default()); - } - azalea_registry::EntityKind::Spider => { - entity.insert(SpiderMetadataBundle::default()); - } - azalea_registry::EntityKind::Squid => { - entity.insert(SquidMetadataBundle::default()); - } - azalea_registry::EntityKind::Stray => { - entity.insert(StrayMetadataBundle::default()); - } - azalea_registry::EntityKind::Strider => { - entity.insert(StriderMetadataBundle::default()); - } - azalea_registry::EntityKind::Tadpole => { - entity.insert(TadpoleMetadataBundle::default()); - } - azalea_registry::EntityKind::TextDisplay => { - entity.insert(TextDisplayMetadataBundle::default()); - } - azalea_registry::EntityKind::Tnt => { - entity.insert(TntMetadataBundle::default()); - } - azalea_registry::EntityKind::TntMinecart => { - entity.insert(TntMinecartMetadataBundle::default()); - } - azalea_registry::EntityKind::TraderLlama => { - entity.insert(TraderLlamaMetadataBundle::default()); - } - azalea_registry::EntityKind::Trident => { - entity.insert(TridentMetadataBundle::default()); - } - azalea_registry::EntityKind::TropicalFish => { - entity.insert(TropicalFishMetadataBundle::default()); - } - azalea_registry::EntityKind::Turtle => { - entity.insert(TurtleMetadataBundle::default()); - } - azalea_registry::EntityKind::Vex => { - entity.insert(VexMetadataBundle::default()); - } - azalea_registry::EntityKind::Villager => { - entity.insert(VillagerMetadataBundle::default()); - } - azalea_registry::EntityKind::Vindicator => { - entity.insert(VindicatorMetadataBundle::default()); - } - azalea_registry::EntityKind::WanderingTrader => { - entity.insert(WanderingTraderMetadataBundle::default()); - } - azalea_registry::EntityKind::Warden => { - entity.insert(WardenMetadataBundle::default()); - } - azalea_registry::EntityKind::Witch => { - entity.insert(WitchMetadataBundle::default()); - } - azalea_registry::EntityKind::Wither => { - entity.insert(WitherMetadataBundle::default()); - } - azalea_registry::EntityKind::WitherSkeleton => { - entity.insert(WitherSkeletonMetadataBundle::default()); - } - azalea_registry::EntityKind::WitherSkull => { - entity.insert(WitherSkullMetadataBundle::default()); - } - azalea_registry::EntityKind::Wolf => { - entity.insert(WolfMetadataBundle::default()); - } - azalea_registry::EntityKind::Zoglin => { - entity.insert(ZoglinMetadataBundle::default()); - } - azalea_registry::EntityKind::Zombie => { - entity.insert(ZombieMetadataBundle::default()); - } - azalea_registry::EntityKind::ZombieHorse => { - entity.insert(ZombieHorseMetadataBundle::default()); - } - azalea_registry::EntityKind::ZombieVillager => { - entity.insert(ZombieVillagerMetadataBundle::default()); - } - azalea_registry::EntityKind::ZombifiedPiglin => { - entity.insert(ZombifiedPiglinMetadataBundle::default()); - } - } -} diff --git a/azalea-world/src/entity/mod.rs b/azalea-world/src/entity/mod.rs deleted file mode 100644 index d1d29a5a..00000000 --- a/azalea-world/src/entity/mod.rs +++ /dev/null @@ -1,398 +0,0 @@ -#![allow(clippy::derived_hash_with_manual_eq)] - -pub mod attributes; -mod data; -mod dimensions; -mod info; -pub mod metadata; - -use crate::ChunkStorage; - -use self::{attributes::AttributeInstance, metadata::Health}; -pub use attributes::Attributes; -use azalea_block::BlockState; -use azalea_core::{BlockPos, ChunkPos, ResourceLocation, Vec3, AABB}; -use bevy_ecs::{ - bundle::Bundle, - component::Component, - entity::Entity, - query::Changed, - system::{Commands, Query}, -}; -pub use data::*; -use derive_more::{Deref, DerefMut}; -pub use dimensions::{update_bounding_box, EntityDimensions}; -pub use info::{ - clamp_look_direction, EntityInfos, EntityPlugin, EntityUpdateSet, LoadedBy, PartialEntityInfos, - RelativeEntityUpdate, -}; -use std::fmt::Debug; -use uuid::Uuid; - -/// An entity ID used by Minecraft. These are not guaranteed to be unique in -/// shared worlds, that's what [`Entity`] is for. -#[derive(Component, Copy, Clone, Debug, PartialEq, Eq, Deref, DerefMut)] -pub struct MinecraftEntityId(pub u32); -impl std::hash::Hash for MinecraftEntityId { - fn hash<H: std::hash::Hasher>(&self, hasher: &mut H) { - hasher.write_u32(self.0); - } -} -impl nohash_hasher::IsEnabled for MinecraftEntityId {} - -pub fn move_relative( - physics: &mut Physics, - direction: &LookDirection, - speed: f32, - acceleration: &Vec3, -) { - let input_vector = input_vector(direction, speed, acceleration); - physics.delta += input_vector; -} - -pub fn input_vector(direction: &LookDirection, speed: f32, acceleration: &Vec3) -> Vec3 { - let distance = acceleration.length_squared(); - if distance < 1.0E-7 { - return Vec3::default(); - } - let acceleration = if distance > 1.0 { - acceleration.normalize() - } else { - *acceleration - } - .scale(speed as f64); - let y_rot = f32::sin(direction.y_rot * 0.017453292f32); - let x_rot = f32::cos(direction.y_rot * 0.017453292f32); - Vec3 { - x: acceleration.x * (x_rot as f64) - acceleration.z * (y_rot as f64), - y: acceleration.y, - z: acceleration.z * (x_rot as f64) + acceleration.x * (y_rot as f64), - } -} - -pub fn view_vector(look_direction: &LookDirection) -> Vec3 { - let x_rot = look_direction.x_rot * 0.017453292; - let y_rot = -look_direction.y_rot * 0.017453292; - let y_rot_cos = f32::cos(y_rot); - let y_rot_sin = f32::sin(y_rot); - let x_rot_cos = f32::cos(x_rot); - let x_rot_sin = f32::sin(x_rot); - Vec3 { - x: (y_rot_sin * x_rot_cos) as f64, - y: (-x_rot_sin) as f64, - z: (y_rot_cos * x_rot_cos) as f64, - } -} - -/// Get the position of the block below the entity, but a little lower. -pub fn on_pos_legacy(chunk_storage: &ChunkStorage, position: &Position) -> BlockPos { - on_pos(0.2, chunk_storage, position) -} - -// int x = Mth.floor(this.position.x); -// int y = Mth.floor(this.position.y - (double)var1); -// int z = Mth.floor(this.position.z); -// BlockPos var5 = new BlockPos(x, y, z); -// if (this.level.getBlockState(var5).isAir()) { -// BlockPos var6 = var5.below(); -// BlockState var7 = this.level.getBlockState(var6); -// if (var7.is(BlockTags.FENCES) || var7.is(BlockTags.WALLS) || -// var7.getBlock() instanceof FenceGateBlock) { return var6; -// } -// } -// return var5; -pub fn on_pos(offset: f32, chunk_storage: &ChunkStorage, pos: &Position) -> BlockPos { - let x = pos.x.floor() as i32; - let y = (pos.y - offset as f64).floor() as i32; - let z = pos.z.floor() as i32; - let pos = BlockPos { x, y, z }; - - // TODO: check if block below is a fence, wall, or fence gate - let block_pos = pos.down(1); - let block_state = chunk_storage.get_block_state(&block_pos); - if block_state == Some(BlockState::AIR) { - let block_pos_below = block_pos.down(1); - let block_state_below = chunk_storage.get_block_state(&block_pos_below); - if let Some(_block_state_below) = block_state_below { - // if block_state_below.is_fence() - // || block_state_below.is_wall() - // || block_state_below.is_fence_gate() - // { - // return block_pos_below; - // } - } - } - - pos -} - -/// The Minecraft UUID of the entity. For players, this is their actual player -/// UUID, and for other entities it's just random. -#[derive(Component, Deref, DerefMut, Clone, Copy)] -pub struct EntityUuid(Uuid); -impl Debug for EntityUuid { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - (self.0).fmt(f) - } -} - -/// The position of the entity right now. -/// -/// You are free to change this; there's systems that update the indexes -/// automatically. -#[derive(Component, Clone, Copy, Debug, Default, PartialEq, Deref, DerefMut)] -pub struct Position(Vec3); -impl From<&Position> for Vec3 { - fn from(value: &Position) -> Self { - value.0 - } -} -impl From<Position> for ChunkPos { - fn from(value: Position) -> Self { - ChunkPos::from(&value.0) - } -} -impl From<Position> for BlockPos { - fn from(value: Position) -> Self { - BlockPos::from(&value.0) - } -} -impl From<&Position> for ChunkPos { - fn from(value: &Position) -> Self { - ChunkPos::from(value.0) - } -} -impl From<&Position> for BlockPos { - fn from(value: &Position) -> Self { - BlockPos::from(value.0) - } -} - -/// The last position of the entity that was sent over the network. -#[derive(Component, Clone, Copy, Debug, Default, PartialEq, Deref, DerefMut)] -pub struct LastSentPosition(Vec3); -impl From<&LastSentPosition> for Vec3 { - fn from(value: &LastSentPosition) -> Self { - value.0 - } -} -impl From<LastSentPosition> for ChunkPos { - fn from(value: LastSentPosition) -> Self { - ChunkPos::from(&value.0) - } -} -impl From<LastSentPosition> for BlockPos { - fn from(value: LastSentPosition) -> Self { - BlockPos::from(&value.0) - } -} -impl From<&LastSentPosition> for ChunkPos { - fn from(value: &LastSentPosition) -> Self { - ChunkPos::from(value.0) - } -} -impl From<&LastSentPosition> for BlockPos { - fn from(value: &LastSentPosition) -> Self { - BlockPos::from(value.0) - } -} - -/// The name of the world the entity is in. If two entities share the same world -/// name, we assume they're in the same world. -#[derive(Component, Clone, Debug, PartialEq, Deref, DerefMut)] -pub struct WorldName(pub ResourceLocation); - -/// A component for entities that can jump. -/// -/// If this is true, the entity will try to jump every tick. (It's equivalent to -/// the space key being held in vanilla.) -#[derive(Debug, Component, Clone, Deref, DerefMut)] -pub struct Jumping(bool); - -/// A component that contains the direction an entity is looking. -#[derive(Debug, Component, Clone, Default)] -pub struct LookDirection { - pub x_rot: f32, - pub y_rot: f32, -} - -/// The physics data relating to the entity, such as position, velocity, and -/// bounding box. -#[derive(Debug, Component)] -pub struct Physics { - pub delta: Vec3, - - /// X acceleration. - pub xxa: f32, - /// Y acceleration. - pub yya: f32, - /// Z acceleration. - pub zza: f32, - - pub on_ground: bool, - pub last_on_ground: bool, - - /// The width and height of the entity. - pub dimensions: EntityDimensions, - /// The bounding box of the entity. This is more than just width and height, - /// unlike dimensions. - pub bounding_box: AABB, - - pub has_impulse: bool, -} - -/// Marker component for entities that are dead. -/// -/// "Dead" means that the entity has 0 health. -#[derive(Component, Copy, Clone, Default)] -pub struct Dead; - -/// System that adds the [`Dead`] marker component if an entity's health is set -/// to 0 (or less than 0). This will be present if an entity is doing the death -/// animation. -/// -/// Entities that are dead can not be revived. -/// TODO: fact check this in-game by setting an entity's health to 0 and then -/// not 0 -pub fn add_dead(mut commands: Commands, query: Query<(Entity, &Health), Changed<Health>>) { - for (entity, health) in query.iter() { - if **health <= 0.0 { - commands.entity(entity).insert(Dead); - } - } -} - -/// A component that contains the offset of the entity's eyes from the entity -/// coordinates. -/// -/// This is used to calculate the camera position for players, when spectating -/// an entity, and when raytracing from the entity. -#[derive(Component, Clone, Copy, Debug, PartialEq, Deref, DerefMut)] -pub struct EyeHeight(f32); -impl From<EyeHeight> for f32 { - fn from(value: EyeHeight) -> Self { - value.0 - } -} -impl From<EyeHeight> for f64 { - fn from(value: EyeHeight) -> Self { - value.0 as f64 - } -} -impl From<&EyeHeight> for f32 { - fn from(value: &EyeHeight) -> Self { - value.0 - } -} -impl From<&EyeHeight> for f64 { - fn from(value: &EyeHeight) -> Self { - value.0 as f64 - } -} - -/// A component NewType for [`azalea_registry::EntityKind`]. -/// -/// Most of the time, you should be using `azalea_registry::EntityKind` -/// directly instead. -#[derive(Component, Clone, Copy, Debug, PartialEq, Deref)] -pub struct EntityKind(pub azalea_registry::EntityKind); - -/// A bundle of components that every entity has. This doesn't contain metadata, -/// that has to be added separately. -#[derive(Bundle)] -pub struct EntityBundle { - pub kind: EntityKind, - pub uuid: EntityUuid, - pub world_name: WorldName, - pub position: Position, - pub last_sent_position: LastSentPosition, - pub physics: Physics, - pub direction: LookDirection, - pub eye_height: EyeHeight, - pub attributes: Attributes, - pub jumping: Jumping, -} - -impl EntityBundle { - pub fn new( - uuid: Uuid, - pos: Vec3, - kind: azalea_registry::EntityKind, - world_name: ResourceLocation, - ) -> Self { - // TODO: get correct entity dimensions by having them codegen'd somewhere - let dimensions = EntityDimensions { - width: 0.6, - height: 1.8, - }; - let eye_height = dimensions.height * 0.85; - - Self { - kind: EntityKind(kind), - uuid: EntityUuid(uuid), - world_name: WorldName(world_name), - position: Position(pos), - last_sent_position: LastSentPosition(pos), - physics: Physics { - delta: Vec3::default(), - - xxa: 0., - yya: 0., - zza: 0., - - on_ground: false, - last_on_ground: false, - - // TODO: have this be based on the entity type - bounding_box: dimensions.make_bounding_box(&pos), - dimensions, - - has_impulse: false, - }, - eye_height: EyeHeight(eye_height), - direction: LookDirection::default(), - - attributes: Attributes { - // TODO: do the correct defaults for everything, some - // entities have different defaults - speed: AttributeInstance::new(0.1), - }, - - jumping: Jumping(false), - } - } -} - -/// A bundle of the components that are always present for a player. -#[derive(Bundle)] -pub struct PlayerBundle { - pub entity: EntityBundle, - pub metadata: metadata::PlayerMetadataBundle, -} - -/// A marker component that signifies that this entity is "local" and shouldn't -/// be updated by other clients. -#[derive(Component)] -pub struct Local; - -// #[cfg(test)] -// mod tests { -// use super::*; -// use crate::PartialWorld; - -// #[test] -// fn from_mut_entity_to_ref_entity() { -// let mut world = PartialWorld::default(); -// let uuid = Uuid::from_u128(100); -// world.add_entity( -// 0, -// EntityData::new( -// uuid, -// Vec3::default(), -// EntityMetadata::Player(metadata::Player::default()), -// ), -// ); -// let entity: Entity = world.entity_mut(0).unwrap(); -// assert_eq!(entity.uuid, uuid); -// } -// } |
