aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-06-02 11:51:03 -0600
committermat <git@matdoes.dev>2025-06-02 11:51:03 -0600
commitc5ddae58a172289fffde991830bb79860421a961 (patch)
treeec24421b4234a0d7d3ef660707a753b685ec920a
parent2c5f293210a09c99577a6999afd52357c898eaeb (diff)
downloadazalea-drasl-c5ddae58a172289fffde991830bb79860421a961.tar.xz
improve docs for biome code
-rw-r--r--azalea-registry/src/data.rs13
-rw-r--r--azalea-world/src/world.rs8
2 files changed, 19 insertions, 2 deletions
diff --git a/azalea-registry/src/data.rs b/azalea-registry/src/data.rs
index 91e7106f..011835ed 100644
--- a/azalea-registry/src/data.rs
+++ b/azalea-registry/src/data.rs
@@ -24,7 +24,8 @@ impl<T: DataRegistry> Registry for T {
}
macro_rules! data_registry {
- ($name:ident, $registry_name:expr) => {
+ ($(#[$doc:meta])* $name:ident, $registry_name:expr) => {
+ $(#[$doc])*
#[derive(Debug, Clone, Copy, AzBuf, PartialEq, Eq, Hash)]
pub struct $name {
#[var]
@@ -54,7 +55,15 @@ data_registry! {PigVariant, "pig_variant"}
data_registry! {PaintingVariant, "painting_variant"}
data_registry! {WolfVariant, "wolf_variant"}
-data_registry! {Biome, "biome"}
+data_registry! {
+ /// An opaque biome identifier.
+ ///
+ /// You'll probably want to resolve this into its name before using it, by
+ /// using `Client::with_resolved_registry` or a similar function.
+ Biome,
+ "worldgen/biome"
+}
+
// these extra traits are required for Biome to be allowed to be palletable
impl Default for Biome {
fn default() -> Self {
diff --git a/azalea-world/src/world.rs b/azalea-world/src/world.rs
index 47804dcc..3e6359ff 100644
--- a/azalea-world/src/world.rs
+++ b/azalea-world/src/world.rs
@@ -179,6 +179,14 @@ impl Instance {
self.chunks.get_block_state(pos).map(FluidState::from)
}
+ /// Get the biome at the given position.
+ ///
+ /// You can then use `Client::with_resolved_registry` to get the name and
+ /// data from the biome.
+ ///
+ /// Note that biomes are internally stored as 4x4x4 blocks, so if you're
+ /// writing code that searches for a specific biome it'll probably be more
+ /// efficient to avoid scanning every single block.
pub fn get_biome(&self, pos: &BlockPos) -> Option<Biome> {
self.chunks.get_biome(pos)
}