Waterbodies are places with stationary water, such as lakes and reservoirs. For the Map, I am using the osmfilter.exe to filter for the following osm elements:

water=lake OR water=reservoir OR natural=water OR landuse=reservoir

This is always enabled, because a lot of large lakes, like Lake Michigan, would otherwise be missing.


Floating water (natural or artificial) is devided into 2 segments. Rivers are the wider regions where boats and/or ships can navigate. These will be filtered by the following osmfilter command:

waterway=river OR water=river OR waterway=riverbank OR waterway=canal

Filtering the osm file with this options will result in A LOT of Rivers, because there are no categories like small / medium / large rivers in osm. To work around this problem, I filter the data one more time in QGIS, using the following code:

"other_tags" != '%"intermittent"=>"yes"%' AND "name" != ''

This way, we only get the larger rivers with actual names that are present the whole year. It’s not a perfect way to filter by these tags, but a good workaround.


The smaller areas where the source of the rivers are located are called Streams. They can only be generated at scales 1:100 or larger. This feature includes all un-named osm rivers and actual streams. The osmfilter command looks like this:

waterway=river OR water=river OR waterway=stream

Here you can see the different amount of lakes, rivers and streams in osm. Be careful with the streams option, because it will produce A LOT of water in your Map. You can also see that there are some fine “lines” in the lakes image. This is because some rivers also containing the “natural=water” tag. This is an inconsistency in the osm naming conventions.

Technical implementation

In QGIS, the multipolygons (for Waterbodies) and lines (for Rivers and Streams) are displayed using a geometry-generator. This geometry-generator creates a “Shapeburst fill” and a certain thickness for the lines and fills the geometry with a color gradient from black to white.

This color gradient will later be used in the worldpainter script to determine the depth of the water from 1 to 5 blocks deep.

©️ OpenStreetMap Contributors https://www.openstreetmap.org/copyright


All direct information about the Map are displayed with a large letter and italic. This way, you can easily identify if I was talking about the Map feature or something else, like osm features. Example: “Rivers” (the waterways you see in Minecraft) and “rivers” (the data in the osm files)