Skip to content

Commit

Permalink
Mgv7: Add option to repeat surface biomes in floatlands
Browse files Browse the repository at this point in the history
  • Loading branch information
paramat committed Jul 21, 2017
1 parent 49920cf commit dc9e451
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 20 deletions.
6 changes: 3 additions & 3 deletions builtin/settingtypes.txt
Expand Up @@ -1151,11 +1151,11 @@ mgv6_np_apple_trees (Apple trees noise) noise_params 0, 1, (100, 100, 100), 3429
[***Mapgen v7]

# Map generation attributes specific to Mapgen v7.
# The 'ridges' flag enables the rivers.
# Floatlands are currently experimental and subject to change.
# 'ridges' enables the rivers.
# 'biomerepeat' causes surface biomes to repeat in the floatlands.
# Flags that are not specified in the flag string are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them.
mgv7_spflags (Mapgen v7 specific flags) flags mountains,ridges,nofloatlands,caverns mountains,ridges,floatlands,caverns,nomountains,noridges,nofloatlands,nocaverns
mgv7_spflags (Mapgen v7 specific flags) flags mountains,ridges,nofloatlands,caverns,biomerepeat mountains,ridges,floatlands,caverns,biomerepeat,nomountains,noridges,nofloatlands,nocaverns,nobiomerepeat

# Controls width of tunnels, a smaller value creates wider tunnels.
mgv7_cave_width (Cave width) float 0.09
Expand Down
8 changes: 4 additions & 4 deletions minetest.conf.example
Expand Up @@ -1390,12 +1390,12 @@
#### Mapgen v7

# Map generation attributes specific to Mapgen v7.
# The 'ridges' flag enables the rivers.
# Floatlands are currently experimental and subject to change.
# 'ridges' enables the rivers.
# 'biomerepeat' causes surface biomes to repeat in the floatlands.
# Flags that are not specified in the flag string are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them.
# type: flags possible values: mountains, ridges, floatlands, caverns, nomountains, noridges, nofloatlands, nocaverns
# mgv7_spflags = mountains,ridges,nofloatlands,caverns
# type: flags possible values: mountains, ridges, floatlands, caverns, biomerepeat, nomountains, noridges, nofloatlands, nocaverns, nobiomerepeat
# mgv7_spflags = mountains,ridges,nofloatlands,caverns,biomerepeat

# Controls width of tunnels, a smaller value creates wider tunnels.
# type: float
Expand Down
21 changes: 14 additions & 7 deletions src/mapgen_v7.cpp
Expand Up @@ -40,11 +40,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,


FlagDesc flagdesc_mapgen_v7[] = {
{"mountains", MGV7_MOUNTAINS},
{"ridges", MGV7_RIDGES},
{"floatlands", MGV7_FLOATLANDS},
{"caverns", MGV7_CAVERNS},
{NULL, 0}
{"mountains", MGV7_MOUNTAINS},
{"ridges", MGV7_RIDGES},
{"floatlands", MGV7_FLOATLANDS},
{"caverns", MGV7_CAVERNS},
{"biomerepeat", MGV7_BIOMEREPEAT},
{NULL, 0}
};


Expand Down Expand Up @@ -285,6 +286,12 @@ void MapgenV7::makeChunk(BlockMakeData *data)

blockseed = getBlockSeed2(full_node_min, seed);

// Get zero level for biomes and decorations
// Optionally repeat surface biomes in floatlands
s16 biome_zero_level = ((spflags & MGV7_FLOATLANDS) &&
(spflags & MGV7_BIOMEREPEAT) && node_max.Y >= shadow_limit) ?
floatland_level - 1 : water_level - 1;

// Generate base and mountain terrain
// An initial heightmap is no longer created here for use in generateRidgeTerrain()
s16 stone_surface_max_y = generateTerrain();
Expand All @@ -298,7 +305,7 @@ void MapgenV7::makeChunk(BlockMakeData *data)

// Init biome generator, place biome-specific nodes, and build biomemap
biomegen->calcBiomeNoise(node_min);
MgStoneType stone_type = generateBiomes(water_level - 1);
MgStoneType stone_type = generateBiomes(biome_zero_level);

// Generate caverns, tunnels and classic caves
if (flags & MG_CAVES) {
Expand All @@ -323,7 +330,7 @@ void MapgenV7::makeChunk(BlockMakeData *data)
// Generate the registered decorations
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed,
node_min, node_max, water_level - 1);
node_min, node_max, biome_zero_level);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed,
Expand Down
14 changes: 8 additions & 6 deletions src/mapgen_v7.h
Expand Up @@ -23,19 +23,21 @@ with this program; if not, write to the Free Software Foundation, Inc.,

#include "mapgen.h"

//////////// Mapgen V7 flags
#define MGV7_MOUNTAINS 0x01
#define MGV7_RIDGES 0x02
#define MGV7_FLOATLANDS 0x04
#define MGV7_CAVERNS 0x08
/////////////// Mapgen V7 flags
#define MGV7_MOUNTAINS 0x01
#define MGV7_RIDGES 0x02
#define MGV7_FLOATLANDS 0x04
#define MGV7_CAVERNS 0x08
#define MGV7_BIOMEREPEAT 0x10

class BiomeManager;

extern FlagDesc flagdesc_mapgen_v7[];


struct MapgenV7Params : public MapgenParams {
u32 spflags = MGV7_MOUNTAINS | MGV7_RIDGES | MGV7_CAVERNS;
u32 spflags = MGV7_MOUNTAINS | MGV7_RIDGES |
MGV7_CAVERNS | MGV7_BIOMEREPEAT;
float cave_width = 0.09f;
s16 large_cave_depth = -33;
s16 lava_depth = -256;
Expand Down

0 comments on commit dc9e451

Please sign in to comment.