Skip to content

Noise, Climate & Biome Surface Rules#35

Open
Rebel459 wants to merge 3 commits intoTerraformersMC:1.21.11from
Rebel459:1.21.11
Open

Noise, Climate & Biome Surface Rules#35
Rebel459 wants to merge 3 commits intoTerraformersMC:1.21.11from
Rebel459:1.21.11

Conversation

@Rebel459
Copy link

@Rebel459 Rebel459 commented Jan 4, 2026

I'm relatively new to surface rules but after spending over a dozen hours working them out, refactoring etc I'm quite happy with how these turned out.

I made these in mojmap but for this PR i've fully converted them to yarn. Codecs have been created for each so they're all fully data-driven too.

A class of helper methods to better access them in mod code was created, too. Open to any feedback, improvements etc.

Features:

BiomeRules

  • biome tag check
  • heightmap biome check
  • heightmap biome tag check
  • surface biome check
  • surface biome tag check

ClimateRules

  • temperature check
  • temperature offset check
  • downfall check

NoiseRules

  • temperature check
  • humidity check
  • erosion check
  • continentalness check
  • weirdness check
  • depth check
  • heightmap depth check

MiscRules

  • boolean check (useful for linking to mod configs)

BiolithSurfaceRules

  • helper class to easily access all the above in code (with basic documentation within)
  • includes some extra features like collectedRule to easily list multiple conditions for a single rule

BiomeParameters

  • useful for both biome placement and noise surface rule creation
  • includes human-readable floats for all biome placement noise parameters

You can see examples of all this in use from the project this work was derived from, which is a biome mod I'm currently working on: https://github.com/Rebel459/bloom

@Rebel459
Copy link
Author

Rebel459 commented Jan 4, 2026

I should also add that, where possible, more expensive checks are calculated and preserved per-column, which drastically improves worldgen performance compared to without, ensuring that performance is still decent without c2me even when using lots of noise / climate checks that are applied to all biomes

@Rebel459
Copy link
Author

Rebel459 commented Jan 4, 2026

Finished up porting over the climate command
/biolith climate accepts the same stuff as /biolith describe (and is supported by /biolith help)
It fetches climate information (temperature + downfall) to make testing climate stuff in-world easier for developers

@gniftygnome
Copy link
Contributor

BTW I see this and I'm interested in it; I've just got a lot on the modding plate right now because of all the changes for 26.1. I will circle back around to this PR at some point.

@Rebel459
Copy link
Author

All good! If you’d like, I can also make a separate PR for 26.1 / MojMap as the latter is what I originally made this in.

@gniftygnome
Copy link
Contributor

Yes that would save me some work, although I haven't done a technical review of this PR yet, so I don't know if I'll ask for changes.

@Rebel459
Copy link
Author

In that case I’ll wait and help out with mojmap afterwards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants