Community listing page, reviews here may not be monitored by the author.
LocalizedWeather
No reviews yet
Replaces Minecraft's global weather with per-zone localized rain, snow, and thunderstorms that cycle automatically with biome-aware rules and visible storm clouds.
Community voices
Reviews
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
Must be installed on both the client and the server.
Works on the client or the server alone, but does more when on both.
Varies by version.
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
<div align="center">
<img src="src/main/resources/assets/localweather/icon.png" alt="Localized Weather" width="128">
# Localized Weather
**Weather stops being a switch and starts being a place.**
Rain, snow, hail and thunderstorms happen independently across the world — you can stand in sunshine and watch a storm roll in over the hills.
[](https://github.com/rustybusgaming/LocalizedWeather/actions/workflows/build.yml)
[](https://www.minecraft.net/)
[](https://fabricmc.net/)
[](https://adoptium.net/)
[](LICENSE)
</div>
---
## What it does
Vanilla Minecraft has one weather state for the entire world. Localized Weather replaces it with a grid of **256×256 block zones**, each rolling its own weather on its own schedule — then blends the seams so you never see a hard edge.
The result is weather with geography. Storms have a place they *are*, a direction they came from, and a direction they are going.
## Features
| | Feature | What you actually see |
| :-: | ------- | --------------------- |
| 🗺️ | **Localized zones** | Every 256×256 block zone runs its own weather independently |
| ⛈️ | **Moving thunderstorm cells** | Single-cell storms drift along the wind, grow, and dissipate on their own life span |
| 🌧️ | **Rain wall & rain bands** | A leaning curtain of rain hangs under each storm core, with trailing bands arcing behind it — and it stays drawn when the storm is far away |
| 🌾 | **Biome-aware rules** | Biomes without precipitation stay dry, cold biomes turn rain into snow, and each zone is decided from a 5×5 surface sample so one desert patch doesn't dry out a whole zone |
| 🧊 | **Hailstorms** | Occasional icy squalls with custom falling hail particles |
| 🌬️ | **Wind-driven fronts** | A global wind direction slowly rotates; weather propagates from upwind neighbours |
| 🎚️ | **Seamless transitions** | Rain, fog and sky colour blend bilinearly across zone boundaries over 20 seconds |
| ☁️ | **Storm clouds** | Blocky, Minecraft-style cloud layers over stormy zones, visible from far off |
| 🌑 | **Directional darkening** | Sky, fog and clouds darken *toward* the approaching storm, not uniformly |
| 🔊 | **Directional thunder** | Thunder plays from the bearing of the storm, with proximity-based volume |
| 🧩 | **Renderer-friendly** | Drives Minecraft's own cloud renderer instead of replacing it, so mods like VulkanMod still work |
## How it works
Weather happens automatically. There is nothing to configure and no commands to learn.
| Phase | Duration | Notes |
| ----- | -------- | ----- |
| Clear skies | 10 min – 2.5 h | Then a chance of weather rolls |
| Rain / hail / storm | 10 – 20 min | Before the zone clears again |
| Zone transitions | 20 s | Blended across the boundary, never a hard cut |
| Wind shift | every 2.5 – 10 min | Slowly rotates; fronts follow it |
A zone that turns thundery spawns a **storm cell** — a travelling core 70–130 blocks across that lives for 4–10 minutes, moves at roughly 3–6 blocks per second, and carries its rain wall and rain bands with it. When the core passes over you, the rain arrives with the wall and leaves once it has gone by.
Storms further away than the fog horizon are not culled. Their geometry is projected onto the horizon at unchanged apparent size, so a thunderstorm several zones out is still visible as a rain wall on the skyline.
## Requirements
- Minecraft **1.21.9 – 1.21.11**, or **26.1 – 26.2** (see the version table below)
- **Fabric Loader 0.19.2+** on 1.21.x, **0.19.5+** on 26.x
- **Fabric API**
- Java 21 on 1.21.x, Java 25 on 26.x
## Installation
1. Install [Fabric Loader](https://fabricmc.net/use/installer/) and [Fabric API](https://modrinth.com/mod/fabric-api) — or NeoForge, which needs neither
2. Drop the jar matching your Minecraft version and loader into your `mods` folder
3. Launch the game — the weather takes it from there
Jars are named `localweather-<mod version>+<Minecraft version>[-loader].jar`.
A plain name is the Fabric build; `-quilt` and `-neoforge` are the others.
For example, on Minecraft 26.1.2: `localweather-1.4.0+26.1.2.jar` for Fabric,
`localweather-1.4.0+26.1.2-neoforge.jar` for NeoForge.
**Optional:** [Mod Menu](https://modrinth.com/mod/modmenu) for in-game mod info.
## Versions & loaders
| Minecraft | Build target | Fabric API | Java |
| --------- | ------------ | ---------- | ---- |
| 1.21.9 | `-Pmc=1.21.9` | 0.134.1+1.21.9 | 21 |
| 1.21.10 | `-Pmc=1.21.10` | 0.138.4+1.21.10 | 21 |
| 1.21.11 | `-Pmc=1.21.11` | 0.141.6+1.21.11 | 21 |
| 26.1, 26.1.1, 26.1.2 | `-Pmc=26.1.2` (default) | 0.155.3+26.1.2 | 25 |
| 26.2 | `-Pmc=26.2` | 0.159.0+26.2 | 25 |
One repository builds every target; each is a file in [`versions/`](versions).
The 1.21.x and 26.x lines keep separate source directories because Minecraft is
named differently between them — see [docs/loader-support.md](docs/loader-support.md).
| Loader | Status |
| ------ | ------ |
| **Fabric** | ✅ Primary supported loader |
| **Quilt** | ✅ 1.21.x only — Quilt publishes no intermediate namespace for 26.x, so no Quilt jar is built there |
| **NeoForge** | ✅ [`neoforge/`](neoforge/README.md) on 26.1.x — the simulation, the full client presentation and the server-side mixins, all from the same shared code as Fabric |
| **Forge** | 🚧 [`forge/`](forge/README.md) on 26.1.x, at the same level as NeoForge — server-side simulation from the same shared code, no client sync, not a release artifact |
See [docs/loader-support.md](docs/loader-support.md) for the full breakdown.
## For mod developers
`LocalWeatherAPI` lets other mods query localized weather at any position.
```java
import net.fentbusgaming.localweather.api.LocalWeatherAPI;
// What is the weather right here?
WeatherZone.WeatherType weather = LocalWeatherAPI.getWeatherAt(world, pos);
if (LocalWeatherAPI.isThunderingAt(world, pos)) {
// lightning-rod logic, mob spawning, crop growth...
}
// Is this position under a moving storm core?
if (LocalWeatherAPI.isInStormCell(world, pos)) {
// heavy rain, reduced visibility...
}
// Where is the weather coming from?
double windX = LocalWeatherAPI.getWindDirectionX();
double windZ = LocalWeatherAPI.getWindDirectionZ();
```
Also available: `getWeatherInZone`, `getTargetWeatherInZone`, `getTransitionProgress`, `isRainingAt`, `isHailingAt`, `getStormCells`, `getStormCellAt`, `toZoneCoords` and `getZoneSizeBlocks`.
## Building from source
```bash
git clone https://github.com/rustybusgaming/LocalizedWeather.git
cd LocalizedWeather
./gradlew build # default target (26.1.2)
./gradlew build -Pmc=26.2 # any target in versions/
./gradlew printTarget # show the resolved target
```
Needs **JDK 21** for the 1.21.x targets and **JDK 25** for 26.x. You do not have
to install either: Gradle fetches a matching JDK on first build if your machine
has none. Jars land in `build/libs/` as
`localweather-<mod version>+<minecraft version>.jar`.
On 1.21.9 the storm clouds, hail particles and rain wall are absent — Fabric API
for that version exposes no world-render hook. Everything else works there.
## Credits
Idea by **Mr. Random** on Discord.
## License
[MIT](LICENSE)
Localized Weather
Weather stops being a switch and starts being a place.
Rain, snow, hail and thunderstorms happen independently across the world — you can stand in sunshine and watch a storm roll in over the hills.
What it does
Vanilla Minecraft has one weather state for the entire world. Localized Weather replaces it with a grid of 256×256 block zones, each rolling its own weather on its own schedule — then blends the seams so you never see a hard edge.
The result is weather with geography. Storms have a place they are, a direction they came from, and a direction they are going.
Features
| Feature | What you actually see | |
|---|---|---|
| 🗺️ | Localized zones | Every 256×256 block zone runs its own weather independently |
| ⛈️ | Moving thunderstorm cells | Single-cell storms drift along the wind, grow, and dissipate on their own life span |
| 🌧️ | Rain wall & rain bands | A leaning curtain of rain hangs under each storm core, with trailing bands arcing behind it — and it stays drawn when the storm is far away |
| 🌾 | Biome-aware rules | Biomes without precipitation stay dry, cold biomes turn rain into snow, and each zone is decided from a 5×5 surface sample so one desert patch doesn't dry out a whole zone |
| 🧊 | Hailstorms | Occasional icy squalls with custom falling hail particles |
| 🌬️ | Wind-driven fronts | A global wind direction slowly rotates; weather propagates from upwind neighbours |
| 🎚️ | Seamless transitions | Rain, fog and sky colour blend bilinearly across zone boundaries over 20 seconds |
| ☁️ | Storm clouds | Blocky, Minecraft-style cloud layers over stormy zones, visible from far off |
| 🌑 | Directional darkening | Sky, fog and clouds darken toward the approaching storm, not uniformly |
| 🔊 | Directional thunder | Thunder plays from the bearing of the storm, with proximity-based volume |
| 🧩 | Renderer-friendly | Drives Minecraft's own cloud renderer instead of replacing it, so mods like VulkanMod still work |
How it works
Weather happens automatically. There is nothing to configure and no commands to learn.
| Phase | Duration | Notes |
|---|---|---|
| Clear skies | 10 min – 2.5 h | Then a chance of weather rolls |
| Rain / hail / storm | 10 – 20 min | Before the zone clears again |
| Zone transitions | 20 s | Blended across the boundary, never a hard cut |
| Wind shift | every 2.5 – 10 min | Slowly rotates; fronts follow it |
A zone that turns thundery spawns a storm cell — a travelling core 70–130 blocks across that lives for 4–10 minutes, moves at roughly 3–6 blocks per second, and carries its rain wall and rain bands with it. When the core passes over you, the rain arrives with the wall and leaves once it has gone by.
Storms further away than the fog horizon are not culled. Their geometry is projected onto the horizon at unchanged apparent size, so a thunderstorm several zones out is still visible as a rain wall on the skyline.
Requirements
- Minecraft 1.21.9 – 1.21.11, or 26.1 – 26.2 (see the version table below)
- Fabric Loader 0.19.2+ on 1.21.x, 0.19.5+ on 26.x
- Fabric API
- Java 21 on 1.21.x, Java 25 on 26.x
Installation
- Install Fabric Loader and Fabric API — or NeoForge, which needs neither
- Drop the jar matching your Minecraft version and loader into your
modsfolder - Launch the game — the weather takes it from there
Jars are named localweather-<mod version>+<Minecraft version>[-loader].jar.
A plain name is the Fabric build; -quilt and -neoforge are the others.
For example, on Minecraft 26.1.2: localweather-1.4.0+26.1.2.jar for Fabric,
localweather-1.4.0+26.1.2-neoforge.jar for NeoForge.
Optional: Mod Menu for in-game mod info.
Versions & loaders
| Minecraft | Build target | Fabric API | Java |
|---|---|---|---|
| 1.21.9 | -Pmc=1.21.9 |
0.134.1+1.21.9 | 21 |
| 1.21.10 | -Pmc=1.21.10 |
0.138.4+1.21.10 | 21 |
| 1.21.11 | -Pmc=1.21.11 |
0.141.6+1.21.11 | 21 |
| 26.1, 26.1.1, 26.1.2 | -Pmc=26.1.2 (default) |
0.155.3+26.1.2 | 25 |
| 26.2 | -Pmc=26.2 |
0.159.0+26.2 | 25 |
One repository builds every target; each is a file in versions/.
The 1.21.x and 26.x lines keep separate source directories because Minecraft is
named differently between them — see docs/loader-support.md.
| Loader | Status |
|---|---|
| Fabric | ✅ Primary supported loader |
| Quilt | ✅ 1.21.x only — Quilt publishes no intermediate namespace for 26.x, so no Quilt jar is built there |
| NeoForge | ✅ neoforge/ on 26.1.x — the simulation, the full client presentation and the server-side mixins, all from the same shared code as Fabric |
| Forge | 🚧 forge/ on 26.1.x, at the same level as NeoForge — server-side simulation from the same shared code, no client sync, not a release artifact |
See docs/loader-support.md for the full breakdown.
For mod developers
LocalWeatherAPI lets other mods query localized weather at any position.
import net.fentbusgaming.localweather.api.LocalWeatherAPI;
// What is the weather right here?
WeatherZone.WeatherType weather = LocalWeatherAPI.getWeatherAt(world, pos);
if (LocalWeatherAPI.isThunderingAt(world, pos)) {
// lightning-rod logic, mob spawning, crop growth...
}
// Is this position under a moving storm core?
if (LocalWeatherAPI.isInStormCell(world, pos)) {
// heavy rain, reduced visibility...
}
// Where is the weather coming from?
double windX = LocalWeatherAPI.getWindDirectionX();
double windZ = LocalWeatherAPI.getWindDirectionZ();
Also available: getWeatherInZone, getTargetWeatherInZone, getTransitionProgress, isRainingAt, isHailingAt, getStormCells, getStormCellAt, toZoneCoords and getZoneSizeBlocks.
Building from source
git clone https://github.com/rustybusgaming/LocalizedWeather.git
cd LocalizedWeather
./gradlew build # default target (26.1.2)
./gradlew build -Pmc=26.2 # any target in versions/
./gradlew printTarget # show the resolved target
Needs JDK 21 for the 1.21.x targets and JDK 25 for 26.x. You do not have
to install either: Gradle fetches a matching JDK on first build if your machine
has none. Jars land in build/libs/ as
localweather-<mod version>+<minecraft version>.jar.
On 1.21.9 the storm clouds, hail particles and rain wall are absent — Fabric API for that version exposes no world-render hook. Everything else works there.
Credits
Idea by Mr. Random on Discord.
License
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers