Page last edited 1,633 days 3 hours ago
From COG Docs
Jump to: navigation, search

The StandardGen algorithm is closely based on the ore generation algorithm used by vanilla minecraft. It has been modified to to support the special features offered by COG but is still fairly limited compared to the Cloud and Veins algorithms. Most players are comfortable with StandardGen, though, and it allows for faithful reproduction of the vanilla distributions when necessary.

StandardGen Algorithm

Iron clusters using the vanilla settings

The StandardGen algorithm spawns roughly elliptical "clusters" in each chunk. The horizontal position of each cluster is random and the vertical position is determined by the Height setting. The Size setting controls (very roughly) how many blocks each cluster contains.

The <StandardGen> element creates a distribution using the StandardGen algorithm. The <StandardGenPreset> element creates a non-generating distribution that can be used as a source of default settings.


The StandardGen algorithm may have the following attributes:

Attribute Default Value Description
name procedurally generated A name used to identify the distribution. This is used by other distributions to inherit default parameter values, for log messages, and for debugging console commands. It is recommended (but not required) that distribution names be unique and contain no whitespace.
seed unique value based on order in config file A seed modifier for random numbers generated by this distribution. If two distributions have similar settings and the same seed, they will share the same geometry.
block none The blockID or internal name of the block to be placed (with weight 1.0). <OreBlock> elements can be used as well, or instead, but the block attribute is often shorter and easier to read.
inherits hard-coded defaults Another StandardGen distribution from which to inherit all default parameter values except the name and seed.
drawWireframe* false Whether or not to draw a wireframe model around the distribution.
wireframeColor* 0xFF169E09 The color of the debugging wireframe, if one is drawn. The format is ARGB, "packed" into an integer so that the highest byte is the alpha component and the lowest byte is the blue component.
drawBoundBox* false Whether or not to draw bounding boxes for the distribution.
boundBoxColor* 0x80000000 The color of the bound boxes, if they are drawn. The format is the same as for wireframeColor above.
* These attributes are only meaningful in debugging mode.


The StandardGen distribution may have the following settings:

StandardGen Settings
Setting Default Value Description
Size 8 The size (roughly, the number of individual blocks) of each cluster.
Frequency 20 A.K.A. "DistributionFrequency." The number of clusters per 16x16 chunk.
Height 64 ± 64 The height of clusters in the chunk, in meters.
ParentRangeLimit 32 ± 32 (normal) The maximum horizontal distance a cluster in this distribution may spawn from the center of the nearest cluster/motherlode/cloud of its parent distribution. Differences in height do not count - only distance in the XZ plane. If the distribution has no parent, this setting is ignored.


<Replaces> elements can be used to change which blocks a StandardGen distribution will replace (the default is just smooth stone).


<Biome> elements can be used to customize which biomes a StandardGen distribution will spawn in (the default is all biomes).

Parents and Nesting

A <StandardGen> element may be placed inside another StandardGen, Veins, or Cloud element. The parent distribution will continue to spawn normally, but the child will only spawn near it's parent. The exact range is determined by the ParentRangeLimit setting.


<!-- A standardgen distribution named "DirtStandard" that places dirt -->  
<!-- All defaults are inherited from "PresetStandardGen", which must be defined somewhere above -->  
<StandardGen name='DirtStandard' block='dirt' inherits='PresetStandardGen'> 

    <!-- The distribution will place 20 clusters per chunk, each containing roughly 32 dirt blocks -->  
    <Setting name='Size' avg='32'/> 
    <Setting name='Frequency' avg='20'/>
    <!-- Clusters will be scattered between heights 0 and 64 -->  
    <Setting name='Height' avg='32' range='32'/>