aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-09-21 09:16:10 -1030
committermat <git@matdoes.dev>2025-09-21 11:46:13 -0800
commitaefa908e32032616cb356e7f4165cbb8922edbcf (patch)
tree2c15096917c009b9fd823e7d57894382904f7951
parentf049eee0496083fe6347e2f4a4f7b8e4512883ee (diff)
downloadazalea-drasl-aefa908e32032616cb356e7f4165cbb8922edbcf.tar.xz
fix pickable entity query
-rw-r--r--azalea-client/src/plugins/interact/pick.rs44
-rw-r--r--azalea-client/src/plugins/mining.rs3
-rw-r--r--azalea-entity/src/lib.rs2
-rw-r--r--azalea-entity/src/metadata.rs484
-rw-r--r--codegen/lib/code/entity.py6
5 files changed, 281 insertions, 258 deletions
diff --git a/azalea-client/src/plugins/interact/pick.rs b/azalea-client/src/plugins/interact/pick.rs
index c32ac5c7..85e20376 100644
--- a/azalea-client/src/plugins/interact/pick.rs
+++ b/azalea-client/src/plugins/interact/pick.rs
@@ -7,7 +7,10 @@ use azalea_core::{
use azalea_entity::{
Attributes, Dead, LocalEntity, LookDirection, Physics, Position,
dimensions::EntityDimensions,
- metadata::{ArmorStandMarker, Marker},
+ metadata::{
+ AbstractArrow, AbstractBoat, AbstractLiving, AbstractMinecart, ArmorStand,
+ ArmorStandMarker, EndCrystal, FallingBlock, InGround, Interaction, ShulkerBullet, Tnt,
+ },
view_vector,
};
use azalea_physics::{
@@ -42,7 +45,7 @@ pub fn update_hit_result_component(
>,
instance_container: Res<InstanceContainer>,
physics_query: PhysicsQuery,
- pickable_query: PickableEntityQuery,
+ pickable_query: MaybePickableEntityQuery,
) {
for (
entity,
@@ -86,11 +89,28 @@ pub fn update_hit_result_component(
}
}
-pub type PickableEntityQuery<'world, 'state, 'a> = Query<
+pub type MaybePickableEntityQuery<'world, 'state, 'a> = Query<
'world,
'state,
- Option<&'a ArmorStandMarker>,
- (Without<Dead>, Without<Marker>, Without<LocalEntity>),
+ (Option<&'a ArmorStandMarker>, Option<&'a InGround>),
+ // search "isPickable" in the decompiled minecraft code
+ (
+ Or<(
+ // TODO: ender dragon parts are pickable but the ender dragon itself isn't. this needs
+ // more investigation.
+ (With<Tnt>, Without<Dead>),
+ (With<FallingBlock>, Without<Dead>),
+ (With<AbstractMinecart>, Without<Dead>),
+ (With<AbstractBoat>, Without<Dead>),
+ With<ArmorStand>,
+ With<EndCrystal>,
+ With<Interaction>,
+ With<ShulkerBullet>,
+ (With<AbstractLiving>, Without<Dead>),
+ With<AbstractArrow>,
+ )>,
+ Without<LocalEntity>,
+ ),
>;
pub struct PickOpts<'world, 'state, 'a, 'b, 'c> {
@@ -102,7 +122,7 @@ pub struct PickOpts<'world, 'state, 'a, 'b, 'c> {
entity_pick_range: f64,
block_pick_range: f64,
physics_query: &'a PhysicsQuery<'world, 'state, 'b>,
- pickable_query: &'a PickableEntityQuery<'world, 'state, 'c>,
+ pickable_query: &'a MaybePickableEntityQuery<'world, 'state, 'c>,
}
/// Get the block or entity that a player would be looking at if their eyes were
@@ -143,18 +163,18 @@ pub fn pick(opts: PickOpts<'_, '_, '_, '_, '_>) -> HitResult {
.inflate_all(inflate_by);
let is_pickable = |entity: Entity| {
- // TODO: ender dragon and projectiles have extra logic here. also, we shouldn't
- // be able to pick spectators.
- if let Ok(armor_stand_marker) = opts.pickable_query.get(entity) {
- if let Some(armor_stand_marker) = armor_stand_marker
- && armor_stand_marker.0
+ // TODO: ender dragon has extra logic here. also, we shouldn't be able to pick
+ // spectators.
+ if let Ok((armor_stand_marker, arrow_in_ground)) = opts.pickable_query.get(entity) {
+ if armor_stand_marker == Some(&ArmorStandMarker(true))
+ || arrow_in_ground == Some(&InGround(true))
{
false
} else {
true
}
} else {
- true
+ false
}
};
let entity_hit_result = pick_entity(PickEntityOpts {
diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs
index f9bd50f6..e42ea866 100644
--- a/azalea-client/src/plugins/mining.rs
+++ b/azalea-client/src/plugins/mining.rs
@@ -182,7 +182,8 @@ fn handle_start_mining_block_event(
(block_hit_result.direction, false)
} else {
debug!(
- "Got StartMiningBlockEvent but we're not looking at the block. Picking an arbitrary direction instead."
+ "Got StartMiningBlockEvent but we're not looking at the block ({:?}.block_pos != {:?}). Picking an arbitrary direction instead.",
+ hit_result, event.position
);
// we're not looking at the block, arbitrary direction
(Direction::Down, true)
diff --git a/azalea-entity/src/lib.rs b/azalea-entity/src/lib.rs
index 30e00ccb..6c3603e6 100644
--- a/azalea-entity/src/lib.rs
+++ b/azalea-entity/src/lib.rs
@@ -127,7 +127,7 @@ pub fn on_pos(offset: f32, chunk_storage: &ChunkStorage, pos: Position) -> Block
/// 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, Default)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, Default, PartialEq)]
pub struct EntityUuid(Uuid);
impl EntityUuid {
pub fn new(uuid: Uuid) -> Self {
diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs
index 6ccbad1a..f7d979ec 100644
--- a/azalea-entity/src/metadata.rs
+++ b/azalea-entity/src/metadata.rs
@@ -32,43 +32,43 @@ impl From<EntityDataValue> for UpdateMetadataError {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct OnFire(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct AbstractEntityShiftKeyDown(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Sprinting(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Swimming(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct CurrentlyGlowing(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Invisible(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct FallFlying(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AirSupply(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CustomName(pub Option<FormattedText>);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CustomNameVisible(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Silent(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct NoGravity(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TicksFrozen(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Hurt(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Hurtdir(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Damage(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PaddleLeft(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PaddleRight(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BubbleTime(pub i32);
#[derive(Component)]
pub struct AcaciaBoat;
@@ -184,31 +184,31 @@ impl Default for AcaciaChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct AutoSpinAttack(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct AbstractLivingUsingItem(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Health(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct EffectParticles(pub Vec<Particle>);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct EffectAmbience(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ArrowCount(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StingerCount(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SleepingPos(pub Option<BlockPos>);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct NoAi(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct LeftHanded(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Aggressive(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Dancing(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CanDuplicate(pub bool);
#[derive(Component)]
pub struct Allay;
@@ -285,9 +285,9 @@ impl Default for AllayMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Radius(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Waiting(pub bool);
#[derive(Component)]
pub struct AreaEffectCloud;
@@ -349,9 +349,9 @@ impl Default for AreaEffectCloudMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractAgeableBaby(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ArmadilloState(pub ArmadilloStateKind);
#[derive(Component)]
pub struct Armadillo;
@@ -432,25 +432,25 @@ impl Default for ArmadilloMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Small(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct ShowArms(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct ShowBasePlate(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct ArmorStandMarker(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HeadPose(pub Rotations);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BodyPose(pub Rotations);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LeftArmPose(pub Rotations);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct RightArmPose(pub Rotations);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LeftLegPose(pub Rotations);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct RightLegPose(pub Rotations);
#[derive(Component)]
pub struct ArmorStand;
@@ -553,15 +553,15 @@ impl Default for ArmorStandMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct CritArrow(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct NoPhysics(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PierceLevel(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct InGround(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct EffectColor(pub i32);
#[derive(Component)]
pub struct Arrow;
@@ -620,11 +620,11 @@ impl Default for ArrowMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AxolotlVariant(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PlayingDead(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AxolotlFromBucket(pub bool);
#[derive(Component)]
pub struct Axolotl;
@@ -829,7 +829,7 @@ impl Default for BambooRaftMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Resting(pub bool);
#[derive(Component)]
pub struct Bat;
@@ -899,13 +899,13 @@ impl Default for BatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct HasNectar(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct HasStung(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct BeeRolling(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BeeRemainingAngerTime(pub i32);
#[derive(Component)]
pub struct Bee;
@@ -1112,7 +1112,7 @@ impl Default for BirchChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Charged(pub bool);
#[derive(Component)]
pub struct Blaze;
@@ -1188,37 +1188,37 @@ impl Default for BlazeMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TransformationInterpolationStartDeltaTicks(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TransformationInterpolationDuration(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PosRotInterpolationDuration(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Translation(pub Vec3f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Scale(pub Vec3f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LeftRotation(pub Quaternion);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct RightRotation(pub Quaternion);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BillboardRenderConstraints(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BrightnessOverride(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ViewRange(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShadowRadius(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShadowStrength(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractDisplayWidth(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractDisplayHeight(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct GlowColorOverride(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BlockDisplayBlockState(pub azalea_block::BlockState);
#[derive(Component)]
pub struct BlockDisplay;
@@ -1307,7 +1307,7 @@ impl Default for BlockDisplayMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BoggedSheared(pub bool);
#[derive(Component)]
pub struct Bogged;
@@ -1495,17 +1495,17 @@ impl Default for BreezeWindChargeMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Tamed(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Eating(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct AbstractHorseStanding(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Bred(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Dash(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LastPoseChangeTick(pub i64);
#[derive(Component)]
pub struct Camel;
@@ -1598,19 +1598,19 @@ impl Default for CamelMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Tame(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct InSittingPose(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Owneruuid(pub Option<Uuid>);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CatVariant(pub azalea_registry::CatVariant);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsLying(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct RelaxStateOne(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CatCollarColor(pub i32);
#[derive(Component)]
pub struct Cat;
@@ -1712,7 +1712,7 @@ impl Default for CatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Climbing(pub bool);
#[derive(Component)]
pub struct CaveSpider;
@@ -1902,9 +1902,9 @@ impl Default for CherryChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CustomDisplayBlock(pub azalea_block::BlockState);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct DisplayOffset(pub i32);
#[derive(Component)]
pub struct ChestMinecart;
@@ -1962,7 +1962,7 @@ impl Default for ChestMinecartMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ChickenVariant(pub azalea_registry::PigVariant);
#[derive(Component)]
pub struct Chicken;
@@ -2043,7 +2043,7 @@ impl Default for ChickenMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractFishFromBucket(pub bool);
#[derive(Component)]
pub struct Cod;
@@ -2114,9 +2114,9 @@ impl Default for CodMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CommandName(pub String);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LastOutput(pub FormattedText);
#[derive(Component)]
pub struct CommandBlockMinecart;
@@ -2184,7 +2184,7 @@ impl Default for CommandBlockMinecartMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CowVariant(pub azalea_registry::ChickenVariant);
#[derive(Component)]
pub struct Cow;
@@ -2265,13 +2265,13 @@ impl Default for CowMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CanMove(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsActive(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsTearingDown(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HomePos(pub Option<BlockPos>);
#[derive(Component)]
pub struct Creaking;
@@ -2361,11 +2361,11 @@ impl Default for CreakingMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SwellDir(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsPowered(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsIgnited(pub bool);
#[derive(Component)]
pub struct Creeper;
@@ -2564,9 +2564,9 @@ impl Default for DarkOakChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct GotFish(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct MoistnessLevel(pub i32);
#[derive(Component)]
pub struct Dolphin;
@@ -2647,7 +2647,7 @@ impl Default for DolphinMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Chest(pub bool);
#[derive(Component)]
pub struct Donkey;
@@ -2780,11 +2780,11 @@ impl Default for DragonFireballMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ZombieBaby(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SpecialType(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct DrownedConversion(pub bool);
#[derive(Component)]
pub struct Drowned;
@@ -2862,7 +2862,7 @@ impl Default for DrownedMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractThrownItemProjectileItemStack(pub ItemStack);
#[derive(Component)]
pub struct Egg;
@@ -2915,9 +2915,9 @@ impl Default for EggMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Moving(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AttackTarget(pub i32);
#[derive(Component)]
pub struct ElderGuardian;
@@ -2994,9 +2994,9 @@ impl Default for ElderGuardianMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BeamTarget(pub Option<BlockPos>);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShowBottom(pub bool);
#[derive(Component)]
pub struct EndCrystal;
@@ -3053,7 +3053,7 @@ impl Default for EndCrystalMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Phase(pub i32);
#[derive(Component)]
pub struct EnderDragon;
@@ -3173,11 +3173,11 @@ impl Default for EnderPearlMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CarryState(pub azalea_block::BlockState);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Creepy(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StaredAt(pub bool);
#[derive(Component)]
pub struct Enderman;
@@ -3330,9 +3330,9 @@ impl Default for EndermiteMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsCelebrating(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SpellCasting(pub u8);
#[derive(Component)]
pub struct Evoker;
@@ -3508,7 +3508,7 @@ impl Default for ExperienceBottleMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Value(pub i32);
#[derive(Component)]
pub struct ExperienceOrb;
@@ -3560,7 +3560,7 @@ impl Default for ExperienceOrbMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct EyeOfEnderItemStack(pub ItemStack);
#[derive(Component)]
pub struct EyeOfEnder;
@@ -3612,7 +3612,7 @@ impl Default for EyeOfEnderMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StartPos(pub BlockPos);
#[derive(Component)]
pub struct FallingBlock;
@@ -3664,7 +3664,7 @@ impl Default for FallingBlockMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct FireballItemStack(pub ItemStack);
#[derive(Component)]
pub struct Fireball;
@@ -3716,11 +3716,11 @@ impl Default for FireballMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct FireworksItem(pub ItemStack);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AttachedToTarget(pub OptionalUnsignedInt);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShotAtAngle(pub bool);
#[derive(Component)]
pub struct FireworkRocket;
@@ -3782,9 +3782,9 @@ impl Default for FireworkRocketMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HookedEntity(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Biting(pub bool);
#[derive(Component)]
pub struct FishingBobber;
@@ -3841,25 +3841,25 @@ impl Default for FishingBobberMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct FoxKind(pub i32);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct FoxSitting(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Faceplanted(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Defending(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Sleeping(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Pouncing(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct FoxCrouching(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct FoxInterested(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TrustedId0(pub Option<Uuid>);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TrustedId1(pub Option<Uuid>);
#[derive(Component)]
pub struct Fox;
@@ -3974,9 +3974,9 @@ impl Default for FoxMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct FrogVariant(pub azalea_registry::WolfSoundVariant);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TongueTarget(pub OptionalUnsignedInt);
#[derive(Component)]
pub struct Frog;
@@ -4062,7 +4062,7 @@ impl Default for FrogMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Fuel(pub bool);
#[derive(Component)]
pub struct FurnaceMinecart;
@@ -4125,7 +4125,7 @@ impl Default for FurnaceMinecartMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsCharging(pub bool);
#[derive(Component)]
pub struct Ghast;
@@ -4262,11 +4262,11 @@ impl Default for GiantMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ItemFrameDirection(pub Direction);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ItemFrameItem(pub ItemStack);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Rotation(pub i32);
#[derive(Component)]
pub struct GlowItemFrame;
@@ -4319,7 +4319,7 @@ impl Default for GlowItemFrameMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct DarkTicksRemaining(pub i32);
#[derive(Component)]
pub struct GlowSquid;
@@ -4400,11 +4400,11 @@ impl Default for GlowSquidMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsScreamingGoat(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HasLeftHorn(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HasRightHorn(pub bool);
#[derive(Component)]
pub struct Goat;
@@ -4573,9 +4573,9 @@ impl Default for GuardianMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsLeashHolder(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StaysStill(pub bool);
#[derive(Component)]
pub struct HappyGhast;
@@ -4661,7 +4661,7 @@ impl Default for HappyGhastMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HoglinImmuneToZombification(pub bool);
#[derive(Component)]
pub struct Hoglin;
@@ -4798,7 +4798,7 @@ impl Default for HopperMinecartMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HorseTypeVariant(pub i32);
#[derive(Component)]
pub struct Horse;
@@ -5040,11 +5040,11 @@ impl Default for IllusionerMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct InteractionWidth(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct InteractionHeight(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Response(pub bool);
#[derive(Component)]
pub struct Interaction;
@@ -5106,7 +5106,7 @@ impl Default for InteractionMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct PlayerCreated(pub bool);
#[derive(Component)]
pub struct IronGolem;
@@ -5179,7 +5179,7 @@ impl Default for IronGolemMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ItemItem(pub ItemStack);
#[derive(Component)]
pub struct Item;
@@ -5231,9 +5231,9 @@ impl Default for ItemMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ItemDisplayItemStack(pub ItemStack);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ItemDisplayItemDisplay(pub u8);
#[derive(Component)]
pub struct ItemDisplay;
@@ -5642,9 +5642,9 @@ impl Default for LingeringPotionMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Strength(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LlamaVariant(pub i32);
#[derive(Component)]
pub struct Llama;
@@ -5787,7 +5787,7 @@ impl Default for LlamaSpitMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SlimeSize(pub i32);
#[derive(Component)]
pub struct MagmaCube;
@@ -6070,7 +6070,7 @@ impl Default for MinecartMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct MooshroomKind(pub i32);
#[derive(Component)]
pub struct Mooshroom;
@@ -6351,7 +6351,7 @@ impl Default for OakChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Trusting(pub bool);
#[derive(Component)]
pub struct Ocelot;
@@ -6432,7 +6432,7 @@ impl Default for OcelotMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct OminousItemSpawnerItem(pub ItemStack);
#[derive(Component)]
pub struct OminousItemSpawner;
@@ -6484,9 +6484,9 @@ impl Default for OminousItemSpawnerMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PaintingDirection(pub Direction);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PaintingVariant(pub azalea_registry::PaintingVariant);
#[derive(Component)]
pub struct Painting;
@@ -6657,23 +6657,23 @@ impl Default for PaleOakChestBoatMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PandaUnhappyCounter(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SneezeCounter(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct EatCounter(pub i32);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct Sneezing(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct PandaSitting(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct OnBack(pub bool);
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct PandaRolling(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HiddenGene(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PandaFlags(pub u8);
#[derive(Component)]
pub struct Panda;
@@ -6789,7 +6789,7 @@ impl Default for PandaMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ParrotVariant(pub i32);
#[derive(Component)]
pub struct Parrot;
@@ -6876,7 +6876,7 @@ impl Default for ParrotMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PhantomSize(pub i32);
#[derive(Component)]
pub struct Phantom;
@@ -6945,9 +6945,9 @@ impl Default for PhantomMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PigBoostTime(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PigVariant(pub azalea_registry::FrogVariant);
#[derive(Component)]
pub struct Pig;
@@ -7033,13 +7033,13 @@ impl Default for PigMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractPiglinImmuneToZombification(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PiglinBaby(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PiglinIsChargingCrossbow(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct IsDancing(pub bool);
#[derive(Component)]
pub struct Piglin;
@@ -7204,7 +7204,7 @@ impl Default for PiglinBruteMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PillagerIsChargingCrossbow(pub bool);
#[derive(Component)]
pub struct Pillager;
@@ -7285,17 +7285,17 @@ impl Default for PillagerMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PlayerAbsorption(pub f32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Score(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PlayerModeCustomisation(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PlayerMainHand(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShoulderLeft(pub simdnbt::owned::NbtCompound);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ShoulderRight(pub simdnbt::owned::NbtCompound);
#[derive(Component)]
pub struct Player;
@@ -7383,7 +7383,7 @@ impl Default for PlayerMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PolarBearStanding(pub bool);
#[derive(Component)]
pub struct PolarBear;
@@ -7464,9 +7464,9 @@ impl Default for PolarBearMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PufferfishFromBucket(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PuffState(pub i32);
#[derive(Component)]
pub struct Pufferfish;
@@ -7543,7 +7543,7 @@ impl Default for PufferfishMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct RabbitKind(pub i32);
#[derive(Component)]
pub struct Rabbit;
@@ -7698,7 +7698,7 @@ impl Default for RavagerMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SalmonKind(pub i32);
#[derive(Component)]
pub struct Salmon;
@@ -7774,7 +7774,7 @@ impl Default for SalmonMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct SheepSheared(pub bool);
#[derive(Component)]
pub struct Sheep;
@@ -7856,11 +7856,11 @@ impl Default for SheepMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AttachFace(pub Direction);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Peek(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Color(pub u8);
#[derive(Component)]
pub struct Shulker;
@@ -8055,7 +8055,7 @@ impl Default for SilverfishMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StrayConversion(pub bool);
#[derive(Component)]
pub struct Skeleton;
@@ -8278,7 +8278,7 @@ impl Default for SlimeMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SmallFireballItemStack(pub ItemStack);
#[derive(Component)]
pub struct SmallFireball;
@@ -8330,9 +8330,9 @@ impl Default for SmallFireballMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SnifferState(pub SnifferStateKind);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct DropSeedAtTick(pub i32);
#[derive(Component)]
pub struct Sniffer;
@@ -8418,7 +8418,7 @@ impl Default for SnifferMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone, Copy)]
+#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]
pub struct HasPumpkin(pub bool);
#[derive(Component)]
pub struct SnowGolem;
@@ -9026,9 +9026,9 @@ impl Default for StrayMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StriderBoostTime(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Suffocating(pub bool);
#[derive(Component)]
pub struct Strider;
@@ -9114,7 +9114,7 @@ impl Default for StriderMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TadpoleFromBucket(pub bool);
#[derive(Component)]
pub struct Tadpole;
@@ -9186,15 +9186,15 @@ impl Default for TadpoleMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Text(pub FormattedText);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LineWidth(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct BackgroundColor(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TextOpacity(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct StyleFlags(pub u8);
#[derive(Component)]
pub struct TextDisplay;
@@ -9303,9 +9303,9 @@ impl Default for TextDisplayMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Fuse(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TntBlockState(pub azalea_block::BlockState);
#[derive(Component)]
pub struct Tnt;
@@ -9511,9 +9511,9 @@ impl Default for TraderLlamaMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Loyalty(pub u8);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Foil(pub bool);
#[derive(Component)]
pub struct Trident;
@@ -9577,7 +9577,7 @@ impl Default for TridentMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TropicalFishTypeVariant(pub i32);
#[derive(Component)]
pub struct TropicalFish;
@@ -9653,9 +9653,9 @@ impl Default for TropicalFishMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct HasEgg(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct LayingEgg(pub bool);
#[derive(Component)]
pub struct Turtle;
@@ -9741,7 +9741,7 @@ impl Default for TurtleMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct VexFlags(pub u8);
#[derive(Component)]
pub struct Vex;
@@ -9816,9 +9816,9 @@ impl Default for VexMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractVillagerUnhappyCounter(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct VillagerVillagerData(pub VillagerData);
#[derive(Component)]
pub struct Villager;
@@ -10053,7 +10053,7 @@ impl Default for WanderingTraderMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ClientAngerLevel(pub i32);
#[derive(Component)]
pub struct Warden;
@@ -10173,7 +10173,7 @@ impl Default for WindChargeMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct WitchUsingItem(pub bool);
#[derive(Component)]
pub struct Witch;
@@ -10254,13 +10254,13 @@ impl Default for WitchMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TargetA(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TargetB(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TargetC(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Inv(pub i32);
#[derive(Component)]
pub struct Wither;
@@ -10418,7 +10418,7 @@ impl Default for WitherSkeletonMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Dangerous(pub bool);
#[derive(Component)]
pub struct WitherSkull;
@@ -10470,15 +10470,15 @@ impl Default for WitherSkullMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct WolfInterested(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct WolfCollarColor(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct WolfRemainingAngerTime(pub i32);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct WolfVariant(pub azalea_registry::CowVariant);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct SoundVariant(pub azalea_registry::WolfVariant);
#[derive(Component)]
pub struct Wolf;
@@ -10585,7 +10585,7 @@ impl Default for WolfMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ZoglinBaby(pub bool);
#[derive(Component)]
pub struct Zoglin;
@@ -10824,9 +10824,9 @@ impl Default for ZombieHorseMetadataBundle {
}
}
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct Converting(pub bool);
-#[derive(Component, Deref, DerefMut, Clone)]
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ZombieVillagerVillagerData(pub VillagerData);
#[derive(Component)]
pub struct ZombieVillager;
diff --git a/codegen/lib/code/entity.py b/codegen/lib/code/entity.py
index 31cf71a8..eb2677ad 100644
--- a/codegen/lib/code/entity.py
+++ b/codegen/lib/code/entity.py
@@ -262,14 +262,16 @@ impl From<EntityDataValue> for UpdateMetadataError {
metadata_type_data = metadata_types[type_id]
rust_type = metadata_type_data["type"]
- code.append("#[derive(Component, Deref, DerefMut, Clone)]")
+ code.append("#[derive(Component, Deref, DerefMut, Clone, PartialEq)]")
code.append(f"pub struct {struct_name}(pub {rust_type});")
else:
# if it's a bitfield just make a struct for each bit
for mask, name in name_or_bitfield.items():
name = maybe_rename_field(name, index)
struct_name = upper_first_letter(to_camel_case(name))
- code.append("#[derive(Component, Deref, DerefMut, Clone, Copy)]")
+ code.append(
+ "#[derive(Component, Deref, DerefMut, Clone, Copy, PartialEq)]"
+ )
code.append(f"pub struct {struct_name}(pub bool);")
# add the entity struct and Bundle struct