aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2024-04-24 03:11:26 +0000
committermat <git@matdoes.dev>2024-04-24 03:11:26 +0000
commit79a0d58cc5e6528f570ad6a1f522bbf6bc2995ac (patch)
tree11cef59ceebc17e6c31895753d95cbad06633f07
parent3b635c1d6de97ccceaf725dbfcd1625cbebdc20b (diff)
downloadazalea-drasl-79a0d58cc5e6528f570ad6a1f522bbf6bc2995ac.tar.xz
fix warning when entities that didn't move chunks despawn
-rw-r--r--azalea-entity/src/plugin/indexing.rs20
-rw-r--r--azalea-entity/src/plugin/mod.rs7
2 files changed, 25 insertions, 2 deletions
diff --git a/azalea-entity/src/plugin/indexing.rs b/azalea-entity/src/plugin/indexing.rs
index c8aaffb0..f04f5ef2 100644
--- a/azalea-entity/src/plugin/indexing.rs
+++ b/azalea-entity/src/plugin/indexing.rs
@@ -5,7 +5,7 @@ use azalea_world::{Instance, InstanceContainer, InstanceName, MinecraftEntityId}
use bevy_ecs::{
component::Component,
entity::Entity,
- query::Changed,
+ query::{Added, Changed},
system::{Commands, Query, Res, ResMut, Resource},
};
use derive_more::{Deref, DerefMut};
@@ -119,6 +119,24 @@ pub fn update_entity_chunk_positions(
}
}
+/// Insert new entities into [`Instance::entities_by_chunk`].
+pub fn insert_entity_chunk_position(
+ query: Query<(Entity, &Position, &InstanceName), Added<EntityChunkPos>>,
+ instance_container: Res<InstanceContainer>,
+) {
+ for (entity, pos, world_name) in query.iter() {
+ let instance_lock = instance_container.get(world_name).unwrap();
+ let mut instance = instance_lock.write();
+
+ let chunk = ChunkPos::from(*pos);
+ instance
+ .entities_by_chunk
+ .entry(chunk)
+ .or_default()
+ .insert(entity);
+ }
+}
+
/// Despawn entities that aren't being loaded by anything.
#[allow(clippy::type_complexity)]
pub fn remove_despawned_entities_from_indexes(
diff --git a/azalea-entity/src/plugin/mod.rs b/azalea-entity/src/plugin/mod.rs
index 4b6d9979..de18cbd3 100644
--- a/azalea-entity/src/plugin/mod.rs
+++ b/azalea-entity/src/plugin/mod.rs
@@ -43,7 +43,12 @@ impl Plugin for EntityPlugin {
.add_systems(
Update,
(
- (indexing::update_entity_chunk_positions).in_set(EntityUpdateSet::Index),
+ (
+ indexing::update_entity_chunk_positions,
+ indexing::insert_entity_chunk_position,
+ )
+ .chain()
+ .in_set(EntityUpdateSet::Index),
(
relative_updates::debug_detect_updates_received_on_local_entities,
debug_new_entity,