aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml2
-rw-r--r--README.md2
-rw-r--r--azalea-entity/src/metadata.rs216
-rw-r--r--azalea-protocol/src/packets/mod.rs2
4 files changed, 137 insertions, 85 deletions
diff --git a/Cargo.toml b/Cargo.toml
index a54f1df5..9b444c3d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,7 +22,7 @@ resolver = "2"
# --- Workspace Settings ---
[workspace.package]
-version = "0.14.0+mc1.21.9"
+version = "0.14.0+mc1.21.10"
edition = "2024"
license = "MIT"
repository = "https://github.com/azalea-rs/azalea"
diff --git a/README.md b/README.md
index 9a6e0955..44389578 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ A collection of Rust crates for making Minecraft bots, clients, and tools.
<!-- The line below is automatically read and updated by the migrate script, so don't change it manually. -->
-_Currently supported Minecraft version: `1.21.9`._
+_Currently supported Minecraft version: `1.21.10`._
> [!WARNING]
> Many parts of Azalea are still unfinished and will receive breaking changes in the future. Most breaking changes will be listed in the [changelog](CHANGELOG.md).
diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs
index 68b8b78c..6af78de3 100644
--- a/azalea-entity/src/metadata.rs
+++ b/azalea-entity/src/metadata.rs
@@ -6049,9 +6049,9 @@ impl Default for MangroveChestBoatMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct MannequinPlayerMainHand(pub u8);
+pub struct PlayerMainHand(pub u8);
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct MannequinPlayerModeCustomisation(pub u8);
+pub struct PlayerModeCustomisation(pub u8);
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Profile(pub components::Profile);
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
@@ -6066,13 +6066,7 @@ impl Mannequin {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=14 => AbstractLiving::apply_metadata(entity, d)?,
- 15 => {
- entity.insert(MannequinPlayerMainHand(d.value.into_byte()?));
- }
- 16 => {
- entity.insert(MannequinPlayerModeCustomisation(d.value.into_byte()?));
- }
+ 0..=16 => AbstractAvatar::apply_metadata(entity, d)?,
17 => {
entity.insert(Profile(d.value.into_resolvable_profile()?));
}
@@ -6091,9 +6085,7 @@ impl Mannequin {
#[derive(Bundle)]
pub struct MannequinMetadataBundle {
_marker: Mannequin,
- parent: AbstractLivingMetadataBundle,
- mannequin_player_main_hand: MannequinPlayerMainHand,
- mannequin_player_mode_customisation: MannequinPlayerModeCustomisation,
+ parent: AbstractAvatarMetadataBundle,
profile: Profile,
immovable: Immovable,
description: Description,
@@ -6102,36 +6094,39 @@ impl Default for MannequinMetadataBundle {
fn default() -> Self {
Self {
_marker: Mannequin,
- parent: AbstractLivingMetadataBundle {
- _marker: AbstractLiving,
- parent: AbstractEntityMetadataBundle {
- _marker: AbstractEntity,
- on_fire: OnFire(false),
- abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(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()),
+ parent: AbstractAvatarMetadataBundle {
+ _marker: AbstractAvatar,
+ parent: AbstractLivingMetadataBundle {
+ _marker: AbstractLiving,
+ parent: AbstractEntityMetadataBundle {
+ _marker: AbstractEntity,
+ on_fire: OnFire(false),
+ abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(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),
},
- 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),
+ player_main_hand: PlayerMainHand(Default::default()),
+ player_mode_customisation: PlayerModeCustomisation(0),
},
- mannequin_player_main_hand: MannequinPlayerMainHand(Default::default()),
- mannequin_player_mode_customisation: MannequinPlayerModeCustomisation(0),
profile: Profile(Default::default()),
immovable: Immovable(false),
description: Description(Default::default()),
@@ -7456,10 +7451,6 @@ impl Default for PillagerMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct PlayerPlayerMainHand(pub u8);
-#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct PlayerPlayerModeCustomisation(pub u8);
-#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PlayerAbsorption(pub f32);
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Score(pub i32);
@@ -7475,13 +7466,7 @@ impl Player {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=14 => AbstractLiving::apply_metadata(entity, d)?,
- 15 => {
- entity.insert(PlayerPlayerMainHand(d.value.into_byte()?));
- }
- 16 => {
- entity.insert(PlayerPlayerModeCustomisation(d.value.into_byte()?));
- }
+ 0..=16 => AbstractAvatar::apply_metadata(entity, d)?,
17 => {
entity.insert(PlayerAbsorption(d.value.into_float()?));
}
@@ -7503,9 +7488,7 @@ impl Player {
#[derive(Bundle)]
pub struct PlayerMetadataBundle {
_marker: Player,
- parent: AbstractLivingMetadataBundle,
- player_player_main_hand: PlayerPlayerMainHand,
- player_player_mode_customisation: PlayerPlayerModeCustomisation,
+ parent: AbstractAvatarMetadataBundle,
player_absorption: PlayerAbsorption,
score: Score,
shoulder_parrot_left: ShoulderParrotLeft,
@@ -7515,36 +7498,39 @@ impl Default for PlayerMetadataBundle {
fn default() -> Self {
Self {
_marker: Player,
- parent: AbstractLivingMetadataBundle {
- _marker: AbstractLiving,
- parent: AbstractEntityMetadataBundle {
- _marker: AbstractEntity,
- on_fire: OnFire(false),
- abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(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()),
+ parent: AbstractAvatarMetadataBundle {
+ _marker: AbstractAvatar,
+ parent: AbstractLivingMetadataBundle {
+ _marker: AbstractLiving,
+ parent: AbstractEntityMetadataBundle {
+ _marker: AbstractEntity,
+ on_fire: OnFire(false),
+ abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(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),
},
- 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),
+ player_main_hand: PlayerMainHand(Default::default()),
+ player_mode_customisation: PlayerModeCustomisation(0),
},
- player_player_main_hand: PlayerPlayerMainHand(Default::default()),
- player_player_mode_customisation: PlayerPlayerModeCustomisation(0),
player_absorption: PlayerAbsorption(0.0),
score: Score(0),
shoulder_parrot_left: ShoulderParrotLeft(OptionalUnsignedInt(None)),
@@ -11368,6 +11354,72 @@ impl Default for AbstractArrowMetadataBundle {
}
#[derive(Component)]
+pub struct AbstractAvatar;
+impl AbstractAvatar {
+ 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(PlayerMainHand(d.value.into_byte()?));
+ }
+ 16 => {
+ entity.insert(PlayerModeCustomisation(d.value.into_byte()?));
+ }
+ _ => {}
+ }
+ Ok(())
+ }
+}
+
+#[derive(Bundle)]
+pub struct AbstractAvatarMetadataBundle {
+ _marker: AbstractAvatar,
+ parent: AbstractLivingMetadataBundle,
+ player_main_hand: PlayerMainHand,
+ player_mode_customisation: PlayerModeCustomisation,
+}
+impl Default for AbstractAvatarMetadataBundle {
+ fn default() -> Self {
+ Self {
+ _marker: AbstractAvatar,
+ parent: AbstractLivingMetadataBundle {
+ _marker: AbstractLiving,
+ parent: AbstractEntityMetadataBundle {
+ _marker: AbstractEntity,
+ on_fire: OnFire(false),
+ abstract_entity_shift_key_down: AbstractEntityShiftKeyDown(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),
+ },
+ player_main_hand: PlayerMainHand(Default::default()),
+ player_mode_customisation: PlayerModeCustomisation(0),
+ }
+ }
+}
+
+#[derive(Component)]
pub struct AbstractBoat;
impl AbstractBoat {
pub fn apply_metadata(
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs
index 61c0113e..e532ebcd 100644
--- a/azalea-protocol/src/packets/mod.rs
+++ b/azalea-protocol/src/packets/mod.rs
@@ -12,7 +12,7 @@ use azalea_buf::{AzaleaReadVar, AzaleaWrite, AzaleaWriteVar, BufReadError};
use crate::read::ReadPacketError;
pub const PROTOCOL_VERSION: i32 = 773;
-pub const VERSION_NAME: &str = "1.21.9";
+pub const VERSION_NAME: &str = "1.21.10";
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {