Biomes

Biome files in plugins/MythicSeasons/biomes/ set how each biome looks in every season: sky, water, fog, grass and leaf colours, environment attributes and a few climate values.

  • Biome files are read at startup, so a change needs a restart. /ms reload only reads their atmosphere section again, while the weather simulation runs.
  • The 20 shipped files and CUSTOM_EXAMPLE.yml come back at the next start when they are missing.

How the colours reach players

The plugin never changes a world's biomes. It swaps per-season copies of them into the chunks sent to players, to match the world's season and phase.

  • A season picks its colour set with biome-color-index, see Season Options.
  • Copies are named <biome-display-name>:<season>_<file name in lowercase>, like mythicseasons:spring_forest, with a number for colour variants (fall_forest0) and _blend0 to _blend3 for phase blends. A custom file uses its first biome instead of the file name: mythicseasons:mypack_fall_rainforest for mypack:rainforest.
  • modify-biome-on-client: false in config.yml sends vanilla chunks to everyone, and /toggleseasoncolors to one player. Land claims can switch the effect off in an area or pin another season there. Block replacements and populator blocks follow the same switches.
  • A season or phase change sends the chunks around players again, slowly, see Chunk refresh.

Shipped files

File Biomes freeze-in-winter temperature-difference Snow instead of rain Recoloured seasons
BADLANDS.yml badlands, wooded_badlands, eroded_badlands false 15 none all four
JUNGLE.yml jungle, bamboo_jungle, sparse_jungle false 12 none spring, summer, winter
BEACH.yml beach, stony_shore true 0 winter all four
BIRCH_FOREST.yml birch_forest, old_growth_birch_forest true 0 winter all four
OCEAN.yml ocean, cold_ocean, deep_cold_ocean, deep_lukewarm_ocean, deep_ocean, lukewarm_ocean, warm_ocean false 0 winter all four
DARK_FOREST.yml dark_forest true 0 winter all four
DESERT.yml desert false 15 none all four
FLOWER_FOREST.yml flower_forest, meadow, cherry_grove true 0 winter all four
FOREST.yml forest true 0 winter all four
TAIGA.yml taiga, old_growth_spruce_taiga, old_growth_pine_taiga true -4 fall, winter summer, fall, winter
MOUNTAINS.yml windswept_hills, windswept_gravelly_hills, windswept_forest, stony_peaks true -4 winter all four
MUSHROOM_FIELDS.yml mushroom_fields false 0 none none
PLAINS.yml plains, sunflower_plains true 0 winter all four
SAVANNA.yml savanna, savanna_plateau, windswept_savanna true 10 winter all four
RIVER.yml river true 0 winter all four
FROZEN_BIOMES.yml snowy_beach, snowy_taiga, snowy_plains, frozen_river, ice_spikes, frozen_ocean, deep_frozen_ocean false -12 all four summer
SWAMP.yml swamp, mangrove_swamp true 0 winter summer, winter
FROZEN_MOUNTAINS.yml jagged_peaks, frozen_peaks, snowy_slopes, grove false -12 all four summer
CAVES.yml dripstone_caves, lush_caves, deep_dark false 5 none none
PALE_GARDEN.yml pale_garden false -7 none none
  • A season counts as recoloured when one of its six colours is not NONE. Files that recolour nothing still apply freeze-in-winter and temperature-difference.
  • A biome no file lists keeps its vanilla colours.

Climate and temperature

Option Default What it does
freeze-in-winter false true stops natural ice and snow from forming in every season, in worlds with a season and while modify-blocks is on, except where keep-natural-snow lets them form. A biome no file lists counts as true.
temperature-difference built-in per file Whole degrees C added to the air temperature in these biomes. A missing key is written into the file with the built-in value.
show-snow-instead-of-rain.<season> false true makes that season's copy (spring, summer, fall or winter) a cold biome, so players see snow instead of rain. Only works in a season that recolours the biome.
atmosphere.temp-offset 0.0 Degrees C added to the simulated air in these biomes.
atmosphere.vapor-multiplier 1.0 Scales the moisture of the simulated air: above 1 is wetter and cloudier, below 1 drier.
atmosphere.seasons.<season> none temp-offset and vapor-multiplier for one season, by your own season ids. A value left out keeps the one above.
  • The built-in temperature-difference is the value in the shipped files table, except for PALE_GARDEN.yml, which sets -7 over a built-in 0. Custom files get 0.
  • In an includes: ALL file each biome gets a value from its vanilla temperature instead: up to 0.1 gives -12, up to 0.3 gives -4, up to 1.0 gives 0, up to 1.4 gives 10, and above that 15.
  • The seasonal snow and ice players see come from populators, not from freeze-in-winter.
  • water-temperature is not read any more. For colder water in some biomes, add a line with the MythicMobs biome condition to the pack's MS_Wetness skill, see Temperature.
  • The atmosphere section only works while the simulation runs, and never for custom biomes listed as namespace:name or reached through includes: ALL, since it matches names without the namespace. See Per-biome offsets.

