World Generation & Perlin Noise

Hey !
I’m creating a game and I’m needing some help.
I’m generating a 3d infinit world but my world look always the same. I’m actually adding 4 differents perlin noise together to get something cool but that’s not enought.
I was trying to generate a world that look like Minecraft.
I’m trying to get a biome system with different large part : big plains, groups of moutains, oceans, …
But I dont know how to do that.

I’ve seen other topics that people use 3d and 2d Perlin noise to generate there world like so :

for (int x = 0; x < Width) {
    for (int y = 0; y < Depth) {
        for (int z = 0; z < Height) {
            if(z < Noise2D(x, y) * Height) {
                Array[x][y][z] = Noise3D(x, y, z);
            } else {
                Array[x][y][z] = 0; // 0 is air

But I dont think that will resolve my problem of separating big biomes.

Hope you can help me on this ^^
Tell me if you dont understand something, my english is not very good :rolleyes: