13rac1 / Minecraft-Water-Erosion

Minecraft Mod - Adds natural water erosion to create streams and waterfalls
https://www.curseforge.com/minecraft/mc-mods/water-erosion
GNU General Public License v3.0
4 stars 1 forks source link
fabricmc-mod minecraft-fabric-mod minecraft-forge-mod minecraft-mod

Water Erosion Mod for Minecraft Java Edition

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.

Goal

Implement Erosion as though it were a regular Minecraft feature making the world more dynamic. It should not break existing gameplay or enable cheating.

Features

Decay hierarchy:

Media

Water Erosion Mod Playlist

Install

Download from: https://www.curseforge.com/minecraft/mc-mods/water-erosion

Supported versions:

Previously Supported Versions:

TODO features

Test Areas

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

Seed 4465334863609190468

Tested on Minecraft 1.20.1

Inspiration

Development

Code structure

Common erosion code is in the erosion-common directory and symlinked into the Forge, NeoForge, and Fabric codebases.

Build

The Makefile will build Forge, NeoForge, and Fabric versions

make

Unit tests

Erosion functionality is unit tested within the Forge codebase, run the unit tests with:

make test

Forge Dependencies

Forge dependency versions are specified in:

Check versions at: https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json

Fabric Dependencies

Fabric dependency versions are specified in:

Check versions at: https://fabricmc.net/develop/

Technical Notes

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.

License

Copyright 2020+ by Brad Erickson. Licensed GPLv3.