Skip to content
lawremi edited this page Oct 7, 2013 · 26 revisions

This page contains notes and ideas related to the design of Custom Ore Generation.

Dimension tag

A <Dimension> tag could limit a distribution to a given dimension, like <Biome> does for biomes. This would require either an id, name, isSurface, or symbol attribute. If a <Dimension> tag is not specified, then wildcard is assumed. Note that the wildcard means every world, including Mystcraft dimensions, which might be undesirable. To support different settings depending on the dimension, this could have <Setting> elements as its children. This is probably simpler in many cases to using inheritance.

Mystcraft integration

The original COG supported the original Mystcraft design, where symbols were added in some quantity to a book, and distributions were sensitive to the symbol count, through expressions. Now that Mystcraft books are written according to a grammar, with modifier symbols, etc, it has become more complicated.

We would need the following:

  • A <MystcraftModifierSymbol> element with child <*Preset> elements that apply/modify settings, typically through expressions that transform the _default_ value,
  • A <MystcraftDistributionSymbol> element defining a symbol accepting any COG-defined modifier, with:
    • Distribution elements for distributions generated by the symbol
    • Attributes like instability (as before) and rarity

The modifier settings will override the defaults of the distribution generated by the distribution symbol.

Distributions will also need to specify some dependence on the DenseOres symbol.

Adjacency-based Replacement

Extend <Replaces> to add the attributes above, below, north, south, west and east. They will be block descriptors that restrict on the type of block one space over in the given direction. This would allow things like placing a block on a surface (e.g., rock below, air above), or ensuring that an ore deposit is hidden in stone.

Block sets

Like the biome sets, except define a set of block descriptors. The <BlockSet> elements could be referenced from distributions using <ReplaceSet> and <OreBlockSet>.

Clone this wiki locally