- virtual void makeChunk(BlockMakeData *data) {};
- virtual int getGroundLevelAtPoint(v2s16 p) = 0;
-
- //Legacy functions for Farmesh (pending removal)
- static bool get_have_beach(u64 seed, v2s16 p2d);
- static double tree_amount_2d(u64 seed, v2s16 p);
- static s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision);
+ MMVManip *vm;
+ INodeDefManager *ndef;
+
+ u32 blockseed;
+ s16 *heightmap;
+ u8 *biomemap;
+ float *heatmap;
+ float *humidmap;
+ v3s16 csize;
+
+ GenerateNotifier gennotify;
+
+ Mapgen();
+ Mapgen(int mapgenid, MapgenParams *params, EmergeManager *emerge);
+ virtual ~Mapgen();
+
+ static u32 getBlockSeed(v3s16 p, int seed);
+ static u32 getBlockSeed2(v3s16 p, int seed);
+ s16 findGroundLevelFull(v2s16 p2d);
+ s16 findGroundLevel(v2s16 p2d, s16 ymin, s16 ymax);
+ s16 findLiquidSurface(v2s16 p2d, s16 ymin, s16 ymax);
+ void updateHeightmap(v3s16 nmin, v3s16 nmax);
+ void updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nmax);
+
+ void setLighting(u8 light, v3s16 nmin, v3s16 nmax);
+ void lightSpread(VoxelArea &a, v3s16 p, u8 light);
+ void calcLighting(v3s16 nmin, v3s16 nmax, v3s16 full_nmin, v3s16 full_nmax,
+ bool propagate_shadow = true);
+ void propagateSunlight(v3s16 nmin, v3s16 nmax, bool propagate_shadow);
+ void spreadLight(v3s16 nmin, v3s16 nmax);
+
+ virtual void makeChunk(BlockMakeData *data) {}
+ virtual int getGroundLevelAtPoint(v2s16 p) { return 0; }
+
+ // getSpawnLevelAtPoint() is a function within each mapgen that returns a
+ // suitable y co-ordinate for player spawn ('suitable' usually meaning
+ // within 16 nodes of water_level). If a suitable spawn level cannot be
+ // found at the specified (X, Z) 'MAX_MAP_GENERATION_LIMIT' is returned to
+ // signify this and to cause Server::findSpawnPos() to try another (X, Z).
+ virtual int getSpawnLevelAtPoint(v2s16 p) { return 0; }
+
+private:
+ DISABLE_CLASS_COPY(Mapgen);