aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-08-18 08:27:00 +0600
committermat <git@matdoes.dev>2025-08-18 08:27:00 +0600
commit89564da6b1ed2b424a4649d230a694b425e015cb (patch)
tree506e70486842dae3f40799e8794cfdb5e8288284
parent9c6e40051dadeaa67df0acabee003e4a0286f5f1 (diff)
downloadazalea-drasl-89564da6b1ed2b424a4649d230a694b425e015cb.tar.xz
fix DataComponentPatch::get
-rw-r--r--azalea-client/src/entity_query.rs10
-rw-r--r--azalea-inventory/src/slot.rs15
-rw-r--r--azalea/examples/testbot/commands/debug.rs9
3 files changed, 29 insertions, 5 deletions
diff --git a/azalea-client/src/entity_query.rs b/azalea-client/src/entity_query.rs
index 84fcf9e7..55b86d6c 100644
--- a/azalea-client/src/entity_query.rs
+++ b/azalea-client/src/entity_query.rs
@@ -84,7 +84,6 @@ impl Client {
/// efficient to use [`Self::any_entity_by`] instead. You can also use
/// [`Self::nearest_entities_by`] to get all nearby entities.
///
- /// # Example
/// ```
/// use azalea_entity::{LocalEntity, Position, metadata::Player};
/// use bevy_ecs::query::{With, Without};
@@ -112,6 +111,15 @@ impl Client {
/// all entities in our instance that match the predicate.
///
/// The first entity is the nearest one.
+ ///
+ /// ```
+ /// # use azalea_entity::{LocalEntity, Position, metadata::Player};
+ /// # use bevy_ecs::query::{With, Without};
+ /// # fn example(mut bot: azalea_client::Client, sender_name: String) {
+ /// let nearby_players =
+ /// bot.nearest_entities_by::<(With<Player>, Without<LocalEntity>), ()>(|_: &()| true);
+ /// # }
+ /// ```
pub fn nearest_entities_by<F: QueryFilter, Q: QueryData>(
&self,
predicate: impl EntityPredicate<Q, F>,
diff --git a/azalea-inventory/src/slot.rs b/azalea-inventory/src/slot.rs
index 444e0b2b..e9da4856 100644
--- a/azalea-inventory/src/slot.rs
+++ b/azalea-inventory/src/slot.rs
@@ -298,7 +298,7 @@ impl DataComponentPatch {
/// # }
/// ```
pub fn get<T: components::DataComponentTrait>(&self) -> Option<&T> {
- let component = self.components.get(&T::KIND)?;
+ let component = self.get_kind(T::KIND)?;
let component_any = component as &dyn Any;
component_any.downcast_ref::<T>()
}
@@ -487,3 +487,16 @@ impl Serialize for DataComponentPatch {
s.end()
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use crate::components::MapId;
+
+ #[test]
+ fn test_get_component() {
+ let item = ItemStack::from(Item::Map).with_component(MapId { id: 1 });
+ let map_id = item.get_component::<MapId>().unwrap();
+ assert_eq!(map_id.id, 1);
+ }
+}
diff --git a/azalea/examples/testbot/commands/debug.rs b/azalea/examples/testbot/commands/debug.rs
index b3a8b419..8d24794d 100644
--- a/azalea/examples/testbot/commands/debug.rs
+++ b/azalea/examples/testbot/commands/debug.rs
@@ -14,10 +14,13 @@ use azalea::{
world::MinecraftEntityId,
};
use azalea_core::hit_result::HitResult;
-use azalea_entity::EntityKindComponent;
-use azalea_inventory::components::MaxStackSize;
+use azalea_entity::{
+ EntityKindComponent,
+ metadata::{ItemFrame, ItemFrameItem},
+};
+use azalea_inventory::components::{MapId, MaxStackSize};
use azalea_world::InstanceContainer;
-use bevy_ecs::event::Events;
+use bevy_ecs::{event::Events, query::With};
use parking_lot::Mutex;
use super::{CommandSource, Ctx};