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]
16pub fn obfuscate_biome_seed(seed: i64) -> i64 {
17 let mut hasher = Sha256::new();
18 hasher.update(seed.to_le_bytes());
19 let result = hasher.finalize();
20 let mut bytes = [0; 8];
21 bytes.copy_from_slice(&result[..8]);
22 i64::from_le_bytes(bytes)
23}
24
25#[cfg(test)]
26mod tests {
27 use super::obfuscate_biome_seed;
28
29 #[test]
30 fn obfuscate_biome_seed_matches_guava_hash_long() {
31 assert_eq!(obfuscate_biome_seed(0), 8_794_265_229_978_523_055);
32 assert_eq!(obfuscate_biome_seed(1), -6_467_378_160_175_308_932);
33 assert_eq!(obfuscate_biome_seed(12_345), 293_737_985_876_514_017);
34 assert_eq!(obfuscate_biome_seed(-1), 6_759_447_113_877_070_610);
35 }
36}