Water Erosion makes the world evolve with streams and waterfalls.
Find Forest brooks and Mountain creeks during your explorations. Dirt and sand wash away to deepen the stream bed and cut banks into the environment. The landscapes become more diverse and unique. Pass through a dry Desert valley one day and find it flooded the next. A stream may even change direction to dry up the original flow.
Implement Erosion as though it were a regular Minecraft feature making the world more dynamic. It should not break existing gameplay or enable cheating.
Decay hierarchy:
Download from: https://www.curseforge.com/minecraft/mc-mods/water-erosion
Supported versions:
Previously Supported Versions:
Create each world, teleport to the specified location, and, optionally, change
the randomTickSpeed
setting to speed up the process.
/teleport X Y Z
/gamerule randomTickSpeed NUMBER # Suggest 150
Tested on Minecraft 1.20.1
-388 73 258
- A massive waterfall covers the side of a mountain peak in a swamp-538 85 1133
- A waterfall fills the floor of a narrow forest crevice -638 72 1459
- A stream finds multiple routes through the trees in a forestCommon erosion code is in the erosion-common
directory and symlinked into the Forge, NeoForge, and Fabric codebases.
The Makefile
will build Forge, NeoForge, and Fabric versions
make
Erosion functionality is unit tested within the Forge codebase, run the unit tests with:
make test
Forge dependency versions are specified in:
build.gradle
src/main/resources/META-INF/mods.toml
Check versions at: https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
Fabric dependency versions are specified in:
gradle.properties
src/main/resources/fabric.mod.json
Check versions at: https://fabricmc.net/develop/
This "core mod" adds code to the Water block randomTick()
functions using the
Mixin framework. The code and functionality is structured to
reduce system CPU use, but a CPU increase may still be noticed.
The Minecraft in-game UI shows the opposite water level value than the true block
metadata. Data level==1
is displayed as Targeted Fluid level:7. Data level==7
is displayed as Targeted Fluid level:1.
randomTick()
is only called by the Minecraft runtime for a 128 block radius
around the player, so the odds of erosion occuring are set fairly high. The odds
should be reduced if random tick distance or speed is increased.
Source water blocks at or below the world sea level are ignored to reduce CPU use.
Copyright 2020+ by Brad Erickson. Licensed GPLv3.