mirror of
https://github.com/minetest/minetest.git
synced 2025-02-17 02:22:26 +01:00
Mgv7: Add option to repeat surface biomes in floatlands
This commit is contained in:
@ -1151,11 +1151,11 @@ mgv6_np_apple_trees (Apple trees noise) noise_params 0, 1, (100, 100, 100), 3429
|
|||||||
[***Mapgen v7]
|
[***Mapgen v7]
|
||||||
|
|
||||||
# Map generation attributes specific to Mapgen v7.
|
# Map generation attributes specific to Mapgen v7.
|
||||||
# The 'ridges' flag enables the rivers.
|
# 'ridges' enables the rivers.
|
||||||
# Floatlands are currently experimental and subject to change.
|
# '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 that are not specified in the flag string are not modified from the default.
|
||||||
# Flags starting with 'no' are used to explicitly disable them.
|
# 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.
|
# Controls width of tunnels, a smaller value creates wider tunnels.
|
||||||
mgv7_cave_width (Cave width) float 0.09
|
mgv7_cave_width (Cave width) float 0.09
|
||||||
|
@ -1390,12 +1390,12 @@
|
|||||||
#### Mapgen v7
|
#### Mapgen v7
|
||||||
|
|
||||||
# Map generation attributes specific to Mapgen v7.
|
# Map generation attributes specific to Mapgen v7.
|
||||||
# The 'ridges' flag enables the rivers.
|
# 'ridges' enables the rivers.
|
||||||
# Floatlands are currently experimental and subject to change.
|
# '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 that are not specified in the flag string are not modified from the default.
|
||||||
# Flags starting with 'no' are used to explicitly disable them.
|
# Flags starting with 'no' are used to explicitly disable them.
|
||||||
# type: flags possible values: mountains, ridges, floatlands, caverns, nomountains, noridges, nofloatlands, nocaverns
|
# type: flags possible values: mountains, ridges, floatlands, caverns, biomerepeat, nomountains, noridges, nofloatlands, nocaverns, nobiomerepeat
|
||||||
# mgv7_spflags = mountains,ridges,nofloatlands,caverns
|
# mgv7_spflags = mountains,ridges,nofloatlands,caverns,biomerepeat
|
||||||
|
|
||||||
# Controls width of tunnels, a smaller value creates wider tunnels.
|
# Controls width of tunnels, a smaller value creates wider tunnels.
|
||||||
# type: float
|
# type: float
|
||||||
|
@ -40,11 +40,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
|
|
||||||
FlagDesc flagdesc_mapgen_v7[] = {
|
FlagDesc flagdesc_mapgen_v7[] = {
|
||||||
{"mountains", MGV7_MOUNTAINS},
|
{"mountains", MGV7_MOUNTAINS},
|
||||||
{"ridges", MGV7_RIDGES},
|
{"ridges", MGV7_RIDGES},
|
||||||
{"floatlands", MGV7_FLOATLANDS},
|
{"floatlands", MGV7_FLOATLANDS},
|
||||||
{"caverns", MGV7_CAVERNS},
|
{"caverns", MGV7_CAVERNS},
|
||||||
{NULL, 0}
|
{"biomerepeat", MGV7_BIOMEREPEAT},
|
||||||
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -285,6 +286,12 @@ void MapgenV7::makeChunk(BlockMakeData *data)
|
|||||||
|
|
||||||
blockseed = getBlockSeed2(full_node_min, seed);
|
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
|
// Generate base and mountain terrain
|
||||||
// An initial heightmap is no longer created here for use in generateRidgeTerrain()
|
// An initial heightmap is no longer created here for use in generateRidgeTerrain()
|
||||||
s16 stone_surface_max_y = generateTerrain();
|
s16 stone_surface_max_y = generateTerrain();
|
||||||
@ -298,7 +305,7 @@ void MapgenV7::makeChunk(BlockMakeData *data)
|
|||||||
|
|
||||||
// Init biome generator, place biome-specific nodes, and build biomemap
|
// Init biome generator, place biome-specific nodes, and build biomemap
|
||||||
biomegen->calcBiomeNoise(node_min);
|
biomegen->calcBiomeNoise(node_min);
|
||||||
MgStoneType stone_type = generateBiomes(water_level - 1);
|
MgStoneType stone_type = generateBiomes(biome_zero_level);
|
||||||
|
|
||||||
// Generate caverns, tunnels and classic caves
|
// Generate caverns, tunnels and classic caves
|
||||||
if (flags & MG_CAVES) {
|
if (flags & MG_CAVES) {
|
||||||
@ -323,7 +330,7 @@ void MapgenV7::makeChunk(BlockMakeData *data)
|
|||||||
// Generate the registered decorations
|
// Generate the registered decorations
|
||||||
if (flags & MG_DECORATIONS)
|
if (flags & MG_DECORATIONS)
|
||||||
m_emerge->decomgr->placeAllDecos(this, blockseed,
|
m_emerge->decomgr->placeAllDecos(this, blockseed,
|
||||||
node_min, node_max, water_level - 1);
|
node_min, node_max, biome_zero_level);
|
||||||
|
|
||||||
// Generate the registered ores
|
// Generate the registered ores
|
||||||
m_emerge->oremgr->placeAllOres(this, blockseed,
|
m_emerge->oremgr->placeAllOres(this, blockseed,
|
||||||
|
@ -23,11 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
#include "mapgen.h"
|
#include "mapgen.h"
|
||||||
|
|
||||||
//////////// Mapgen V7 flags
|
/////////////// Mapgen V7 flags
|
||||||
#define MGV7_MOUNTAINS 0x01
|
#define MGV7_MOUNTAINS 0x01
|
||||||
#define MGV7_RIDGES 0x02
|
#define MGV7_RIDGES 0x02
|
||||||
#define MGV7_FLOATLANDS 0x04
|
#define MGV7_FLOATLANDS 0x04
|
||||||
#define MGV7_CAVERNS 0x08
|
#define MGV7_CAVERNS 0x08
|
||||||
|
#define MGV7_BIOMEREPEAT 0x10
|
||||||
|
|
||||||
class BiomeManager;
|
class BiomeManager;
|
||||||
|
|
||||||
@ -35,7 +36,8 @@ extern FlagDesc flagdesc_mapgen_v7[];
|
|||||||
|
|
||||||
|
|
||||||
struct MapgenV7Params : public MapgenParams {
|
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;
|
float cave_width = 0.09f;
|
||||||
s16 large_cave_depth = -33;
|
s16 large_cave_depth = -33;
|
||||||
s16 lava_depth = -256;
|
s16 lava_depth = -256;
|
||||||
|
Reference in New Issue
Block a user