As the title suggests, I am wanting to add custom ores to the game (I.E. new gemstones like ruby, sapphire, topaz, etc), but I have no clue how to control world generation to add such a thing. I tried searching for how to add an ore but all I found was I would need to replace blocks like granite and diorite, which I will accept as the only option but I would prefer not to. I am aiming to edit as few game mechanics as possible, thus meaning I cannot replace any existing vanilla ores or stones because that could reduce abundancy or the resource itself. Ideally, I would like to avoid the usage of any kind of Spigot plugins but I will use them if that means I can do what I am attempting to achieve.
My Minecraft version is 1.18.x