Infinite Scripter Plugin

how I went about creating multiple biomes was normalizing the noise, multiplying it by the number of biomes, and then blending it with the two biomes around it as well

local Biomes = {
    {Name = "Forest", Noise = NoiseFunction},
    {Name = "Plains", Noise = OtherNoise},
    {Name = "Hills", Noise = AnotherNoise},
}

function module.DetermineNoise(BiomeNoise)
    local NormalNoise = Normalize(BiomeNoise) * #Biomes
    local RoundNoise = math.round(NormalNoise)

    local Noise = Biomes[RoundNoise].Noise(x, z, GridX, GridZ)

    Noise += Biomes[(RoundNoise + 1 > #Biomes and 1 or RoundNoise + 1)].Noise(x, z, GridX, GridZ) * (RoundNoise - NormalNoise)
    Noise += Biomes[(RoundNoise - 1 < 0 and #Biomes or RoundNoise - 1)].Noise(x, z, GridX, GridZ) * (NormalNoise - RoundNoise)
    
    return Noise
end

more or less something like this, typed this up pretty quick, so no idea if it functions or not, it gives you the general idea though

Adding on the noise of adjacent biomes helps smooth the transitions between biomes, however it can result in higher terrain in general

(in this case Noise in the Biomes table is a function which returns a number)

Will try, thanks! : D
Everything works so far!