Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
mapgen_v6.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2010-2018 celeron55, Perttu Ahola <celeron55@gmail.com>
4Copyright (C) 2013-2018 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
5Copyright (C) 2014-2018 paramat
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU Lesser General Public License as published by
9the Free Software Foundation; either version 2.1 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU Lesser General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public License along
18with this program; if not, write to the Free Software Foundation, Inc.,
1951 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20*/
21
22#pragma once
23
24#include "mapgen.h"
25#include "noise.h"
26
27#define MGV6_AVERAGE_MUD_AMOUNT 4
28#define MGV6_DESERT_STONE_BASE -32
29#define MGV6_ICE_BASE 0
30#define MGV6_FREQ_HOT 0.4
31#define MGV6_FREQ_SNOW -0.4
32#define MGV6_FREQ_TAIGA 0.5
33#define MGV6_FREQ_JUNGLE 0.5
34
36#define MGV6_JUNGLES 0x01
37#define MGV6_BIOMEBLEND 0x02
38#define MGV6_MUDFLOW 0x04
39#define MGV6_SNOWBIOMES 0x08
40#define MGV6_FLAT 0x10
41#define MGV6_TREES 0x20
42#define MGV6_TEMPLES 0x40
43
44
46
47
49{
55};
56
57
59 float freq_desert = 0.45f;
60 float freq_beach = 0.15f;
61 s16 dungeon_ymin = -31000;
62 s16 dungeon_ymax = 31000;
63
75
77 ~MapgenV6Params() = default;
78
79 void readParams(const Settings *settings);
80 void writeParams(Settings *settings) const;
81 void setDefaultSettings(Settings *settings);
82};
83
84
85class MapgenV6 : public Mapgen {
86public:
89
95
108
110
115
129
134
136 ~MapgenV6();
137
138 virtual MapgenType getType() const { return MAPGEN_V6; }
139
140 void makeChunk(BlockMakeData *data);
143
144 float baseTerrainLevel(float terrain_base, float terrain_higher,
145 float steepness, float height_select);
146 virtual float baseTerrainLevelFromNoise(v2s16 p);
147 virtual float baseTerrainLevelFromMap(v2s16 p);
148 virtual float baseTerrainLevelFromMap(int index);
149
150 s16 find_stone_level(v2s16 p2d);
151 bool block_is_underground(u64 seed, v3s16 blockpos);
152
153 float getHumidity(v2s16 p);
154 float getTreeAmount(v2s16 p);
156 float getMudAmount(int index);
157 bool getHaveBeach(int index);
159 BiomeV6Type getBiome(int index, v2s16 p);
160
161 u32 get_blockseed(u64 seed, v3s16 p);
162
163 virtual void calculateNoise();
164 int generateGround();
165 void addMud();
166 void flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos);
167 void moveMud(u32 remove_index, u32 place_index,
168 u32 above_remove_index, v2s16 pos, v3s16 em);
169 void growGrass();
171 virtual void generateCaves(int max_stone_y);
172};
Definition: emerge.h:98
Definition: mapgen_v6.h:85
void addMud()
Definition: mapgen_v6.cpp:712
v3s16 central_area_size
Definition: mapgen_v6.h:94
float baseTerrainLevel(float terrain_base, float terrain_higher, float steepness, float height_select)
Definition: mapgen_v6.cpp:274
virtual float baseTerrainLevelFromMap(v2s16 p)
Definition: mapgen_v6.cpp:321
content_t c_lava_source
Definition: mapgen_v6.h:121
content_t c_dirt_with_snow
Definition: mapgen_v6.h:125
virtual void calculateNoise()
Definition: mapgen_v6.cpp:643
void growGrass()
Definition: mapgen_v6.cpp:1040
content_t c_dirt_with_grass
Definition: mapgen_v6.h:118
v3s16 node_max
Definition: mapgen_v6.h:91
Noise * noise_height_select
Definition: mapgen_v6.h:99
content_t c_water_source
Definition: mapgen_v6.h:120
content_t c_cobble
Definition: mapgen_v6.h:130
content_t c_stair_desert_stone
Definition: mapgen_v6.h:133
virtual MapgenType getType() const
Definition: mapgen_v6.h:138
virtual void generateCaves(int max_stone_y)
Definition: mapgen_v6.cpp:1091
float freq_desert
Definition: mapgen_v6.h:111
content_t c_sand
Definition: mapgen_v6.h:119
int ystride
Definition: mapgen_v6.h:87
u32 get_blockseed(u64 seed, v3s16 p)
Definition: mapgen_v6.cpp:487
s16 find_stone_level(v2s16 p2d)
Definition: mapgen_v6.cpp:238
void flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos)
Definition: mapgen_v6.cpp:773
content_t c_gravel
Definition: mapgen_v6.h:122
u32 spflags
Definition: mapgen_v6.h:88
Noise * noise_terrain_higher
Definition: mapgen_v6.h:97
float freq_beach
Definition: mapgen_v6.h:112
float getTreeAmount(v2s16 p)
Definition: mapgen_v6.cpp:390
content_t c_ice
Definition: mapgen_v6.h:128
bool getHaveBeach(int index)
Definition: mapgen_v6.cpp:430
void moveMud(u32 remove_index, u32 place_index, u32 above_remove_index, v2s16 pos, v3s16 em)
Definition: mapgen_v6.cpp:887
content_t c_mossycobble
Definition: mapgen_v6.h:131
int getGroundLevelAtPoint(v2s16 p)
Definition: mapgen_v6.cpp:343
NoiseParams * np_trees
Definition: mapgen_v6.h:106
content_t c_desert_sand
Definition: mapgen_v6.h:124
int generateGround()
Definition: mapgen_v6.cpp:667
content_t c_dirt
Definition: mapgen_v6.h:117
Noise * noise_humidity
Definition: mapgen_v6.h:103
content_t c_snow
Definition: mapgen_v6.h:126
bool block_is_underground(u64 seed, v3s16 blockpos)
Definition: mapgen_v6.cpp:258
content_t c_stone
Definition: mapgen_v6.h:116
s16 dungeon_ymin
Definition: mapgen_v6.h:113
int getSpawnLevelAtPoint(v2s16 p)
Definition: mapgen_v6.cpp:349
content_t c_snowblock
Definition: mapgen_v6.h:127
Noise * noise_biome
Definition: mapgen_v6.h:102
Noise * noise_beach
Definition: mapgen_v6.h:101
virtual float baseTerrainLevelFromNoise(v2s16 p)
Definition: mapgen_v6.cpp:302
Noise * noise_steepness
Definition: mapgen_v6.h:98
void makeChunk(BlockMakeData *data)
Definition: mapgen_v6.cpp:496
bool getHaveAppleTree(v2s16 p)
Definition: mapgen_v6.cpp:405
Noise * noise_terrain_base
Definition: mapgen_v6.h:96
v3s16 full_node_max
Definition: mapgen_v6.h:93
void placeTreesAndJungleGrass()
Definition: mapgen_v6.cpp:926
content_t c_stair_cobble
Definition: mapgen_v6.h:132
BiomeV6Type getBiome(v2s16 p)
Definition: mapgen_v6.cpp:363
content_t c_desert_stone
Definition: mapgen_v6.h:123
NoiseParams * np_cave
Definition: mapgen_v6.h:104
Noise * noise_mud
Definition: mapgen_v6.h:100
float getHumidity(v2s16 p)
Definition: mapgen_v6.cpp:371
NoiseParams np_dungeons
Definition: mapgen_v6.h:109
~MapgenV6()
Definition: mapgen_v6.cpp:151
s16 dungeon_ymax
Definition: mapgen_v6.h:114
float getMudAmount(int index)
Definition: mapgen_v6.cpp:417
NoiseParams * np_apple_trees
Definition: mapgen_v6.h:107
NoiseParams * np_humidity
Definition: mapgen_v6.h:105
v3s16 node_min
Definition: mapgen_v6.h:90
v3s16 full_node_min
Definition: mapgen_v6.h:92
Definition: mapgen.h:168
s32 seed
Definition: mapgen.h:170
Definition: noise.h:146
Definition: settings.h:124
core::vector2d< s16 > v2s16
Definition: irr_v2d.h:27
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
static LightingParams params
Definition: light.cpp:40
MapgenType
Definition: mapgen.h:117
@ MAPGEN_V6
Definition: mapgen.h:125
BiomeV6Type
Definition: mapgen_v6.h:49
@ BT_NORMAL
Definition: mapgen_v6.h:50
@ BT_TUNDRA
Definition: mapgen_v6.h:53
@ BT_TAIGA
Definition: mapgen_v6.h:54
@ BT_JUNGLE
Definition: mapgen_v6.h:52
@ BT_DESERT
Definition: mapgen_v6.h:51
FlagDesc flagdesc_mapgen_v6[]
Definition: mapgen_v6.cpp:43
u16 content_t
Definition: mapnode.h:37
Definition: emerge.h:51
Definition: string.h:80
Definition: mapgen.h:129
Definition: mapgen_v6.h:58
void setDefaultSettings(Settings *settings)
Definition: mapgen_v6.cpp:226
void writeParams(Settings *settings) const
Definition: mapgen_v6.cpp:204
NoiseParams np_height_select
Definition: mapgen_v6.h:67
float freq_beach
Definition: mapgen_v6.h:60
MapgenV6Params()
Definition: mapgen_v6.cpp:166
s16 dungeon_ymax
Definition: mapgen_v6.h:62
NoiseParams np_humidity
Definition: mapgen_v6.h:72
NoiseParams np_apple_trees
Definition: mapgen_v6.h:74
NoiseParams np_steepness
Definition: mapgen_v6.h:66
~MapgenV6Params()=default
void readParams(const Settings *settings)
Definition: mapgen_v6.cpp:182
NoiseParams np_biome
Definition: mapgen_v6.h:70
NoiseParams np_cave
Definition: mapgen_v6.h:71
NoiseParams np_terrain_higher
Definition: mapgen_v6.h:65
NoiseParams np_terrain_base
Definition: mapgen_v6.h:64
float freq_desert
Definition: mapgen_v6.h:59
NoiseParams np_trees
Definition: mapgen_v6.h:73
NoiseParams np_beach
Definition: mapgen_v6.h:69
NoiseParams np_mud
Definition: mapgen_v6.h:68
s16 dungeon_ymin
Definition: mapgen_v6.h:61
Definition: noise.h:119
static std::string p(std::string path)
Definition: test_filesys.cpp:64