Shared Weather

Servers behind MythicProxy can share one weather per world: one server simulates it and sends it to the others.

Requirements

  • MythicProxy installed and enabled on every server, in any load order. See Compatible Plugins.
  • With more than one proxy, MythicProxy's shared MySQL storage. The lease (which server simulates a world) and the saved weather live on the proxy, called the hub on this page.
  • The atmosphere running in a world of exactly the same name on every server that takes part, with the same values for everything under What must match. /ms atmosphere toggle <world> switches it on or off.

Messages use the MythicProxy channel mythicseasons:weather. Without a usable MythicProxy the server keeps its own weather. An unusable API logs MythicProxy is installed but its network API is unavailable (<reason>); the weather is not shared between servers. When MythicProxy offers no network service, nothing is logged and /ms atmosphere info shows no shared: line.

Which servers share

shared-weather-group at the top of atmosphere.yml sets the group and needs a restart.

Value Group
auto (default) The part of the server's MythicProxy name before the last dash, as long as one or more digits follow that dash and something stands before it
none None. The server keeps its own weather and does not wait for MythicProxy
Any other text That text, whatever the server is called. Write it the same on every server, case included

With auto, survival-1 and survival-12 share the group survival, and my-survival-2 is in my-survival. lobby, survival-a, survival-1-b and -1 keep their own weather.

Except with none, no weather starts until MythicProxy has named the server. Until then the console repeats Atmosphere is waiting for MythicProxy to name this server before the weather starts every minute. Then it logs one of these lines. Check it after every start:

Atmosphere: server 'survival-1' shares its weather with the servers of group 'survival'
Atmosphere: server 'lobby' simulates its own weather

What is shared

A region is 16 x 16 cells, 512 blocks on a side at the default cell size.

Shared by the group Kept by each server
The simulated weather of every region The drawn clouds, from its own clouds settings, layer files, quality presets and fog pack
The saved weather and the weather clock, kept on the hub instead of the world folder Client weather, season skills and pack effects, with its own weather.rain-precip-threshold
The ground height and biome of every server's loaded chunks Snow on the ground, saved in its own world folder
atmosphereforce, atmosphereprofile and /ms weather, sent to the server that simulates, see Overrides The calendar, season and world time, the atmosphere-profiles folder, and the calendar values and MythicMobs placeholders in formulas

A world in a group ignores the saved weather in its world folder. The hub keeps the weather per group, world name and the settings below, so a server that changes group gets its weather from somewhere else.

What must match

Servers share a world's weather only when all of these are equal. Otherwise each keeps a separate weather, even inside one group.

Must be equal Comes from
The group shared-weather-group, or the server name under auto
The world name The world on each server
grid.cell-size.xz and grid.cell-size.y atmosphere.yml, xz after rounding down to a power of two
The lowest simulated block grid.y-min (world is the world's lowest block)
The number of levels (grid.y-max - grid.y-min) / grid.cell-size.y, rounded down and kept between 8 and 128
timing.step-period-ms and timing.time-acceleration atmosphere.yml
The world seed The world on each server
  • /ms reload does not apply grid and timing values to a running simulation. Change them on every server, then restart them all.
  • A mismatch logs Another server of this group simulates the weather of <world> with different grid or timing settings in atmosphere.yml, or a different world seed; each such server keeps its own weather until they match. Which server logs it depends on which one wrote last, so read every console. Check the seed of copied or regenerated worlds.
  • Other settings may differ, but whichever server simulates applies its own physics, forcing, biome-defaults, season settings, the snow and storm thresholds of weather and its world time (day and night) to the whole group. Keep these the same everywhere.

Who simulates the weather

For each world, the server holding the MythicProxy lease simulates, saves and sends the weather. No setting picks which server that is.

  • The holder simulates around its own players and those of every server that reported in the last 10 seconds, nearest first, up to its own grid.max-cells for the whole group. Give it the CPU and memory for all of them.
  • It saves to the hub every 60 seconds, on every autosave (performance.autosave-interval-minutes in config.yml) and when it leaves.
  • Where its grid.max-cells leaves a player's area out, that player keeps their last client weather for up to 30 seconds, then gets the server's own weather.
  • A server that takes over logs This server now simulates the shared weather of <world> (lease token <n>).

When something goes wrong

What happens Effect Console
A receiving server stops or loses contact About 10 seconds later the holder stops simulating the regions only that server needed
The holder stops cleanly (server stop, MythicSeasons or MythicProxy disabled) It saves to the hub and releases the lease, waiting up to 5 seconds. Another server takes over within about 2 seconds Handing the shared weather to another server did not finish: <error> when the 5 seconds run out
The holder crashes The lease runs out within 10 seconds, then another server continues from the last save on the hub. The weather jumps back by up to a minute, and running atmosphereforce and /ms weather forces end
The holder cannot reach MythicProxy About 8 seconds after its last renewal it pauses until the lease is renewed Lost the MythicProxy lease for the weather of <world>; it pauses here until the lease is renewed
A receiving server cannot reach MythicProxy It keeps showing the last weather it received
MythicProxy is disabled while the server runs The server hands the weather over if it holds it, and its weather stays paused until the next restart MythicProxy was disabled; the shared weather stays paused until the next restart
The hub does not answer during a takeover The server asks again every 10 seconds, and without an answer never starts fresh weather or overwrites saved weather
A saved region on the hub is damaged That area starts fresh Shared weather region <x>,<z> of <world> is damaged (<error>); that area starts fresh
The holder cannot save to the hub The region stays unsaved and is tried again Could not save the weather of world <world> to the MythicProxy hub: <error>
Servers of the group are in different seasons The weather follows the holder's calendar <server> is in season <theirs> while this server, which simulates the shared weather of <world>, is in season <mine>; the weather follows this server's calendar, once per server

Checking

While MythicProxy is in use, /ms atmosphere info shows a shared: line under each running world. Until MythicProxy names the server, the world shows not started instead.

Status Meaning
not shared (this server simulates its own weather) shared-weather-group is none, or the name does not fit the auto rule
shared with group <group>, simulated on this server This server holds the lease
shared with group <group>, received from <server> <server> simulates it
shared with group <group>, waiting for a server to take it over Nobody holds the lease right now
shared with group <group>, paused: this server lost its MythicProxy lease This server held the lease and could not renew it

The world line above it counts the regions: here and frozen on the holder, received on the others. /ms atmosphere stats shows from <server> for a received region. See Debugging.

Updated Nov 11, 2026