Checking the biome for each cell would cost way too much computing power, which is why first, the chunks-mid-cell biome gets checked. If its biome is the same as the biome of cell 2-5 (referencing the picture), this is a "clean" chunk → The entire chunk belongs to the same biome. Otherwise, a transition between multiple biomes need to be made, and the chunk is identified as a dirty chunk.
Disclaimer: Everplants Chunks are 9x9 blocks, the picture is simplifying this part + chunk-loading range can be changed at any time
But how do decide which biome needs to get generated? Everplant contains Noise-Maps for 4 Parameters that contains an individual value between -1 and 1 for each cell: - Humidity- Temperature- Weirdness- Fertility. Each Biome stores ideal values for each of these indicators. An example: Deserts want to have -0.8 humidity, 0.8 temperature, 0 weirdness and -0.6 fertility. The world-gen script takes all available values for Humidity, Temperature etc. (100% moddable, you can even add your own noise maps for more indicators + custom biomes) and finds the closest matching biome.
The way a biome looks can be customized by a gd-script or by changing / adding properties to a json-based template. Inside this template, structures like rivers can get included into a biome.
In-Game Screenshot of a River: