From 7b3e2e4bf793466a351510c7fbbd08234e93bb0e Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:16:29 -0500 Subject: 1.20.2 (#99) * add configuration state * start updating to 23w31a * implement a bit more of 23w31a * chunk batching * start adding configuration state * ioasfhjgsd * almost works * configuration state mostly implemented * handle other packets in configuration state and fix keepalive * cleanup, fix warnings * 23w32a * fix some doctests * 23w33a * 23w35a * 1.20.2-pre2 * fix system conflicts * 1.20.2-pre4 * make tests compile * tests pass * 1.20.2-rc2 * 1.20.2 * Revert "1.20.2" This reverts commit dd152fd265332ead333c919e585ded6d609d7468. * didn't mean to commit that code --------- Co-authored-by: mat --- azalea-entity/src/lib.rs | 2 + azalea-entity/src/metadata.rs | 187 ++++++++++++++++----------- azalea-entity/src/plugin/relative_updates.rs | 2 +- 3 files changed, 116 insertions(+), 75 deletions(-) (limited to 'azalea-entity/src') diff --git a/azalea-entity/src/lib.rs b/azalea-entity/src/lib.rs index c2553102..dbec425b 100644 --- a/azalea-entity/src/lib.rs +++ b/azalea-entity/src/lib.rs @@ -353,6 +353,8 @@ pub struct PlayerBundle { /// A marker component that signifies that this entity is "local" and shouldn't /// be updated by other clients. +/// +/// If this is for a client then all of our clients will have this. #[derive(Component)] pub struct LocalEntity; diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs index 2f6a4870..8f63951f 100644 --- a/azalea-entity/src/metadata.rs +++ b/azalea-entity/src/metadata.rs @@ -761,9 +761,11 @@ impl Default for BlazeMetadataBundle { } #[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayInterpolationStartDeltaTicks(pub i32); +pub struct BlockDisplayTransformationInterpolationStartDeltaTicks(pub i32); #[derive(Component, Deref, DerefMut, Clone)] -pub struct BlockDisplayInterpolationDuration(pub i32); +pub struct BlockDisplayTransformationInterpolationDuration(pub i32); +#[derive(Component, Deref, DerefMut, Clone)] +pub struct BlockDisplayPosRotInterpolationDuration(pub i32); #[derive(Component, Deref, DerefMut, Clone)] pub struct BlockDisplayTranslation(pub Vec3); #[derive(Component, Deref, DerefMut, Clone)] @@ -800,50 +802,55 @@ impl BlockDisplay { match d.index { 0..=7 => AbstractEntity::apply_metadata(entity, d)?, 8 => { - entity.insert(BlockDisplayInterpolationStartDeltaTicks( + entity.insert(BlockDisplayTransformationInterpolationStartDeltaTicks( d.value.into_int()?, )); } 9 => { - entity.insert(BlockDisplayInterpolationDuration(d.value.into_int()?)); + entity.insert(BlockDisplayTransformationInterpolationDuration( + d.value.into_int()?, + )); } 10 => { - entity.insert(BlockDisplayTranslation(d.value.into_vector3()?)); + entity.insert(BlockDisplayPosRotInterpolationDuration(d.value.into_int()?)); } 11 => { - entity.insert(BlockDisplayScale(d.value.into_vector3()?)); + entity.insert(BlockDisplayTranslation(d.value.into_vector3()?)); } 12 => { - entity.insert(BlockDisplayLeftRotation(d.value.into_quaternion()?)); + entity.insert(BlockDisplayScale(d.value.into_vector3()?)); } 13 => { - entity.insert(BlockDisplayRightRotation(d.value.into_quaternion()?)); + entity.insert(BlockDisplayLeftRotation(d.value.into_quaternion()?)); } 14 => { - entity.insert(BlockDisplayBillboardRenderConstraints(d.value.into_byte()?)); + entity.insert(BlockDisplayRightRotation(d.value.into_quaternion()?)); } 15 => { - entity.insert(BlockDisplayBrightnessOverride(d.value.into_int()?)); + entity.insert(BlockDisplayBillboardRenderConstraints(d.value.into_byte()?)); } 16 => { - entity.insert(BlockDisplayViewRange(d.value.into_float()?)); + entity.insert(BlockDisplayBrightnessOverride(d.value.into_int()?)); } 17 => { - entity.insert(BlockDisplayShadowRadius(d.value.into_float()?)); + entity.insert(BlockDisplayViewRange(d.value.into_float()?)); } 18 => { - entity.insert(BlockDisplayShadowStrength(d.value.into_float()?)); + entity.insert(BlockDisplayShadowRadius(d.value.into_float()?)); } 19 => { - entity.insert(BlockDisplayWidth(d.value.into_float()?)); + entity.insert(BlockDisplayShadowStrength(d.value.into_float()?)); } 20 => { - entity.insert(BlockDisplayHeight(d.value.into_float()?)); + entity.insert(BlockDisplayWidth(d.value.into_float()?)); } 21 => { - entity.insert(BlockDisplayGlowColorOverride(d.value.into_int()?)); + entity.insert(BlockDisplayHeight(d.value.into_float()?)); } 22 => { + entity.insert(BlockDisplayGlowColorOverride(d.value.into_int()?)); + } + 23 => { entity.insert(BlockState(d.value.into_block_state()?)); } _ => {} @@ -856,8 +863,11 @@ impl BlockDisplay { pub struct BlockDisplayMetadataBundle { _marker: BlockDisplay, parent: AbstractEntityMetadataBundle, - block_display_interpolation_start_delta_ticks: BlockDisplayInterpolationStartDeltaTicks, - block_display_interpolation_duration: BlockDisplayInterpolationDuration, + block_display_transformation_interpolation_start_delta_ticks: + BlockDisplayTransformationInterpolationStartDeltaTicks, + block_display_transformation_interpolation_duration: + BlockDisplayTransformationInterpolationDuration, + block_display_pos_rot_interpolation_duration: BlockDisplayPosRotInterpolationDuration, block_display_translation: BlockDisplayTranslation, block_display_scale: BlockDisplayScale, block_display_left_rotation: BlockDisplayLeftRotation, @@ -893,10 +903,13 @@ impl Default for BlockDisplayMetadataBundle { pose: Pose::default(), ticks_frozen: TicksFrozen(0), }, - block_display_interpolation_start_delta_ticks: BlockDisplayInterpolationStartDeltaTicks( + block_display_transformation_interpolation_start_delta_ticks: + BlockDisplayTransformationInterpolationStartDeltaTicks(0), + block_display_transformation_interpolation_duration: + BlockDisplayTransformationInterpolationDuration(0), + block_display_pos_rot_interpolation_duration: BlockDisplayPosRotInterpolationDuration( 0, ), - block_display_interpolation_duration: BlockDisplayInterpolationDuration(0), block_display_translation: BlockDisplayTranslation(Vec3 { x: 0.0, y: 0.0, @@ -1901,7 +1914,7 @@ impl Default for DolphinMetadataBundle { aggressive: Aggressive(false), }, }, - treasure_pos: TreasurePos(BlockPos::new(0, 0, 0)), + treasure_pos: TreasurePos(Default::default()), got_fish: GotFish(false), moistness_level: MoistnessLevel(2400), } @@ -2929,7 +2942,7 @@ impl Default for FallingBlockMetadataBundle { pose: Pose::default(), ticks_frozen: TicksFrozen(0), }, - start_pos: StartPos(BlockPos::new(0, 0, 0)), + start_pos: StartPos(Default::default()), } } } @@ -4409,9 +4422,11 @@ impl Default for ItemMetadataBundle { } #[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayInterpolationStartDeltaTicks(pub i32); +pub struct ItemDisplayTransformationInterpolationStartDeltaTicks(pub i32); +#[derive(Component, Deref, DerefMut, Clone)] +pub struct ItemDisplayTransformationInterpolationDuration(pub i32); #[derive(Component, Deref, DerefMut, Clone)] -pub struct ItemDisplayInterpolationDuration(pub i32); +pub struct ItemDisplayPosRotInterpolationDuration(pub i32); #[derive(Component, Deref, DerefMut, Clone)] pub struct ItemDisplayTranslation(pub Vec3); #[derive(Component, Deref, DerefMut, Clone)] @@ -4450,51 +4465,58 @@ impl ItemDisplay { match d.index { 0..=7 => AbstractEntity::apply_metadata(entity, d)?, 8 => { - entity.insert(ItemDisplayInterpolationStartDeltaTicks(d.value.into_int()?)); + entity.insert(ItemDisplayTransformationInterpolationStartDeltaTicks( + d.value.into_int()?, + )); } 9 => { - entity.insert(ItemDisplayInterpolationDuration(d.value.into_int()?)); + entity.insert(ItemDisplayTransformationInterpolationDuration( + d.value.into_int()?, + )); } 10 => { - entity.insert(ItemDisplayTranslation(d.value.into_vector3()?)); + entity.insert(ItemDisplayPosRotInterpolationDuration(d.value.into_int()?)); } 11 => { - entity.insert(ItemDisplayScale(d.value.into_vector3()?)); + entity.insert(ItemDisplayTranslation(d.value.into_vector3()?)); } 12 => { - entity.insert(ItemDisplayLeftRotation(d.value.into_quaternion()?)); + entity.insert(ItemDisplayScale(d.value.into_vector3()?)); } 13 => { - entity.insert(ItemDisplayRightRotation(d.value.into_quaternion()?)); + entity.insert(ItemDisplayLeftRotation(d.value.into_quaternion()?)); } 14 => { - entity.insert(ItemDisplayBillboardRenderConstraints(d.value.into_byte()?)); + entity.insert(ItemDisplayRightRotation(d.value.into_quaternion()?)); } 15 => { - entity.insert(ItemDisplayBrightnessOverride(d.value.into_int()?)); + entity.insert(ItemDisplayBillboardRenderConstraints(d.value.into_byte()?)); } 16 => { - entity.insert(ItemDisplayViewRange(d.value.into_float()?)); + entity.insert(ItemDisplayBrightnessOverride(d.value.into_int()?)); } 17 => { - entity.insert(ItemDisplayShadowRadius(d.value.into_float()?)); + entity.insert(ItemDisplayViewRange(d.value.into_float()?)); } 18 => { - entity.insert(ItemDisplayShadowStrength(d.value.into_float()?)); + entity.insert(ItemDisplayShadowRadius(d.value.into_float()?)); } 19 => { - entity.insert(ItemDisplayWidth(d.value.into_float()?)); + entity.insert(ItemDisplayShadowStrength(d.value.into_float()?)); } 20 => { - entity.insert(ItemDisplayHeight(d.value.into_float()?)); + entity.insert(ItemDisplayWidth(d.value.into_float()?)); } 21 => { - entity.insert(ItemDisplayGlowColorOverride(d.value.into_int()?)); + entity.insert(ItemDisplayHeight(d.value.into_float()?)); } 22 => { - entity.insert(ItemDisplayItemStack(d.value.into_item_stack()?)); + entity.insert(ItemDisplayGlowColorOverride(d.value.into_int()?)); } 23 => { + entity.insert(ItemDisplayItemStack(d.value.into_item_stack()?)); + } + 24 => { entity.insert(ItemDisplayItemDisplay(d.value.into_byte()?)); } _ => {} @@ -4507,8 +4529,11 @@ impl ItemDisplay { pub struct ItemDisplayMetadataBundle { _marker: ItemDisplay, parent: AbstractEntityMetadataBundle, - item_display_interpolation_start_delta_ticks: ItemDisplayInterpolationStartDeltaTicks, - item_display_interpolation_duration: ItemDisplayInterpolationDuration, + item_display_transformation_interpolation_start_delta_ticks: + ItemDisplayTransformationInterpolationStartDeltaTicks, + item_display_transformation_interpolation_duration: + ItemDisplayTransformationInterpolationDuration, + item_display_pos_rot_interpolation_duration: ItemDisplayPosRotInterpolationDuration, item_display_translation: ItemDisplayTranslation, item_display_scale: ItemDisplayScale, item_display_left_rotation: ItemDisplayLeftRotation, @@ -4545,10 +4570,11 @@ impl Default for ItemDisplayMetadataBundle { pose: Pose::default(), ticks_frozen: TicksFrozen(0), }, - item_display_interpolation_start_delta_ticks: ItemDisplayInterpolationStartDeltaTicks( - 0, - ), - item_display_interpolation_duration: ItemDisplayInterpolationDuration(0), + item_display_transformation_interpolation_start_delta_ticks: + ItemDisplayTransformationInterpolationStartDeltaTicks(0), + item_display_transformation_interpolation_duration: + ItemDisplayTransformationInterpolationDuration(0), + item_display_pos_rot_interpolation_duration: ItemDisplayPosRotInterpolationDuration(0), item_display_translation: ItemDisplayTranslation(Vec3 { x: 0.0, y: 0.0, @@ -6106,7 +6132,7 @@ impl Default for PlayerMetadataBundle { player_absorption: PlayerAbsorption(0.0), score: Score(0), player_mode_customisation: PlayerModeCustomisation(0), - player_main_hand: PlayerMainHand(1), + player_main_hand: PlayerMainHand(Default::default()), shoulder_left: ShoulderLeft(azalea_nbt::Nbt::Compound(Default::default())), shoulder_right: ShoulderRight(azalea_nbt::Nbt::Compound(Default::default())), } @@ -7830,9 +7856,11 @@ impl Default for TadpoleMetadataBundle { } #[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayInterpolationStartDeltaTicks(pub i32); +pub struct TextDisplayTransformationInterpolationStartDeltaTicks(pub i32); +#[derive(Component, Deref, DerefMut, Clone)] +pub struct TextDisplayTransformationInterpolationDuration(pub i32); #[derive(Component, Deref, DerefMut, Clone)] -pub struct TextDisplayInterpolationDuration(pub i32); +pub struct TextDisplayPosRotInterpolationDuration(pub i32); #[derive(Component, Deref, DerefMut, Clone)] pub struct TextDisplayTranslation(pub Vec3); #[derive(Component, Deref, DerefMut, Clone)] @@ -7877,60 +7905,67 @@ impl TextDisplay { match d.index { 0..=7 => AbstractEntity::apply_metadata(entity, d)?, 8 => { - entity.insert(TextDisplayInterpolationStartDeltaTicks(d.value.into_int()?)); + entity.insert(TextDisplayTransformationInterpolationStartDeltaTicks( + d.value.into_int()?, + )); } 9 => { - entity.insert(TextDisplayInterpolationDuration(d.value.into_int()?)); + entity.insert(TextDisplayTransformationInterpolationDuration( + d.value.into_int()?, + )); } 10 => { - entity.insert(TextDisplayTranslation(d.value.into_vector3()?)); + entity.insert(TextDisplayPosRotInterpolationDuration(d.value.into_int()?)); } 11 => { - entity.insert(TextDisplayScale(d.value.into_vector3()?)); + entity.insert(TextDisplayTranslation(d.value.into_vector3()?)); } 12 => { - entity.insert(TextDisplayLeftRotation(d.value.into_quaternion()?)); + entity.insert(TextDisplayScale(d.value.into_vector3()?)); } 13 => { - entity.insert(TextDisplayRightRotation(d.value.into_quaternion()?)); + entity.insert(TextDisplayLeftRotation(d.value.into_quaternion()?)); } 14 => { - entity.insert(TextDisplayBillboardRenderConstraints(d.value.into_byte()?)); + entity.insert(TextDisplayRightRotation(d.value.into_quaternion()?)); } 15 => { - entity.insert(TextDisplayBrightnessOverride(d.value.into_int()?)); + entity.insert(TextDisplayBillboardRenderConstraints(d.value.into_byte()?)); } 16 => { - entity.insert(TextDisplayViewRange(d.value.into_float()?)); + entity.insert(TextDisplayBrightnessOverride(d.value.into_int()?)); } 17 => { - entity.insert(TextDisplayShadowRadius(d.value.into_float()?)); + entity.insert(TextDisplayViewRange(d.value.into_float()?)); } 18 => { - entity.insert(TextDisplayShadowStrength(d.value.into_float()?)); + entity.insert(TextDisplayShadowRadius(d.value.into_float()?)); } 19 => { - entity.insert(TextDisplayWidth(d.value.into_float()?)); + entity.insert(TextDisplayShadowStrength(d.value.into_float()?)); } 20 => { - entity.insert(TextDisplayHeight(d.value.into_float()?)); + entity.insert(TextDisplayWidth(d.value.into_float()?)); } 21 => { - entity.insert(TextDisplayGlowColorOverride(d.value.into_int()?)); + entity.insert(TextDisplayHeight(d.value.into_float()?)); } 22 => { - entity.insert(Text(d.value.into_formatted_text()?)); + entity.insert(TextDisplayGlowColorOverride(d.value.into_int()?)); } 23 => { - entity.insert(LineWidth(d.value.into_int()?)); + entity.insert(Text(d.value.into_formatted_text()?)); } 24 => { - entity.insert(BackgroundColor(d.value.into_int()?)); + entity.insert(LineWidth(d.value.into_int()?)); } 25 => { - entity.insert(TextOpacity(d.value.into_byte()?)); + entity.insert(BackgroundColor(d.value.into_int()?)); } 26 => { + entity.insert(TextOpacity(d.value.into_byte()?)); + } + 27 => { entity.insert(StyleFlags(d.value.into_byte()?)); } _ => {} @@ -7943,8 +7978,11 @@ impl TextDisplay { pub struct TextDisplayMetadataBundle { _marker: TextDisplay, parent: AbstractEntityMetadataBundle, - text_display_interpolation_start_delta_ticks: TextDisplayInterpolationStartDeltaTicks, - text_display_interpolation_duration: TextDisplayInterpolationDuration, + text_display_transformation_interpolation_start_delta_ticks: + TextDisplayTransformationInterpolationStartDeltaTicks, + text_display_transformation_interpolation_duration: + TextDisplayTransformationInterpolationDuration, + text_display_pos_rot_interpolation_duration: TextDisplayPosRotInterpolationDuration, text_display_translation: TextDisplayTranslation, text_display_scale: TextDisplayScale, text_display_left_rotation: TextDisplayLeftRotation, @@ -7984,10 +8022,11 @@ impl Default for TextDisplayMetadataBundle { pose: Pose::default(), ticks_frozen: TicksFrozen(0), }, - text_display_interpolation_start_delta_ticks: TextDisplayInterpolationStartDeltaTicks( - 0, - ), - text_display_interpolation_duration: TextDisplayInterpolationDuration(0), + text_display_transformation_interpolation_start_delta_ticks: + TextDisplayTransformationInterpolationStartDeltaTicks(0), + text_display_transformation_interpolation_duration: + TextDisplayTransformationInterpolationDuration(0), + text_display_pos_rot_interpolation_duration: TextDisplayPosRotInterpolationDuration(0), text_display_translation: TextDisplayTranslation(Vec3 { x: 0.0, y: 0.0, @@ -8486,10 +8525,10 @@ impl Default for TurtleMetadataBundle { abstract_ageable_baby: AbstractAgeableBaby(false), }, }, - home_pos: HomePos(BlockPos::new(0, 0, 0)), + home_pos: HomePos(Default::default()), has_egg: HasEgg(false), laying_egg: LayingEgg(false), - travel_pos: TravelPos(BlockPos::new(0, 0, 0)), + travel_pos: TravelPos(Default::default()), going_home: GoingHome(false), travelling: Travelling(false), } diff --git a/azalea-entity/src/plugin/relative_updates.rs b/azalea-entity/src/plugin/relative_updates.rs index 45b85203..4f7e478a 100644 --- a/azalea-entity/src/plugin/relative_updates.rs +++ b/azalea-entity/src/plugin/relative_updates.rs @@ -51,7 +51,7 @@ pub struct RelativeEntityUpdate { /// 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 +/// If an entity is local (i.e. it's a client/LocalEntity), this component /// should NOT be present in the entity. #[derive(Component, Debug, Deref, DerefMut)] pub struct UpdatesReceived(u32); -- cgit v1.2.3