aboutsummaryrefslogtreecommitdiff
path: root/azalea-entity/src
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-06-17 06:49:07 -1200
committermat <git@matdoes.dev>2025-06-17 06:49:07 -1200
commitffbe7a3e426e66c21c7156780728f96f8277c68a (patch)
tree5358ab47c013cc848dd7d24781676062fc87da4e /azalea-entity/src
parent319d144995e0ca635806941cbb5d6ceaf0fcf515 (diff)
downloadazalea-drasl-ffbe7a3e426e66c21c7156780728f96f8277c68a.tar.xz
1.21.6 (#215)
Diffstat (limited to 'azalea-entity/src')
-rw-r--r--azalea-entity/src/dimensions.rs1
-rw-r--r--azalea-entity/src/metadata.rs123
-rw-r--r--azalea-entity/src/mining.rs2
3 files changed, 118 insertions, 8 deletions
diff --git a/azalea-entity/src/dimensions.rs b/azalea-entity/src/dimensions.rs
index 8770fa94..68e9903d 100644
--- a/azalea-entity/src/dimensions.rs
+++ b/azalea-entity/src/dimensions.rs
@@ -89,6 +89,7 @@ impl From<EntityKind> for EntityDimensions {
EntityKind::GlowSquid => EntityDimensions::new(0.8, 0.8),
EntityKind::Goat => EntityDimensions::new(0.9, 1.3),
EntityKind::Guardian => EntityDimensions::new(0.85, 0.85),
+ EntityKind::HappyGhast => EntityDimensions::new(4.0, 4.0),
EntityKind::Hoglin => EntityDimensions::new(1.39648, 1.4),
EntityKind::HopperMinecart => EntityDimensions::new(0.98, 0.7),
EntityKind::Horse => EntityDimensions::new(1.39648, 1.6),
diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs
index 1397e624..c20233cc 100644
--- a/azalea-entity/src/metadata.rs
+++ b/azalea-entity/src/metadata.rs
@@ -4236,6 +4236,8 @@ impl Default for GiantMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone)]
+pub struct ItemFrameDirection(pub Direction);
+#[derive(Component, Deref, DerefMut, Clone)]
pub struct ItemFrameItem(pub ItemStack);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct Rotation(pub i32);
@@ -4247,7 +4249,7 @@ impl GlowItemFrame {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=9 => ItemFrame::apply_metadata(entity, d)?,
+ 0..=10 => ItemFrame::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -4282,7 +4284,8 @@ impl Default for GlowItemFrameMetadataBundle {
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
- item_frame_item: ItemFrameItem(ItemStack::Empty),
+ item_frame_direction: ItemFrameDirection(Default::default()),
+ item_frame_item: ItemFrameItem(Default::default()),
rotation: Rotation(0),
},
}
@@ -4540,6 +4543,92 @@ impl Default for GuardianMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone)]
+pub struct IsLeashHolder(pub bool);
+#[derive(Component, Deref, DerefMut, Clone)]
+pub struct StaysStill(pub bool);
+#[derive(Component)]
+pub struct HappyGhast;
+impl HappyGhast {
+ 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(IsLeashHolder(d.value.into_boolean()?));
+ }
+ 18 => {
+ entity.insert(StaysStill(d.value.into_boolean()?));
+ }
+ _ => {}
+ }
+ Ok(())
+ }
+}
+
+#[derive(Bundle)]
+pub struct HappyGhastMetadataBundle {
+ _marker: HappyGhast,
+ parent: AbstractAnimalMetadataBundle,
+ is_leash_holder: IsLeashHolder,
+ stays_still: StaysStill,
+}
+impl Default for HappyGhastMetadataBundle {
+ fn default() -> Self {
+ Self {
+ _marker: HappyGhast,
+ 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(Default::default()),
+ custom_name_visible: CustomNameVisible(Default::default()),
+ silent: Silent(Default::default()),
+ no_gravity: NoGravity(Default::default()),
+ pose: Pose::default(),
+ ticks_frozen: TicksFrozen(Default::default()),
+ },
+ auto_spin_attack: AutoSpinAttack(false),
+ abstract_living_using_item: AbstractLivingUsingItem(false),
+ health: Health(1.0),
+ effect_particles: EffectParticles(Default::default()),
+ 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_leash_holder: IsLeashHolder(false),
+ stays_still: StaysStill(false),
+ }
+ }
+}
+
+#[derive(Component, Deref, DerefMut, Clone)]
pub struct HoglinImmuneToZombification(pub bool);
#[derive(Component)]
pub struct Hoglin;
@@ -5096,7 +5185,7 @@ impl Default for ItemMetadataBundle {
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
- item_item: ItemItem(ItemStack::Empty),
+ item_item: ItemItem(Default::default()),
}
}
}
@@ -5191,7 +5280,7 @@ impl Default for ItemDisplayMetadataBundle {
abstract_display_height: AbstractDisplayHeight(0.0),
glow_color_override: GlowColorOverride(-1),
},
- item_display_item_stack: ItemDisplayItemStack(ItemStack::Empty),
+ item_display_item_stack: ItemDisplayItemStack(Default::default()),
item_display_item_display: ItemDisplayItemDisplay(Default::default()),
}
}
@@ -5207,9 +5296,12 @@ impl ItemFrame {
match d.index {
0..=7 => AbstractEntity::apply_metadata(entity, d)?,
8 => {
- entity.insert(ItemFrameItem(d.value.into_item_stack()?));
+ entity.insert(ItemFrameDirection(d.value.into_direction()?));
}
9 => {
+ entity.insert(ItemFrameItem(d.value.into_item_stack()?));
+ }
+ 10 => {
entity.insert(Rotation(d.value.into_int()?));
}
_ => {}
@@ -5222,6 +5314,7 @@ impl ItemFrame {
pub struct ItemFrameMetadataBundle {
_marker: ItemFrame,
parent: AbstractEntityMetadataBundle,
+ item_frame_direction: ItemFrameDirection,
item_frame_item: ItemFrameItem,
rotation: Rotation,
}
@@ -5246,7 +5339,8 @@ impl Default for ItemFrameMetadataBundle {
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
- item_frame_item: ItemFrameItem(ItemStack::Empty),
+ item_frame_direction: ItemFrameDirection(Default::default()),
+ item_frame_item: ItemFrameItem(Default::default()),
rotation: Rotation(0),
}
}
@@ -6338,12 +6432,14 @@ impl Default for OminousItemSpawnerMetadataBundle {
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
- ominous_item_spawner_item: OminousItemSpawnerItem(ItemStack::Empty),
+ ominous_item_spawner_item: OminousItemSpawnerItem(Default::default()),
}
}
}
#[derive(Component, Deref, DerefMut, Clone)]
+pub struct PaintingDirection(pub Direction);
+#[derive(Component, Deref, DerefMut, Clone)]
pub struct PaintingVariant(pub azalea_registry::PaintingVariant);
#[derive(Component)]
pub struct Painting;
@@ -6355,6 +6451,9 @@ impl Painting {
match d.index {
0..=7 => AbstractEntity::apply_metadata(entity, d)?,
8 => {
+ entity.insert(PaintingDirection(d.value.into_direction()?));
+ }
+ 9 => {
entity.insert(PaintingVariant(d.value.into_painting_variant()?));
}
_ => {}
@@ -6367,6 +6466,7 @@ impl Painting {
pub struct PaintingMetadataBundle {
_marker: Painting,
parent: AbstractEntityMetadataBundle,
+ painting_direction: PaintingDirection,
painting_variant: PaintingVariant,
}
impl Default for PaintingMetadataBundle {
@@ -6390,6 +6490,7 @@ impl Default for PaintingMetadataBundle {
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
+ painting_direction: PaintingDirection(Default::default()),
painting_variant: PaintingVariant(azalea_registry::PaintingVariant::new_raw(0)),
}
}
@@ -12690,6 +12791,11 @@ pub fn apply_metadata(
Guardian::apply_metadata(entity, d)?;
}
}
+ azalea_registry::EntityKind::HappyGhast => {
+ for d in items {
+ HappyGhast::apply_metadata(entity, d)?;
+ }
+ }
azalea_registry::EntityKind::Hoglin => {
for d in items {
Hoglin::apply_metadata(entity, d)?;
@@ -13325,6 +13431,9 @@ pub fn apply_default_metadata(
azalea_registry::EntityKind::Guardian => {
entity.insert(GuardianMetadataBundle::default());
}
+ azalea_registry::EntityKind::HappyGhast => {
+ entity.insert(HappyGhastMetadataBundle::default());
+ }
azalea_registry::EntityKind::Hoglin => {
entity.insert(HoglinMetadataBundle::default());
}
diff --git a/azalea-entity/src/mining.rs b/azalea-entity/src/mining.rs
index fbe7f525..8b572935 100644
--- a/azalea-entity/src/mining.rs
+++ b/azalea-entity/src/mining.rs
@@ -1,4 +1,4 @@
-use azalea_block::{BlockTrait, BlockBehavior};
+use azalea_block::{BlockBehavior, BlockTrait};
use azalea_core::tier::get_item_tier;
use azalea_registry as registry;