Colours

Each season has a section under colors (spring, summer, fall, winter). A season whose six colours are all NONE is not recoloured, and its attributes are ignored.

Option Default What it does
skycolor NONE Colour of the sky.
fogcolor NONE Colour of fog in the air.
watercolor NONE Colour of water surfaces.
waterfogcolor NONE Colour of the fog under water.
grasscolor NONE Colour of grass. Takes a colour list.
treecolor NONE Colour of leaves and other foliage. Takes a colour list.
weights equal Next to a colour list: one whole number per colour, higher for a more common colour.
patchsize 15 Next to a colour list: biome cells (4 blocks on each side) per colour patch, higher for bigger patches. Above 23 counts as 23.
attributes none Environment attributes of the season's copy, see Environment attributes.
  • Write colours as six hex digits (RRGGBB). Quote a colour with a leading #, or the # starts a YAML comment and the value counts as NONE. Quote all-digit colours too, or YAML reads a number. A short FFF is not expanded.
  • NONE must be in capitals. A lowercase none fails, and that season of the file is skipped with Could not load <season> in file: <file>.
  • NONE keeps the biome's own sky, fog and water colours.

With grasscolor: NONE, a recoloured season still gives the copy the fixed grass colour from this table, not vanilla's climate-based one. In every recoloured season swamps and dark forests lose their special grass shading. The leaf column is only used as the vanilla side of a phase blend.

File Grass colour Leaf colour
BADLANDS.yml 9E814D 9E814D
JUNGLE.yml 59C93C 30BB0B
BEACH.yml, PLAINS.yml 91BD59 77AB2F
BIRCH_FOREST.yml 88BB67 6BA941
OCEAN.yml, RIVER.yml 8EB971 71A74D
DARK_FOREST.yml 507A32 59AE30
DESERT.yml, SAVANNA.yml BFB755 AEA42A
FLOWER_FOREST.yml, FOREST.yml 79C05A 59AE30
TAIGA.yml 86B783 68A464
MOUNTAINS.yml 8AB689 6DA36B
MUSHROOM_FIELDS.yml 55C93F 2BBB0F
FROZEN_BIOMES.yml, FROZEN_MOUNTAINS.yml 80B497 60A17B
SWAMP.yml 6A7039 6A7039
  • CAVES.yml, PALE_GARDEN.yml and custom files keep the original biome's grass colour when it has its own. Where it has none, blends use 91BD59 for grass and leaves.
  • With treecolor: NONE the copy keeps the original biome's leaf colour, if it has one. Otherwise the game works the leaves out from the copy's climate, so a hot or cold biome can show other leaf colours than in vanilla.

Colour lists

grasscolor and treecolor take a comma-separated list of two or more colours, scattered over the world in patches.

colors:
  fall:
    grasscolor: BFB755
    treecolor: 'E8962A, E8962A, AEA42A, 6BA941, 60A17B'
    weights: '30, 25, 20, 15, 10'

Fall leaves in five colours, orange most often, and one grass colour everywhere.

  • All lists of one season need the same number of colours. A single colour repeats for every entry.
  • The patches are rolled again at every start, so a tree can change colour after a restart. Blended phases use the first colour of a list.
  • Patches are built for the longest list on the server, at least five colours. weights only work on a list of exactly that length, so use the same length everywhere.
  • weights and patchsize apply to every biome on the server, and the last file loaded wins: the shipped group files in the order of the table above, then custom files with an includes list, then includes: ALL files.

Environment attributes

