aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--azalea-client/src/packet_handling.rs27
-rw-r--r--azalea/examples/nearest_entity.rs5
2 files changed, 28 insertions, 4 deletions
diff --git a/azalea-client/src/packet_handling.rs b/azalea-client/src/packet_handling.rs
index 1805002f..eebf48d9 100644
--- a/azalea-client/src/packet_handling.rs
+++ b/azalea-client/src/packet_handling.rs
@@ -830,6 +830,33 @@ pub fn process_packet_events(ecs: &mut World) {
}
ClientboundGamePacket::RemoveEntities(p) => {
debug!("Got remove entities packet {:?}", p);
+
+ let mut system_state: SystemState<(
+ Commands,
+ Query<&mut InstanceName>,
+ Res<InstanceContainer>,
+ )> = SystemState::new(ecs);
+
+ let (mut commands, mut query, instance_container) = system_state.get_mut(ecs);
+ let Ok(instance_name) = query.get_mut(player_entity) else {
+ println!("no instance name");
+ continue;
+ };
+
+ let Some(instance) = instance_container.get(&instance_name) else {
+ println!("no instance");
+ continue;
+ };
+ for &id in &p.entity_ids {
+ if let Some(entity) =
+ instance.write().entity_by_id.remove(&MinecraftEntityId(id))
+ {
+ println!("despawning entity");
+ commands.entity(entity).despawn();
+ }
+ }
+
+ system_state.apply(ecs);
}
ClientboundGamePacket::PlayerChat(p) => {
debug!("Got player chat packet {:?}", p);
diff --git a/azalea/examples/nearest_entity.rs b/azalea/examples/nearest_entity.rs
index 9ac6331b..22a8b863 100644
--- a/azalea/examples/nearest_entity.rs
+++ b/azalea/examples/nearest_entity.rs
@@ -64,10 +64,7 @@ fn log_nearby_item_drops(
let item_drop = item_drops.get(entity).unwrap();
let kind = item_drop.kind();
- println!(
- "Bot {:?} can see an {:?} {:.1} meters away.",
- bot_id, kind, distance
- );
+ println!("Bot {bot_id:?} can see an {kind:?} {distance:.1} meters away.");
}
}
}