-enum OreType {
- ORE_SCATTER,
- ORE_SHEET,
- ORE_CLAYLIKE
-};
-
-#define ORE_RANGE_ACTUAL 1
-#define ORE_RANGE_MIRROR 2
-
-class Ore {
-public:
- std::string ore_name;
- std::string wherein_name;
- content_t ore;
- content_t wherein; // the node to be replaced
- u32 clust_scarcity; // ore cluster has a 1-in-clust_scarcity chance of appearing at a node
- s16 clust_num_ores; // how many ore nodes are in a chunk
- s16 clust_size; // how large (in nodes) a chunk of ore is
- s16 height_min;
- s16 height_max;
- u8 ore_param2; // to set node-specific attributes
- u32 flags; // attributes for this ore
- float nthresh; // threshhold for noise at which an ore is placed
- NoiseParams *np; // noise for distribution of clusters (NULL for uniform scattering)
- Noise *noise;
-
- Ore() {
- ore = CONTENT_IGNORE;
- wherein = CONTENT_IGNORE;
- np = NULL;
- noise = NULL;
- }
-
- virtual ~Ore();
-
- void resolveNodeNames(INodeDefManager *ndef);
- void placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
- virtual void generate(ManualMapVoxelManipulator *vm, int seed,
- u32 blockseed, v3s16 nmin, v3s16 nmax) = 0;
-};
-
-class OreScatter : public Ore {
- ~OreScatter() {}
- virtual void generate(ManualMapVoxelManipulator *vm, int seed,
- u32 blockseed, v3s16 nmin, v3s16 nmax);
-};
-
-class OreSheet : public Ore {
- ~OreSheet() {}
- virtual void generate(ManualMapVoxelManipulator *vm, int seed,
- u32 blockseed, v3s16 nmin, v3s16 nmax);
-};
-
-Ore *createOre(OreType type);
-
-
-enum DecorationType {
- DECO_SIMPLE,
- DECO_SCHEMATIC,
- DECO_LSYSTEM
-};
-
-#if 0
-struct CutoffData {
- VoxelArea a;
- Decoration *deco;
- //v3s16 p;
- //v3s16 size;
- //s16 height;
-
- CutoffData(s16 x, s16 y, s16 z, s16 h) {
- p = v3s16(x, y, z);
- height = h;
- }
-};
-#endif
-
-class Decoration {
-public:
- int mapseed;
- std::string place_on_name;
- content_t c_place_on;
- s16 sidelen;
- float fill_ratio;
- NoiseParams *np;
-
- std::set<u8> biomes;
- //std::list<CutoffData> cutoffs;
- //JMutex cutoff_mutex;
-
- Decoration();
- virtual ~Decoration();
-
- virtual void resolveNodeNames(INodeDefManager *ndef);
- void placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
- void placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
-
- virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) = 0;
- virtual int getHeight() = 0;
- virtual std::string getName() = 0;
-};
-
-class DecoSimple : public Decoration {
-public:
- std::string deco_name;
- std::string spawnby_name;
- content_t c_deco;
- content_t c_spawnby;
- s16 deco_height;
- s16 deco_height_max;
- s16 nspawnby;
-
- std::vector<std::string> decolist_names;
- std::vector<content_t> c_decolist;
-
- ~DecoSimple() {}
-
- void resolveNodeNames(INodeDefManager *ndef);
- virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p);
- virtual int getHeight();
- virtual std::string getName();
-};
-
-class DecoSchematic : public Decoration {
-public:
- std::string filename;
-
- std::vector<std::string> *node_names;
- std::vector<content_t> c_nodes;
-
- u32 flags;
- v3s16 size;
- MapNode *schematic;
-
- DecoSchematic();
- ~DecoSchematic();
-
- void resolveNodeNames(INodeDefManager *ndef);
- virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p);
- virtual int getHeight();
- virtual std::string getName();
-
- bool loadSchematicFile();
- void saveSchematicFile(INodeDefManager *ndef);
-
- bool getSchematicFromMap(Map *map, v3s16 p1, v3s16 p2);
- void placeStructure(Map *map, v3s16 p);
- void applyProbabilities(std::vector<std::pair<v3s16, u8> > *plist, v3s16 p0);
-};
-
-void build_nnlist_and_update_ids(MapNode *nodes, u32 nodecount,
- std::vector<content_t> *usednodes);
-
-/*
-class DecoLSystem : public Decoration {
-public:
- virtual void generate(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
-};
-*/
-
-Decoration *createDecoration(DecorationType type);
-