attributes under colors.<season> sets environment attributes of that season's copy, such as cloud height, fog distance or star brightness. They need Minecraft 1.21.11 or newer. Older servers log Environment attributes need Minecraft 1.21.11 or newer; this server version cannot apply: <keys>.

colors:
  winter:
    skycolor: D2DEFF
    attributes:
      fog_end_distance: 512.0
      star_brightness: 0.8
      sky_light_color: C8D0E8

Winter fog closes in at 512 blocks.

  • Write a key as its name (cloud_color), its path (visual/cloud_color) or its full id (minecraft:visual/cloud_color). Every attribute of the running Minecraft version works, see the Minecraft Wiki.
  • Colours are six hex digits, or eight (AARRGGBB) for attributes with alpha. Other values are written as in a data pack.
  • cloud_opacity (0 to 1) is not a Minecraft attribute: it becomes the alpha of a six-digit cloud_color.
  • While the volumetric clouds are on (enabled and clouds.enabled in atmosphere.yml, as shipped, on a supported server), cloud_color and cloud_opacity show nothing.
  • In the blended phases, colour and number attributes mix with the neighbouring season's values: 55 percent of the neighbour in START and END, 75 percent in EARLY and LATE. Switches take the neighbour's value, and an attribute only one of the two seasons sets keeps that value.

Season transitions

With sub-seasons on, the colours blend with the neighbouring seasons outside MIDDLE, and a change to season-cycle or foliage-transitions needs a restart. See Sub-Seasons.

Custom biome files

Biomes from a world generator or a biome plugin need a custom file: any other .yml file in biomes/, with CUSTOM_EXAMPLE.yml as the template. It takes every key above plus includes, one line of text (not a YAML list):

  • ids written as namespace:name, separated by commas (/ms biomelist lists them);
  • ALL: every biome whose namespace is neither minecraft nor your biome-display-name;
  • NONE: the file is off.
includes: mypack:rainforest
temperature-difference: 8
colors:
  fall:
    treecolor: 'E8962A, E8962A, AEA42A, 6BA941, 60A17B'
  winter:
    skycolor: D2DEFF
    watercolor: 216FC4
    waterfogcolor: 216FC4
    grasscolor: B8D0E1
    treecolor: B8D0E1
    fogcolor: A6D1FF

mypack:rainforest stands for whatever your generator registers. Spring and summer keep the vanilla colours.

  • All biomes of a list share the copies of the first one, so the first id must exist on the server. If it does not, every season of the file that sets colours fails with Could not load <season> in file: <file>.
  • A biome named in an explicit list is left alone by includes: ALL files, so ALL can set the default and other files the exceptions.
  • CUSTOM_EXAMPLE.yml ships with includes: ALL and fall and winter colours, which therefore apply to every custom biome on the server. Set includes: NONE in it to turn it off.

Commands

Command Permission Default What it does
/toggleseasoncolors mythicseasons.toggleseasons everyone Turns the season look of the terrain (colours, block replacements, populator blocks) off or on for yourself, in chunks sent afterwards. Saved across restarts.
/ms biomelist mythicseasons.admin operators Writes every registered season biome and its copies per colour set and phase to the console. NONE means no copy.

Console messages

After loading, the console prints Biome files: <n> loaded, <n> skipped.

Message Meaning
<file>.yml: no biome of that name exists on this server version, skipping this file The server version lacks these biomes, such as PALE_GARDEN.yml before 1.21.4.
<file>: no 'includes' list, skipping this file A custom file has no includes.
<file>: unknown biome '<id>' in includes, skipping it An id in includes does not exist. When it is the first id, the seasons of the file fail too.
<file>: no usable biome in includes, nothing was applied from this file No id in includes exists.
<file>: skipping biome <id>, it is already configured by <file> An includes: ALL file meets a biome another file names.
Could not load <season> in <file>. All multi-color properties must have the same count The lists of one season differ in length. That season of the file is skipped.
Could not load <season> in <file>. Multi-color properties must have at least 2 colors A list ends up with one colour, for example after a trailing comma.
Could not load <season> in file: <file> with an error A value of that season cannot be read: a bad colour, a lowercase none, a weight that is not a whole number, or a first includes id that does not exist. That season of the file is skipped.
Updated Nov 11, 2026