1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00

fix chunks incorrectly being forgotten sometimes

mojang WHY are chunk positions read z first and then x 😭
This commit is contained in:
mat 2023-12-13 22:02:50 -06:00
parent da96a7663a
commit 5b7ed4852c

View file

@ -308,43 +308,63 @@ async fn handle(mut bot: Client, event: Event, _state: State) -> anyhow::Result<
bot.chat(&format!("block: {block:?}"));
}
"debugchunks" => {
println!("shared:");
{
println!("shared:");
let partial_instance_lock = bot.component::<InstanceHolder>().partial_instance;
let local_chunk_storage = &partial_instance_lock.read().chunks;
let mut ecs = bot.ecs.lock();
let mut total_loaded_chunks_count = 0;
for (chunk_pos, chunk) in &bot.world().read().chunks.map {
if let Some(chunk) = chunk.upgrade() {
let in_range = local_chunk_storage.in_range(chunk_pos);
println!(
"{chunk_pos:?} has {} references{}",
std::sync::Arc::strong_count(&chunk) - 1,
if in_range { "" } else { " (out of range)" }
);
total_loaded_chunks_count += 1;
let instance_holder = bot.query::<&InstanceHolder>(&mut ecs).clone();
drop(ecs);
let local_chunk_storage = &instance_holder.partial_instance.read().chunks;
let shared_chunk_storage = instance_holder.instance.read();
let mut total_loaded_chunks_count = 0;
for (chunk_pos, chunk) in &shared_chunk_storage.chunks.map {
if let Some(chunk) = chunk.upgrade() {
let in_range = local_chunk_storage.in_range(chunk_pos);
println!(
"{chunk_pos:?} has {} references{}",
std::sync::Arc::strong_count(&chunk) - 1,
if in_range { "" } else { " (out of range)" }
);
total_loaded_chunks_count += 1;
}
}
}
println!("local:");
println!("local:");
println!("view range: {}", local_chunk_storage.view_range());
println!("view center: {:?}", local_chunk_storage.view_center());
let mut local_loaded_chunks_count = 0;
for (i, chunk) in local_chunk_storage.chunks().enumerate() {
if let Some(chunk) = chunk {
let chunk_pos = local_chunk_storage.chunk_pos_from_index(i);
println!(
"{chunk_pos:?} has {} references",
std::sync::Arc::strong_count(&chunk)
);
local_loaded_chunks_count += 1;
let mut local_loaded_chunks_count = 0;
for (i, chunk) in local_chunk_storage.chunks().enumerate() {
if let Some(chunk) = chunk {
let chunk_pos = local_chunk_storage.chunk_pos_from_index(i);
println!(
"{chunk_pos:?} (#{i}) has {} references",
std::sync::Arc::strong_count(&chunk)
);
local_loaded_chunks_count += 1;
}
}
}
println!("total loaded chunks: {total_loaded_chunks_count}");
println!(
"local loaded chunks: {local_loaded_chunks_count}/{}",
local_chunk_storage.chunks().collect::<Vec<_>>().len()
);
println!("total loaded chunks: {total_loaded_chunks_count}");
println!(
"local loaded chunks: {local_loaded_chunks_count}/{}",
local_chunk_storage.chunks().collect::<Vec<_>>().len()
);
}
{
let local_chunk_storage_lock = bot.partial_world();
let local_chunk_storage = local_chunk_storage_lock.read();
let current_chunk_loaded = local_chunk_storage
.chunks
.limited_get(&ChunkPos::from(bot.position()));
bot.chat(&format!(
"current chunk loaded: {}",
current_chunk_loaded.is_some()
));
}
}
_ => {}
}