aboutsummaryrefslogtreecommitdiff
path: root/azalea-world/src/lib.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-05-05 22:12:54 -0500
committermat <github@matdoes.dev>2022-05-05 22:12:54 -0500
commit4dac004635e50682d9ebe8812fdf654a0c1808f1 (patch)
tree46257a144ec069ba3e0a812eabca6e9ed246db6b /azalea-world/src/lib.rs
parent57b76ef52b7a9b516710aea5ba5d6f0141c8d6cf (diff)
downloadazalea-drasl-4dac004635e50682d9ebe8812fdf654a0c1808f1.tar.xz
Fix chunk decoding
Diffstat (limited to 'azalea-world/src/lib.rs')
-rw-r--r--azalea-world/src/lib.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/azalea-world/src/lib.rs b/azalea-world/src/lib.rs
index 54961401..abeac181 100644
--- a/azalea-world/src/lib.rs
+++ b/azalea-world/src/lib.rs
@@ -11,6 +11,8 @@ use std::{
sync::{Arc, Mutex},
};
+use crate::palette::PalettedContainerType;
+
#[cfg(test)]
mod tests {
#[test]
@@ -43,7 +45,7 @@ impl World {
// let existing_chunk = &self.storage[pos];
let chunk = Arc::new(Mutex::new(Chunk::read_with_world(data, self)?));
- println!("Loaded chunk {:?}", chunk);
+ println!("Loaded chunk {:?}", pos);
self.storage[pos] = Some(chunk);
Ok(())
@@ -121,7 +123,9 @@ impl Chunk {
pub fn read_with_world_height(buf: &mut impl Read, world_height: u32) -> Result<Self, String> {
let section_count = world_height / SECTION_HEIGHT;
let mut sections = Vec::with_capacity(section_count as usize);
- for _ in 0..section_count {
+ println!("\n\nreading {} sections", section_count);
+ for i in 0..section_count {
+ println!("reading section #{}", i);
let section = Section::read_into(buf)?;
sections.push(section);
}
@@ -148,8 +152,15 @@ pub struct Section {
impl McBufReadable for Section {
fn read_into(buf: &mut impl Read) -> Result<Self, String> {
let block_count = u16::read_into(buf)?;
- let states = PalettedContainer::read_into(buf)?;
- let biomes = PalettedContainer::read_into(buf)?;
+ println!("block count: {}\n", block_count);
+ // assert!(
+ // block_count <= 16 * 16 * 16,
+ // "A section has more blocks than what should be possible. This is a bug!"
+ // );
+ let states = PalettedContainer::read_with_type(buf, &PalettedContainerType::BlockStates)?;
+ println!("! read states, reading biomes next");
+ let biomes = PalettedContainer::read_with_type(buf, &PalettedContainerType::Biomes)?;
+ println!();
Ok(Section {
block_count,
states,