-
Notifications
You must be signed in to change notification settings - Fork 27
Biome restriction
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
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>
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'/>