Monolith finder

Introduction

The map displays how Minecraft versions inf-20100611 to a1.1.2_01 generated terrain. Blue and green areas correspond roughly to water and land. Monoliths are displayed in bright red.

Theory

Monoliths generate if the 2-dimensional 10-octave hill-noise (idk how other people call that one) takes on values below -512 and the 2d 16-octave terrain noise's absolute value is greater or equal 8000. The hill-noise is processed into a hillFactor, which is used in the formula (noiseY - processedDepthNoise) * 12.0 / hillFactor, which is usually responsible for making lower Y levels more likely to be solid than higher ones (influenced of course by variations in the noise to cause mountains and such). If this hillFactor is barely above 0, then the terrain exactly follows the depth noise without any floaty bits (which are caused by 3-d elements).

However, if the hillFactor is below 0, then this formula is effectively negated. Lower Y levels are now more likely to be air and higher ones are more likely to be solid. The edge of solid/air is still at the Y-level determined by processedDepthNoise, the sides have just flipped.

It is technically possible for an area with negative hillFactor to not appear as a monolith, because the absolute value of hillFactor is so large that it can be overpowered by interpolation noise. This is very unlikely and affected areas would likely be surrounded by "normal" monoliths.

Tech

The map is calculated in Rust, by applying octaves of noise until it's known which color to use. Most pixels are nowhere close to being a monolith, so they can be discarded after applying just a few octaves. The code was compiled to WebAssembly and is running in a few WebWorkers, meaning that the calculation is quick and takes advantage of multiple cores. The rendered images are then displayed using Leaflet.

Webpack is doing a whole load of stuff here that I don't properly understand (and would prefer didn't exist), but the template used it, so it's here.

Graphic design is my passion