Serene Seasons X Distant Horizons
A small compatibility mod for Minecraft 1.21.1 (Fabric) that makes Serene Seasons and Distant Horizons play nicely together.
NOTE: While this could work in single player, I built this out for a multiplayer instance and so it may not fully work. It wouldn't be a huge leap for someone to fork this for single player, though. Also, while I'm relatively confident it will work with 1.21.X versions, I'm only able to say I've tested it with 1.21.1.
The Problem
If you've used both of these mods together, you've probably noticed it: the trees and grass in the distance look completely wrong for the current season. Green forests in the middle of autumn, orange leaves in summer.
What It Does
Whenever the season changes, or when you join a world or travel between dimensions, the mod automatically updates Distant Horizons so that distant LODs show the correct seasonal colors.
If you ever notice colors are still off after a season change, the /ssdh-client reload command will force everything to refresh immediately.
Requirements
- Minecraft 1.21.1 (Fabric)
- Fabric Loader >= 0.16.5
- Fabric API
- Serene Seasons (Fabric 1.21.1)
- Distant Horizons 2.4.5-b+
Installation
Drop the jar into your mods folder alongside Serene Seasons and Distant Horizons. No configuration required.
For server owners, installing the mod on your server as well unlocks the /ssdh season admin command for manually setting the current season.
Commands
Client-side (no permissions required)
| Command | Description |
|---|---|
/ssdh-client status |
Shows the current season and sub-season. |
/ssdh-client skip |
Skips forward to the next sub-season. Great for testing. Requires the mod on the server too. |
/ssdh-client reload |
Forces an immediate color refresh if something still looks off. |
Server-side (operator level 2 required)
| Command | Description |
|---|---|
/ssdh season <subseason> |
Sets the season directly. Valid values: early_spring, mid_spring, late_spring, early_summer, mid_summer, late_summer, early_autumn, mid_autumn, late_autumn, early_winter, mid_winter, late_winter. |
Notes
- After a season change, distant LODs update gradually as you move around rather than all at once. This is intentional — it avoids a jarring visual pop. Most of the landscape will correct itself within a minute of normal play. If you want everything updated immediately, use
/ssdh-client reload. - Client-side only. Safe to use on any server that has Serene Seasons installed.
License
MIT — see LICENSE
Source
github.com/ItsThatNova/serene-seasons-x-distant-horizons
How to Install Serene Seasons X Distant Horizons (Mod)
Serene Seasons X Distant Horizons by ItsThatNova is verified for Fabric across Minecraft versions 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6 (latest release: 1.0.3, file size: 328 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6) and platform (Fabric).
- Make sure you have the compatible loader or environment installed for Fabric.
- Move the downloaded Serene Seasons X Distant Horizons file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version## 1.0.3 - Architecture refactor + delayed refresh scheduler
### DHCompat refactor
- Replaced reflection-based level access with DH public core interfaces:
ILevelWrapper.getDhLevel()replaces reflectedClientLevelWrapper.dhLevelfieldIClientLevelWrapper.clearBlockColorCache()replaces reflected call on the concrete wrapperDhSectionPos.encode(byte, int, int)called directly as a public static method- Reflection is now reserved only for truly private internals:
AbstractDhTintGetter.COLOR_BY_BLOCK_BIOME_PAIR(static tint cache)AbstractDhTintGetter.BIOME_BY_RESOURCE_STRING(static biome cache, newly cleared)DhClientLevel.reloadPos(long)(soft-reload hook)
### Delayed refresh scheduler
- Introduced a generation-token scheduler to prevent stale delayed jobs from firing after
- Live season change: caches cleared immediately, then a single delayed visible refresh
- World load / rejoin: caches cleared immediately, then a single delayed refresh fires
- Caches are cleared a second time immediately before the delayed refresh executes, to
### Cache clearing
- Added
BIOME_BY_RESOURCE_STRINGclearing alongside the existing tint cache clear.
AbstractDhTintGetter at startup and cleared on everyrefresh cycle.
### SeasonMetaTexture
- Added
SeasonMetaTexturesingleton: registers two 1×1 textures (ssdh:season_meta
ssdh:season_phase) with the client texture manager.- Updated every client tick by SSCompat; zeroed on world exit.
- Intended for custom shaders or resource packs that want to sample the current season
A small compatibility mod for Minecraft 1.21.1 (Fabric) that makes [Serene Seasons](https://modrinth.com/mod/serene-seasons) and [Distant Horizons](https://modrinth.com/mod/distanthorizons) play nicely together.
- NOTE:**
## The Problem
If you've used both of these mods together, you've probably noticed it: the trees and grass in the distance look completely wrong for the current season. Green forests in the middle of autumn, orange leaves in summer.
## What It Does
Whenever the season changes, or when you join a world or travel between dimensions, the mod automatically updates Distant Horizons so that distant LODs show the correct seasonal colors.
If you ever notice colors are still off after a season change, the
/ssdh-client reload command will force everything to refresh immediately.## Requirements
- Minecraft 1.21.1 (Fabric)
- Fabric Loader >= 0.16.5
- Fabric API
- [Serene Seasons](https://modrinth.com/mod/serene-seasons) (Fabric 1.21.1)
- [Distant Horizons](https://modrinth.com/mod/distanthorizons) 2.4.5-b+
## Installation
Drop the jar into your mods folder alongside Serene Seasons and Distant Horizons. No configuration required.
For server owners, installing the mod on your server as well unlocks the
/ssdh season admin command for manually setting the current season.## Commands
### Client-side (no permissions required)
| Command | Description |
|---|---|
|
/ssdh-client status | Shows the current season and sub-season. ||
/ssdh-client skip | Skips forward to the next sub-season. Great for testing. Requires the mod on the server too. ||
/ssdh-client reload | Forces an immediate color refresh if something still looks off. |### Server-side (operator level 2 required)
| Command | Description |
|---|---|
|
/ssdh season <subseason> | Sets the season directly. Valid values: early_spring, mid_spring, late_spring, early_summer, mid_summer, late_summer, early_autumn, mid_autumn, late_autumn, early_winter, mid_winter, late_winter. |## Notes
- After a season change, distant LODs update gradually as you move around rather than all at once. This is intentional — it avoids a jarring visual pop. Most of the landscape will correct itself within a minute of normal play. If you want everything updated immediately, use
/ssdh-client reload. - Client-side only. Safe to use on any server that has Serene Seasons installed.
## License
MIT — see [LICENSE](LICENSE)
## Source
[github.com/ItsThatNova/serene-seasons-x-distant-horizons](https://github.com/ItsThatNova/serene-seasons-x-distant-horizons)