#include "util/string.h"
#include "util/container.h"
-#define MAPGEN_DEFAULT MAPGEN_V6
-#define MAPGEN_DEFAULT_NAME "v6"
+#define MAPGEN_DEFAULT MAPGEN_V7
+#define MAPGEN_DEFAULT_NAME "v7"
/////////////////// Mapgen flags
-#define MG_TREES 0x01
+#define MG_TREES 0x01 // Deprecated. Moved into mgv6 flags
#define MG_CAVES 0x02
#define MG_DUNGEONS 0x04
-#define MG_FLAT 0x08
+#define MG_FLAT 0x08 // Deprecated. Moved into mgv6 flags
#define MG_LIGHT 0x10
#define MG_DECORATIONS 0x20
MAPGEN_INVALID,
};
-struct MapgenSpecificParams {
- virtual void readParams(const Settings *settings) = 0;
- virtual void writeParams(Settings *settings) const = 0;
- virtual ~MapgenSpecificParams() {}
-};
-
struct MapgenParams {
- std::string mg_name;
+ MapgenType mgtype;
s16 chunksize;
u64 seed;
s16 water_level;
+ s16 mapgen_limit;
u32 flags;
BiomeParams *bparams;
- MapgenSpecificParams *sparams;
MapgenParams() :
- mg_name(MAPGEN_DEFAULT_NAME),
+ mgtype(MAPGEN_DEFAULT),
chunksize(5),
seed(0),
water_level(1),
+ mapgen_limit(MAX_MAP_GENERATION_LIMIT),
flags(MG_CAVES | MG_LIGHT | MG_DECORATIONS),
- bparams(NULL),
- sparams(NULL)
+ bparams(NULL)
{
}
virtual ~MapgenParams();
- void load(const Settings &settings);
- void save(Settings &settings) const;
+ virtual void readParams(const Settings *settings);
+ virtual void writeParams(Settings *settings) const;
};
public:
s32 seed;
int water_level;
+ int mapgen_limit;
u32 flags;
bool generating;
int id;
static const char *getMapgenName(MapgenType mgtype);
static Mapgen *createMapgen(MapgenType mgtype, int mgid,
MapgenParams *params, EmergeManager *emerge);
- static MapgenSpecificParams *createMapgenParams(MapgenType mgtype);
+ static MapgenParams *createMapgenParams(MapgenType mgtype);
static void getMapgenNames(std::vector<const char *> *mgnames, bool include_hidden);
private:
virtual ~MapgenBasic();
virtual void generateCaves(s16 max_stone_y, s16 large_cave_depth);
+ virtual bool generateCaverns(s16 max_stone_y);
virtual void generateDungeons(s16 max_stone_y, MgStoneType stone_type);
virtual MgStoneType generateBiomes();
virtual void dustTopNodes();
// Content required for generateBiomes
content_t c_stone;
- content_t c_water_source;
- content_t c_river_water_source;
content_t c_desert_stone;
content_t c_sandstone;
+ content_t c_water_source;
+ content_t c_river_water_source;
+ content_t c_lava_source;
// Content required for generateDungeons
content_t c_cobble;
content_t c_stair_cobble;
content_t c_mossycobble;
+ content_t c_stair_desert_stone;
content_t c_sandstonebrick;
- content_t c_stair_sandstonebrick;
+ content_t c_stair_sandstone_block;
int ystride;
int zstride;
NoiseParams np_cave1;
NoiseParams np_cave2;
+ NoiseParams np_cavern;
float cave_width;
+ float cavern_limit;
+ float cavern_taper;
+ float cavern_threshold;
};
#endif