From 0a6122efbbdea974d963e167db1d660c81ea16e7 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 17 Oct 2022 22:17:24 +0200 Subject: a --- src/dimension.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/dimension.rs') diff --git a/src/dimension.rs b/src/dimension.rs index 6c3bea8..0f8ac3e 100644 --- a/src/dimension.rs +++ b/src/dimension.rs @@ -1,7 +1,7 @@ use chashmap::{CHashMap, ReadGuard, WriteGuard}; use fastanvil::{Block, Chunk, CurrentJavaChunk, Region, RegionFileLoader, RegionLoader}; use log::{debug, info}; -use std::{fs::File, path::Path}; +use std::{fs::File, path::PathBuf}; pub struct Dimension { loader: RegionFileLoader, @@ -10,8 +10,8 @@ pub struct Dimension { } impl Dimension { - pub fn new(path: &str) -> Self { - let loader = fastanvil::RegionFileLoader::new(Path::new(path).to_path_buf()); + pub fn new(path: PathBuf) -> Self { + let loader = fastanvil::RegionFileLoader::new(path); Self { loader, regions: Default::default(), @@ -36,7 +36,7 @@ impl Dimension { self.region(rx, rz) } } - + pub fn chunk( &self, cx: isize, @@ -46,11 +46,14 @@ impl Dimension { self.chunks.get(&(cx, cz)).unwrap() } else { let mut guard = self.region(cx / 32, cz / 32); - let reg = guard.as_mut().unwrap(); debug!("loading chunk {:?}", (cx, cz)); - let chunk: Option = reg - .read_chunk(cx.rem_euclid(32) as usize, cz.rem_euclid(32) as usize) - .ok() + let chunk: Option = guard + .as_mut() + .map(|c| { + c.read_chunk(cx.rem_euclid(32) as usize, cz.rem_euclid(32) as usize) + .ok() + }) + .flatten() .flatten() .map(|chunk| fastnbt::from_bytes(&chunk).ok()) .flatten(); @@ -58,7 +61,7 @@ impl Dimension { self.chunk(cx, cz) } } - + pub fn block(&self, x: isize, y: isize, z: isize) -> Option { self.chunk(x / 16, z / 16) .as_ref()? -- cgit v1.2.3-70-g09d2