diff --git a/CHANGELOG.md b/CHANGELOG.md index efcf8d5..c010654 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ The calculation of the number of skipped regions could underflow when more invalid than valid regions were encountered. +- Ignore empty region files instead of treating them as invalid + + Minecraft generates empty region files in some cases. Just ignore them instead of printing an + error message every time. ## [2.1.0] - 2024-01-27 diff --git a/src/core/region_processor.rs b/src/core/region_processor.rs index 9778061..ce2d060 100644 --- a/src/core/region_processor.rs +++ b/src/core/region_processor.rs @@ -337,11 +337,20 @@ impl<'a> RegionProcessor<'a> { })? .filter_map(|entry| entry.ok()) .filter(|entry| { - // We are only interested in regular files - matches!( - entry.file_type().map(|file_type| file_type.is_file()), - Ok(true) - ) + (|| { + // We are only interested in regular files + let file_type = entry.file_type().ok()?; + if !file_type.is_file() { + return None; + } + + let metadata = entry.metadata().ok()?; + if metadata.len() == 0 { + return None; + } + Some(()) + })() + .is_some() }) .filter_map(|entry| parse_region_filename(&entry.file_name())) .collect())