Tags
Creators
Details
1.3.0
Compatibility
Changes
Rainfall 1.3.0 — Connected Water
Rainfall now brings growing, connected puddles and terrain-following runoff to Minecraft 1.21.1 on NeoForge.
Water and rain
- Puddles grow and join neighboring water surfaces as rain accumulates.
- Water collects in low spots and flows over lower edges, creating streams along the terrain.
- Walls and raised ground guide the flow; new obstacles stop blocked channels.
- Choose Vanilla or Smooth independently for puddles and streams.
- Animated water surfaces and expanding rings respond to actual raindrop impacts.
- Water uses Minecraft's animated water textures, biome colors, and resource packs.
- Optional Iris support lets shaderpacks treat Rainfall surfaces as water. The final appearance depends on the shaderpack; no specific shaderpack was used for the screenshots.
Engine improvements
- Reused rendering buffers and bounded terrain/path caches reduce repeated allocations and lookups.
- Fair simulation budgets spread work across active chunks and limit work per update.
- Water exchange conserves the existing water amount instead of creating extra water while spreading.
Settings and compatibility
Press K, or run /rainfallclient settings, to change water styles, animation, rings, and quality settings.
Minecraft 1.21.1 · NeoForge · Client-side · Beta
This remains a shallow visual water simulation. It does not place vanilla water blocks. Dense water scenes and higher detail settings can still add rendering cost.
Validation
- Java 21 build completed successfully.
- All 42 automated tests passed.
- Tested in Minecraft with connected puddles, slopes, obstacles, streams, and actual drop-impact rings.
Screenshots are new, unedited in-game captures with Smooth puddles and streams and vanilla rendering.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:bydGE60j:YtkNTMmy"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:bydGE60j:YtkNTMmy"
}

