I just wanted to create a datapack which made me have to use Small Ships, NiftyCarts, and Create (Fabric) / Create (Forge)'s train.
With this datapack every biome have one specific ore only and most have one specific stone, so you'll have to travel alot to get all the resources you need. Stone, gravel, coal, deepslate, sand + tuff can still be found in any overworld biome and netherrack will spawn everywhere in the biome. Just to be nice I've doubled all the spawns of all ores in their specific biome.
Here's a list of all the Resources and where to find them:
Andesite: Jungle + Forest + Cherry Grove + Taiga + Birch + Dark Forest + Flower Forest + Windswept Forest
Diorite: Plains + Snowy Plains + Meadow + Sunflower Plains
Granite: Snowy Taiga, Jungle + Bamboo Jungle + Sparse Jungle
Clay: Lush Caves + Swamp + Mangrove Swamp + Oceans + Frozen River + River
Copper: Forest + Flower Forest + Windswept Forest
Iron: Plains + Snowy Plains + Sunflower Plains
Gold: Desert + Badlands + Eroded Badlands + Savanna + Plateu + Windswept Savanna + Wooded Badlands
Diamond: Swamp + Mangroove Swamp + Snowy Taiga
Redstone: Cherry Grove + Dark Forest + Jungle + Bamboo Jungle + Sparse Jungle
Lapis Lazuli: Taiga + Birch Forest + Meadow + Old Growths
Emerald: Giant Tree Taiga + Mushroom Field + Frozen Peaks + Grove + Ice Spikes + Jagged Peaks + Snowy Slopes + Stony Peaks + Windswept Gravelly Hills + Windswept Hills
Glowstone: Nether Wastes
Nether Quartz: Warped Forest
Ancient Debris: Crimson Forest