steel_worldgen/biomes/
mod.rs1mod biome_source;
2mod climate_sampler;
3mod nether_climate_sampler;
4
5use sha2::{Digest, Sha256};
6
7pub use biome_source::{
8 BiomeSourceKind, ChunkBiomeSampler, EndBiomeSource, NetherBiomeSource, OverworldBiomeSource,
9};
10pub use climate_sampler::OverworldClimateSampler;
11pub use nether_climate_sampler::NetherClimateSampler;
12
13#[must_use]
15pub fn obfuscate_biome_seed(seed: i64) -> i64 {
16 let mut hasher = Sha256::new();
17 hasher.update(seed.to_le_bytes());
18 let result = hasher.finalize();
19 let mut bytes = [0; 8];
20 bytes.copy_from_slice(&result[..8]);
21 i64::from_le_bytes(bytes)
22}
23
24#[cfg(test)]
25mod tests {
26 use super::obfuscate_biome_seed;
27
28 #[test]
29 fn obfuscate_biome_seed_matches_guava_hash_long() {
30 assert_eq!(obfuscate_biome_seed(0), 8_794_265_229_978_523_055);
31 assert_eq!(obfuscate_biome_seed(1), -6_467_378_160_175_308_932);
32 assert_eq!(obfuscate_biome_seed(12_345), 293_737_985_876_514_017);
33 assert_eq!(obfuscate_biome_seed(-1), 6_759_447_113_877_070_610);
34 }
35}