mirror of
https://github.com/neocturne/MinedMap.git
synced 2025-03-05 17:44:52 +01:00
world/section: move biome_types field out of BiomesV0 enum
This commit is contained in:
parent
3ea93296d7
commit
aa2edc3d13
1 changed files with 18 additions and 19 deletions
|
@ -217,24 +217,22 @@ impl<'a> BiomesV1_18<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pre-v1.18 section biome data
|
/// Pre-v1.18 section biome data variants
|
||||||
///
|
///
|
||||||
/// There are a 3 formats for biome data that were used in
|
/// There are a 3 formats for biome data that were used in
|
||||||
/// different pre-v1.18 Minecraft versions
|
/// different pre-v1.18 Minecraft versions
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum BiomesV0<'a> {
|
enum BiomesV0Data<'a> {
|
||||||
IntArrayV15 {
|
IntArrayV15(&'a fastnbt::IntArray),
|
||||||
data: &'a fastnbt::IntArray,
|
IntArrayV0(&'a fastnbt::IntArray),
|
||||||
|
ByteArray(&'a fastnbt::ByteArray),
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pre-v1.18 section biome data
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct BiomesV0<'a> {
|
||||||
|
data: BiomesV0Data<'a>,
|
||||||
biome_types: &'a BiomeTypes,
|
biome_types: &'a BiomeTypes,
|
||||||
},
|
|
||||||
IntArrayV0 {
|
|
||||||
data: &'a fastnbt::IntArray,
|
|
||||||
biome_types: &'a BiomeTypes,
|
|
||||||
},
|
|
||||||
ByteArray {
|
|
||||||
data: &'a fastnbt::ByteArray,
|
|
||||||
biome_types: &'a BiomeTypes,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> BiomesV0<'a> {
|
impl<'a> BiomesV0<'a> {
|
||||||
|
@ -245,18 +243,19 @@ impl<'a> BiomesV0<'a> {
|
||||||
const BN: usize = N >> 2;
|
const BN: usize = N >> 2;
|
||||||
const BMAXY: usize = MAXY >> 2;
|
const BMAXY: usize = MAXY >> 2;
|
||||||
|
|
||||||
Ok(match biomes {
|
let data = match biomes {
|
||||||
Some(de::BiomesV0::IntArray(data)) if data.len() == BN * BN * BMAXY => {
|
Some(de::BiomesV0::IntArray(data)) if data.len() == BN * BN * BMAXY => {
|
||||||
BiomesV0::IntArrayV15 { data, biome_types }
|
BiomesV0Data::IntArrayV15(data)
|
||||||
}
|
}
|
||||||
Some(de::BiomesV0::IntArray(data)) if data.len() == N * N => {
|
Some(de::BiomesV0::IntArray(data)) if data.len() == N * N => {
|
||||||
BiomesV0::IntArrayV0 { data, biome_types }
|
BiomesV0Data::IntArrayV0(data)
|
||||||
}
|
}
|
||||||
Some(de::BiomesV0::ByteArray(data)) if data.len() == N * N => {
|
Some(de::BiomesV0::ByteArray(data)) if data.len() == N * N => {
|
||||||
BiomesV0::ByteArray { data, biome_types }
|
BiomesV0Data::ByteArray(data)
|
||||||
}
|
}
|
||||||
_ => bail!("Invalid biome data"),
|
_ => bail!("Invalid biome data"),
|
||||||
})
|
};
|
||||||
|
Ok(BiomesV0 { data, biome_types })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue