Skip to content
Li-aung Yip edited this page Apr 1, 2018 · 3 revisions

Biome Types

The <BiomeType> element supports the same attributes as <Biome>, and its behavior is identical, except that the name attribute matches Forge biome dictionary terms, instead of biome IDs/names. By selecting biomes via dictionary terms, a distribution will be automatically compatible with custom biome mods.

We place a coal cloud in any Jungle biome:

<Cloud name="CoalCloud" block="oreCoal">
  <BiomeType name="jungle"/>
</Cloud>

The Forge BiomeDictionary Types are:

FOREST, PLAINS, MOUNTAIN, HILLS, SWAMP, WATER, DESERT, FROZEN, JUNGLE, WASTELAND, BEACH, NETHER, END, MUSHROOM, MAGICAL.

Reference: the Forge BiomeDictionary

Biome Sets

The <BiomeSet> element enables sharing of biome selections across distributions. The name attribute indicates the name, and the inherits attribute refers to the parent biome set by name, and has analogous semantics to inherits on distribution elements. It is through the inherits attribute that a distribution refers to an externally defined biome set. The weight attribute has a multiplicative effect on the weights of the contained biome descriptors. Valid children of <BiomeSet> include: <Biome>, <BiomeType> and other <BiomeSet> elements.

Assume we want to select only continental, non-mountainous biomes. We could list the types of biomes to include, as below:

<BiomeSet name="continental">
  <BiomeType name="forest"/>
  <BiomeType name="plains"/>
  <BiomeType name="sandy"/>
  <BiomeType name="swamp"/>
  <BiomeType name="jungle"/>
  <BiomeType name="snowy"/>
  <BiomeType name="beach"/>
  <Biome name="river"/>
</BiomeSet>

Note that river is not a biome dictionary term, it is simply the name of the river biome. The water type would include ocean. It is unfortunate that there is no type distinguishing oceans from rivers. Also, the frozen ocean is included by the frozen type, but if we leave it off, we lose Ice Plains and Ice Mountains (why do these not use the plains and mountains terms?).

So we need to exclude those.

<BiomeSet name='ocean'>
  <BiomeType name='water'/>
  <Biome name='river' weight='-1'/>
</BiomeSet>
<BiomeSet name="continental">
  <Biome name='.*'/>
  <BiomeSet inherits='ocean' weight='-1'/>
  <BiomeType name='mountain' weight='-1'/>
</BiomeSet>

Finally, a distribution might refer to a biome set like this:

<Cloud name="CoalCloud" block="oreCoal">
  <BiomeSet inherits="continental"/>
</Cloud>

Climate Selection

The <Biome> descriptor also has support for restricting by climate:

  • minTemperature / maxTemperature attributes bounding the temperature,
  • minRainfall / maxRainfall attributes bounding the rainfall.

To select a tropical (jungle?) biome, without relying on the sometimes ambiguous dictionary terms, we could select by the climate. Here, we restrict to tropical jungles:

<BiomeType name='jungle' minTemperature='1.2' minRainfail='0.9'/>

Here, we select any tropical biome:

<Biome name='.*' minTemperature='1.2' minRainfail='0.9'/>