From b300cd7b36a5ba6f5be58e1942da8e2c866106e6 Mon Sep 17 00:00:00 2001 From: mat Date: Fri, 19 Dec 2025 13:07:19 +1100 Subject: smaller EntityDataValue type --- azalea-entity/src/data.rs | 12 +++++++----- azalea-entity/src/metadata.rs | 14 +++++++------- azalea-entity/src/particle.rs | 4 ++-- 3 files changed, 16 insertions(+), 14 deletions(-) (limited to 'azalea-entity/src') diff --git a/azalea-entity/src/data.rs b/azalea-entity/src/data.rs index fab78795..c9e98b0d 100644 --- a/azalea-entity/src/data.rs +++ b/azalea-entity/src/data.rs @@ -65,9 +65,9 @@ pub enum EntityDataValue { Int(#[var] i32), Long(#[var] i64), Float(f32), - String(String), - FormattedText(FormattedText), - OptionalFormattedText(Option), + String(Box), + FormattedText(Box), + OptionalFormattedText(Option>), ItemStack(ItemStack), Boolean(bool), Rotations(Rotations), @@ -79,7 +79,7 @@ pub enum EntityDataValue { /// If this is air, that means it's absent, OptionalBlockState(azalea_block::BlockState), Particle(Particle), - Particles(Vec), + Particles(Box<[Particle]>), VillagerData(VillagerData), // 0 for absent; 1 + actual value otherwise. Used for entity IDs. OptionalUnsignedInt(OptionalUnsignedInt), @@ -92,7 +92,7 @@ pub enum EntityDataValue { PigVariant(azalea_registry::data::PigVariant), ChickenVariant(azalea_registry::data::ChickenVariant), ZombieNautilusVariant(azalea_registry::data::ZombieNautilusVariant), - OptionalGlobalPos(Option), + OptionalGlobalPos(Option>), PaintingVariant(azalea_registry::data::PaintingVariant), SnifferState(SnifferStateKind), ArmadilloState(ArmadilloStateKind), @@ -104,6 +104,8 @@ pub enum EntityDataValue { HumanoidArm(HumanoidArm), } +const _: () = assert!(size_of::() == 24); + #[derive(Clone, Debug, PartialEq)] pub struct OptionalUnsignedInt(pub Option); diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs index 03b5ad69..d076e403 100644 --- a/azalea-entity/src/metadata.rs +++ b/azalea-entity/src/metadata.rs @@ -250,7 +250,7 @@ pub struct FallFlying(pub bool); pub struct AirSupply(pub i32); /// A metadata field for [AbstractEntity]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct CustomName(pub Option); +pub struct CustomName(pub Option>); /// A metadata field for [AbstractEntity]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] pub struct CustomNameVisible(pub bool); @@ -2718,7 +2718,7 @@ impl Default for ItemDisplayMetadataBundle { /// A metadata field for [TextDisplay]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct Text(pub FormattedText); +pub struct Text(pub Box); /// A metadata field for [TextDisplay]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] pub struct LineWidth(pub i32); @@ -2824,7 +2824,7 @@ pub struct AbstractLivingUsingItem(pub bool); pub struct Health(pub f32); /// A metadata field for [AbstractLiving]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct EffectParticles(pub Vec); +pub struct EffectParticles(pub Box<[Particle]>); /// A metadata field for [AbstractLiving]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] pub struct EffectAmbience(pub bool); @@ -3256,7 +3256,7 @@ pub struct Profile(pub components::Profile); pub struct Immovable(pub bool); /// A metadata field for [Mannequin]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct Description(pub Option); +pub struct Description(pub Option>); /// The marker component for entities of type `minecraft:mannequin`. /// /// # Metadata @@ -12295,10 +12295,10 @@ impl Default for ChestMinecartMetadataBundle { /// A metadata field for [CommandBlockMinecart]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct CommandName(pub String); +pub struct CommandName(pub Box); /// A metadata field for [CommandBlockMinecart]. #[derive(Component, Deref, DerefMut, Clone, PartialEq)] -pub struct LastOutput(pub FormattedText); +pub struct LastOutput(pub Box); /// The marker component for entities of type /// `minecraft:command_block_minecart`. /// @@ -12359,7 +12359,7 @@ impl Default for CommandBlockMinecartMetadataBundle { Self { _marker: CommandBlockMinecart, parent: Default::default(), - command_name: CommandName("".to_owned()), + command_name: CommandName("".into()), last_output: LastOutput(Default::default()), } } diff --git a/azalea-entity/src/particle.rs b/azalea-entity/src/particle.rs index a85d2565..14dad4cc 100644 --- a/azalea-entity/src/particle.rs +++ b/azalea-entity/src/particle.rs @@ -60,7 +60,7 @@ pub enum Particle { Heart, InstantEffect, Item(ItemParticle), - Vibration(VibrationParticle), + Vibration(Box), Trail, ItemSlime, ItemCobweb, @@ -183,7 +183,7 @@ impl From for Particle { ParticleKind::Heart => Self::Heart, ParticleKind::InstantEffect => Self::InstantEffect, ParticleKind::Item => Self::Item(ItemParticle::default()), - ParticleKind::Vibration => Self::Vibration(VibrationParticle::default()), + ParticleKind::Vibration => Self::Vibration(Box::new(VibrationParticle::default())), ParticleKind::ItemSlime => Self::ItemSlime, ParticleKind::ItemSnowball => Self::ItemSnowball, ParticleKind::LargeSmoke => Self::LargeSmoke, -- cgit v1.2.3