Stone, Copper, Gold, Iron and Coal spawns, a try to demystify.
The "WorldGenerator.eco" is divided into Surface Stone (starting at line 99) and Underground Stone (starting at line 228), for both areas Copper, Iron, Gold and Coal are individually defined.
Gold, Iron, Coal and Copper in the area Surface are subpoints of Stone at the Surface, so you can change the values of Stone at the Surface (id 10) to reduce or increase all subpoints simultaneously, including the amount of stones at the surface.
The whole covering dirt layer, also below sea level.
Surface
id 9 Dirt
id 10 Stone
id 11 Coal
id 12 Iron
id 13 Copper
id 14 Gold
The whole stone layer, it starts where the Surface (Dirt) layer ends and ends at the ground stone.
id 15 Stone
Underground
id 16 Iron
id 17 Coal
id 18 Copper
id 19 Gold
Display More
e.g. Coal in the range Surface "$id": "11", (id 11) line 121-141
You can have a look at the structure in the server ui, you can also change the values directly there, but I get along with the .eco files much better.
So basically there are two areas of stone, where Noise layers of Ore and Coal are spawned upon, later spawned layers maybe partly overwrite previous layers.
HeightRange,
is the height range in the world where the spawn takes place, values -1.0 to 1.0 (where 0 is sea level)
DepthRange,
is the height of the spawn, values 0.0 to 1.0 (min should usually be 0.0, because the spawn start point is 0.0)
NoiseFrequency,
the scatter/distribution of the blocks, clumping at low values, more even distribution at higher values, designated values 15.0 to 40.0 (tested values 1.0 to 10000.0)
NoiseRange,
is the distance of the spawns, higher values lead to less spawns, values 0.0 to 1.0
I assume that 1.0 is mostly synonymous with 100%, when changing the world size/height/sea level the spawns should all adjust automatically.
To play around with the values I recomment to use Surface Stone (id 10), so you see changes in the world easily.
Or set the Surface Stone to a very high ammount and then play with the Surface Coal (id 11) settings, to see what exactly it does.
In rivers you can see easily what it does underground, best disable Underwater Distortion in your Eco clients in Advanced Settings.
And no, I don't think it's very bugged, but very random.
If you want things less random, have very little difference between min and max values.
e.g. "NoiseRange": { "min": 0.5, "max": 0.6 },
Problem here, 1.0 is likely 100%, but 100% of what exactly I don't know, can't be 100% of the map, maybe 100% of 100 blocks or 100% of the worlds overall blocks height? Even 100% of 72, 40, 60 or 80 blocks would make sense in some context.
For your desired change you only need to modify NoiseRange and NoiseFrequency (higher values) from the above.