Biomes: New surface node for rainforest
[oweals/minetest_game.git] / mods / default / mapgen.lua
1 --
2 -- Aliases for map generators
3 --
4
5 minetest.register_alias("mapgen_stone", "default:stone")
6 minetest.register_alias("mapgen_dirt", "default:dirt")
7 minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass")
8 minetest.register_alias("mapgen_sand", "default:sand")
9 minetest.register_alias("mapgen_water_source", "default:water_source")
10 minetest.register_alias("mapgen_river_water_source", "default:river_water_source")
11 minetest.register_alias("mapgen_lava_source", "default:lava_source")
12 minetest.register_alias("mapgen_gravel", "default:gravel")
13 minetest.register_alias("mapgen_desert_stone", "default:desert_stone")
14 minetest.register_alias("mapgen_desert_sand", "default:desert_sand")
15 minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow")
16 minetest.register_alias("mapgen_snowblock", "default:snowblock")
17 minetest.register_alias("mapgen_snow", "default:snow")
18 minetest.register_alias("mapgen_ice", "default:ice")
19 minetest.register_alias("mapgen_sandstone", "default:sandstone")
20
21 -- Flora
22
23 minetest.register_alias("mapgen_tree", "default:tree")
24 minetest.register_alias("mapgen_leaves", "default:leaves")
25 minetest.register_alias("mapgen_apple", "default:apple")
26 minetest.register_alias("mapgen_jungletree", "default:jungletree")
27 minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves")
28 minetest.register_alias("mapgen_junglegrass", "default:junglegrass")
29 minetest.register_alias("mapgen_pine_tree", "default:pine_tree")
30 minetest.register_alias("mapgen_pine_needles", "default:pine_needles")
31
32 -- Dungeons
33
34 minetest.register_alias("mapgen_cobble", "default:cobble")
35 minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
36 minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
37 minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
38 minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
39 minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebrick")
40
41
42 --
43 -- Register ores
44 --
45
46 -- Blob ores
47 -- These first to avoid other ores in blobs
48
49 -- Mgv6
50
51 function default.register_mgv6_blob_ores()
52
53         -- Clay
54         -- This first to avoid clay in sand blobs
55
56         minetest.register_ore({
57                 ore_type        = "blob",
58                 ore             = "default:clay",
59                 wherein         = {"default:sand"},
60                 clust_scarcity  = 16 * 16 * 16,
61                 clust_size      = 5,
62                 y_min           = -15,
63                 y_max           = 0,
64                 noise_threshold = 0.0,
65                 noise_params    = {
66                         offset = 0.5,
67                         scale = 0.2,
68                         spread = {x = 5, y = 5, z = 5},
69                         seed = -316,
70                         octaves = 1,
71                         persist = 0.0
72                 },
73         })
74
75         -- Sand
76
77         minetest.register_ore({
78                 ore_type        = "blob",
79                 ore             = "default:sand",
80                 wherein         = {"default:stone", "default:desert_stone"},
81                 clust_scarcity  = 16 * 16 * 16,
82                 clust_size      = 5,
83                 y_min           = -31,
84                 y_max           = 0,
85                 noise_threshold = 0.0,
86                 noise_params    = {
87                         offset = 0.5,
88                         scale = 0.2,
89                         spread = {x = 5, y = 5, z = 5},
90                         seed = 2316,
91                         octaves = 1,
92                         persist = 0.0
93                 },
94         })
95
96         -- Dirt
97
98         minetest.register_ore({
99                 ore_type        = "blob",
100                 ore             = "default:dirt",
101                 wherein         = {"default:stone"},
102                 clust_scarcity  = 16 * 16 * 16,
103                 clust_size      = 5,
104                 y_min           = -31,
105                 y_max           = 31000,
106                 noise_threshold = 0.0,
107                 noise_params    = {
108                         offset = 0.5,
109                         scale = 0.2,
110                         spread = {x = 5, y = 5, z = 5},
111                         seed = 17676,
112                         octaves = 1,
113                         persist = 0.0
114                 },
115         })
116
117         -- Gravel
118
119         minetest.register_ore({
120                 ore_type        = "blob",
121                 ore             = "default:gravel",
122                 wherein         = {"default:stone"},
123                 clust_scarcity  = 16 * 16 * 16,
124                 clust_size      = 5,
125                 y_min           = -31000,
126                 y_max           = 31000,
127                 noise_threshold = 0.0,
128                 noise_params    = {
129                         offset = 0.5,
130                         scale = 0.2,
131                         spread = {x = 5, y = 5, z = 5},
132                         seed = 766,
133                         octaves = 1,
134                         persist = 0.0
135                 },
136         })
137 end
138
139
140 -- All mapgens except mgv6
141
142 function default.register_blob_ores()
143
144         -- Clay
145
146         minetest.register_ore({
147                 ore_type        = "blob",
148                 ore             = "default:clay",
149                 wherein         = {"default:sand"},
150                 clust_scarcity  = 16 * 16 * 16,
151                 clust_size      = 5,
152                 y_min           = -15,
153                 y_max           = 0,
154                 noise_threshold = 0.0,
155                 noise_params    = {
156                         offset = 0.5,
157                         scale = 0.2,
158                         spread = {x = 5, y = 5, z = 5},
159                         seed = -316,
160                         octaves = 1,
161                         persist = 0.0
162                 },
163         })
164
165         -- Silver sand
166
167         minetest.register_ore({
168                 ore_type        = "blob",
169                 ore             = "default:silver_sand",
170                 wherein         = {"default:stone"},
171                 clust_scarcity  = 16 * 16 * 16,
172                 clust_size      = 5,
173                 y_min           = -31000,
174                 y_max           = 31000,
175                 noise_threshold = 0.0,
176                 noise_params    = {
177                         offset = 0.5,
178                         scale = 0.2,
179                         spread = {x = 5, y = 5, z = 5},
180                         seed = 2316,
181                         octaves = 1,
182                         persist = 0.0
183                 },
184                 biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
185                         "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
186                         "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
187                         "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
188                         "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
189                         "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
190                         "rainforest", "rainforest_swamp", "rainforest_ocean", "underground"}
191         })
192
193         -- Dirt
194
195         minetest.register_ore({
196                 ore_type        = "blob",
197                 ore             = "default:dirt",
198                 wherein         = {"default:stone"},
199                 clust_scarcity  = 16 * 16 * 16,
200                 clust_size      = 5,
201                 y_min           = -31,
202                 y_max           = 31000,
203                 noise_threshold = 0.0,
204                 noise_params    = {
205                         offset = 0.5,
206                         scale = 0.2,
207                         spread = {x = 5, y = 5, z = 5},
208                         seed = 17676,
209                         octaves = 1,
210                         persist = 0.0
211                 },
212                 biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
213                         "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore",
214                         "rainforest", "rainforest_swamp"}
215         })
216
217         -- Gravel
218
219         minetest.register_ore({
220                 ore_type        = "blob",
221                 ore             = "default:gravel",
222                 wherein         = {"default:stone"},
223                 clust_scarcity  = 16 * 16 * 16,
224                 clust_size      = 5,
225                 y_min           = -31000,
226                 y_max           = 31000,
227                 noise_threshold = 0.0,
228                 noise_params    = {
229                         offset = 0.5,
230                         scale = 0.2,
231                         spread = {x = 5, y = 5, z = 5},
232                         seed = 766,
233                         octaves = 1,
234                         persist = 0.0
235                 },
236                 biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
237                         "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
238                         "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
239                         "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
240                         "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
241                         "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
242                         "rainforest", "rainforest_swamp", "rainforest_ocean", "underground"}
243         })
244 end
245
246
247 -- Scatter ores
248 -- All mapgens
249
250 function default.register_ores()
251
252         -- Coal
253
254         minetest.register_ore({
255                 ore_type       = "scatter",
256                 ore            = "default:stone_with_coal",
257                 wherein        = "default:stone",
258                 clust_scarcity = 8 * 8 * 8,
259                 clust_num_ores = 9,
260                 clust_size     = 3,
261                 y_min          = 1025,
262                 y_max          = 31000,
263         })
264
265         minetest.register_ore({
266                 ore_type       = "scatter",
267                 ore            = "default:stone_with_coal",
268                 wherein        = "default:stone",
269                 clust_scarcity = 8 * 8 * 8,
270                 clust_num_ores = 8,
271                 clust_size     = 3,
272                 y_min          = -31000,
273                 y_max          = 64,
274         })
275
276         minetest.register_ore({
277                 ore_type       = "scatter",
278                 ore            = "default:stone_with_coal",
279                 wherein        = "default:stone",
280                 clust_scarcity = 24 * 24 * 24,
281                 clust_num_ores = 27,
282                 clust_size     = 6,
283                 y_min          = -31000,
284                 y_max          = 0,
285         })
286
287         -- Iron
288
289         minetest.register_ore({
290                 ore_type       = "scatter",
291                 ore            = "default:stone_with_iron",
292                 wherein        = "default:stone",
293                 clust_scarcity = 9 * 9 * 9,
294                 clust_num_ores = 12,
295                 clust_size     = 3,
296                 y_min          = 1025,
297                 y_max          = 31000,
298         })
299
300         minetest.register_ore({
301                 ore_type       = "scatter",
302                 ore            = "default:stone_with_iron",
303                 wherein        = "default:stone",
304                 clust_scarcity = 7 * 7 * 7,
305                 clust_num_ores = 5,
306                 clust_size     = 3,
307                 y_min          = -31000,
308                 y_max          = 0,
309         })
310
311         minetest.register_ore({
312                 ore_type       = "scatter",
313                 ore            = "default:stone_with_iron",
314                 wherein        = "default:stone",
315                 clust_scarcity = 24 * 24 * 24,
316                 clust_num_ores = 27,
317                 clust_size     = 6,
318                 y_min          = -31000,
319                 y_max          = -64,
320         })
321
322         -- Copper
323
324         minetest.register_ore({
325                 ore_type       = "scatter",
326                 ore            = "default:stone_with_copper",
327                 wherein        = "default:stone",
328                 clust_scarcity = 9 * 9 * 9,
329                 clust_num_ores = 5,
330                 clust_size     = 3,
331                 y_min          = 1025,
332                 y_max          = 31000,
333         })
334
335         minetest.register_ore({
336                 ore_type       = "scatter",
337                 ore            = "default:stone_with_copper",
338                 wherein        = "default:stone",
339                 clust_scarcity = 12 * 12 * 12,
340                 clust_num_ores = 4,
341                 clust_size     = 3,
342                 y_min          = -63,
343                 y_max          = -16,
344         })
345
346         minetest.register_ore({
347                 ore_type       = "scatter",
348                 ore            = "default:stone_with_copper",
349                 wherein        = "default:stone",
350                 clust_scarcity = 9 * 9 * 9,
351                 clust_num_ores = 5,
352                 clust_size     = 3,
353                 y_min          = -31000,
354                 y_max          = -64,
355         })
356
357         -- Gold
358
359         minetest.register_ore({
360                 ore_type       = "scatter",
361                 ore            = "default:stone_with_gold",
362                 wherein        = "default:stone",
363                 clust_scarcity = 13 * 13 * 13,
364                 clust_num_ores = 5,
365                 clust_size     = 3,
366                 y_min          = 1025,
367                 y_max          = 31000,
368         })
369
370         minetest.register_ore({
371                 ore_type       = "scatter",
372                 ore            = "default:stone_with_gold",
373                 wherein        = "default:stone",
374                 clust_scarcity = 15 * 15 * 15,
375                 clust_num_ores = 3,
376                 clust_size     = 2,
377                 y_min          = -255,
378                 y_max          = -64,
379         })
380
381         minetest.register_ore({
382                 ore_type       = "scatter",
383                 ore            = "default:stone_with_gold",
384                 wherein        = "default:stone",
385                 clust_scarcity = 13 * 13 * 13,
386                 clust_num_ores = 5,
387                 clust_size     = 3,
388                 y_min          = -31000,
389                 y_max          = -256,
390         })
391
392         -- Mese crystal
393
394         minetest.register_ore({
395                 ore_type       = "scatter",
396                 ore            = "default:stone_with_mese",
397                 wherein        = "default:stone",
398                 clust_scarcity = 14 * 14 * 14,
399                 clust_num_ores = 5,
400                 clust_size     = 3,
401                 y_min          = 1025,
402                 y_max          = 31000,
403         })
404
405         minetest.register_ore({
406                 ore_type       = "scatter",
407                 ore            = "default:stone_with_mese",
408                 wherein        = "default:stone",
409                 clust_scarcity = 18 * 18 * 18,
410                 clust_num_ores = 3,
411                 clust_size     = 2,
412                 y_min          = -255,
413                 y_max          = -64,
414         })
415
416         minetest.register_ore({
417                 ore_type       = "scatter",
418                 ore            = "default:stone_with_mese",
419                 wherein        = "default:stone",
420                 clust_scarcity = 14 * 14 * 14,
421                 clust_num_ores = 5,
422                 clust_size     = 3,
423                 y_min          = -31000,
424                 y_max          = -256,
425         })
426
427         -- Diamond
428
429         minetest.register_ore({
430                 ore_type       = "scatter",
431                 ore            = "default:stone_with_diamond",
432                 wherein        = "default:stone",
433                 clust_scarcity = 15 * 15 * 15,
434                 clust_num_ores = 4,
435                 clust_size     = 3,
436                 y_min          = 1025,
437                 y_max          = 31000,
438         })
439
440         minetest.register_ore({
441                 ore_type       = "scatter",
442                 ore            = "default:stone_with_diamond",
443                 wherein        = "default:stone",
444                 clust_scarcity = 17 * 17 * 17,
445                 clust_num_ores = 4,
446                 clust_size     = 3,
447                 y_min          = -255,
448                 y_max          = -128,
449         })
450
451         minetest.register_ore({
452                 ore_type       = "scatter",
453                 ore            = "default:stone_with_diamond",
454                 wherein        = "default:stone",
455                 clust_scarcity = 15 * 15 * 15,
456                 clust_num_ores = 4,
457                 clust_size     = 3,
458                 y_min          = -31000,
459                 y_max          = -256,
460         })
461
462         -- Mese block
463
464         minetest.register_ore({
465                 ore_type       = "scatter",
466                 ore            = "default:mese",
467                 wherein        = "default:stone",
468                 clust_scarcity = 36 * 36 * 36,
469                 clust_num_ores = 3,
470                 clust_size     = 2,
471                 y_min          = 1025,
472                 y_max          = 31000,
473         })
474
475         minetest.register_ore({
476                 ore_type       = "scatter",
477                 ore            = "default:mese",
478                 wherein        = "default:stone",
479                 clust_scarcity = 36 * 36 * 36,
480                 clust_num_ores = 3,
481                 clust_size     = 2,
482                 y_min          = -31000,
483                 y_max          = -1024,
484         })
485 end
486
487
488 --
489 -- Register biomes
490 --
491
492 -- All mapgens except mgv6
493
494 function default.register_biomes()
495
496         -- Icesheet
497
498         minetest.register_biome({
499                 name = "icesheet",
500                 node_dust = "default:snowblock",
501                 node_top = "default:snowblock",
502                 depth_top = 1,
503                 node_filler = "default:snowblock",
504                 depth_filler = 3,
505                 node_stone = "default:ice",
506                 node_water_top = "default:ice",
507                 depth_water_top = 10,
508                 --node_water = "",
509                 node_river_water = "default:ice",
510                 node_riverbed = "default:gravel",
511                 depth_riverbed = 2,
512                 y_min = -8,
513                 y_max = 31000,
514                 heat_point = 0,
515                 humidity_point = 73,
516         })
517
518         minetest.register_biome({
519                 name = "icesheet_ocean",
520                 node_dust = "default:snowblock",
521                 node_top = "default:sand",
522                 depth_top = 1,
523                 node_filler = "default:sand",
524                 depth_filler = 3,
525                 --node_stone = "",
526                 node_water_top = "default:ice",
527                 depth_water_top = 10,
528                 --node_water = "",
529                 --node_river_water = "",
530                 y_min = -112,
531                 y_max = -9,
532                 heat_point = 0,
533                 humidity_point = 73,
534         })
535
536         -- Tundra
537
538         minetest.register_biome({
539                 name = "tundra",
540                 node_dust = "default:snowblock",
541                 --node_top = ,
542                 --depth_top = ,
543                 --node_filler = ,
544                 --depth_filler = ,
545                 --node_stone = "",
546                 --node_water_top = "",
547                 --depth_water_top = ,
548                 --node_water = "",
549                 --node_river_water = "",
550                 node_riverbed = "default:gravel",
551                 depth_riverbed = 2,
552                 y_min = 2,
553                 y_max = 31000,
554                 heat_point = 0,
555                 humidity_point = 40,
556         })
557
558         minetest.register_biome({
559                 name = "tundra_beach",
560                 --node_dust = "",
561                 node_top = "default:gravel",
562                 depth_top = 1,
563                 node_filler = "default:gravel",
564                 depth_filler = 2,
565                 --node_stone = "",
566                 --node_water_top = "",
567                 --depth_water_top = ,
568                 --node_water = "",
569                 --node_river_water = "",
570                 node_riverbed = "default:gravel",
571                 depth_riverbed = 2,
572                 y_min = -3,
573                 y_max = 1,
574                 heat_point = 0,
575                 humidity_point = 40,
576         })
577
578         minetest.register_biome({
579                 name = "tundra_ocean",
580                 --node_dust = "",
581                 node_top = "default:sand",
582                 depth_top = 1,
583                 node_filler = "default:sand",
584                 depth_filler = 3,
585                 --node_stone = "",
586                 --node_water_top = "",
587                 --depth_water_top = ,
588                 --node_water = "",
589                 --node_river_water = "",
590                 node_riverbed = "default:gravel",
591                 depth_riverbed = 2,
592                 y_min = -112,
593                 y_max = -4,
594                 heat_point = 0,
595                 humidity_point = 40,
596         })
597
598         -- Taiga
599
600         minetest.register_biome({
601                 name = "taiga",
602                 node_dust = "default:snow",
603                 node_top = "default:dirt_with_snow",
604                 depth_top = 1,
605                 node_filler = "default:dirt",
606                 depth_filler = 3,
607                 --node_stone = "",
608                 --node_water_top = "",
609                 --depth_water_top = ,
610                 --node_water = "",
611                 --node_river_water = "",
612                 node_riverbed = "default:sand",
613                 depth_riverbed = 2,
614                 y_min = 2,
615                 y_max = 31000,
616                 heat_point = 25,
617                 humidity_point = 70,
618         })
619
620         minetest.register_biome({
621                 name = "taiga_ocean",
622                 --node_dust = "",
623                 node_top = "default:sand",
624                 depth_top = 1,
625                 node_filler = "default:sand",
626                 depth_filler = 3,
627                 --node_stone = "",
628                 --node_water_top = "",
629                 --depth_water_top = ,
630                 --node_water = "",
631                 --node_river_water = "",
632                 node_riverbed = "default:sand",
633                 depth_riverbed = 2,
634                 y_min = -112,
635                 y_max = 1,
636                 heat_point = 25,
637                 humidity_point = 70,
638         })
639
640         -- Snowy grassland
641
642         minetest.register_biome({
643                 name = "snowy_grassland",
644                 node_dust = "default:snow",
645                 node_top = "default:dirt_with_snow",
646                 depth_top = 1,
647                 node_filler = "default:dirt",
648                 depth_filler = 1,
649                 --node_stone = "",
650                 --node_water_top = "",
651                 --depth_water_top = ,
652                 --node_water = "",
653                 --node_river_water = "",
654                 node_riverbed = "default:sand",
655                 depth_riverbed = 2,
656                 y_min = 5,
657                 y_max = 31000,
658                 heat_point = 20,
659                 humidity_point = 35,
660         })
661
662         minetest.register_biome({
663                 name = "snowy_grassland_ocean",
664                 --node_dust = "",
665                 node_top = "default:sand",
666                 depth_top = 1,
667                 node_filler = "default:sand",
668                 depth_filler = 3,
669                 --node_stone = "",
670                 --node_water_top = "",
671                 --depth_water_top = ,
672                 --node_water = "",
673                 --node_river_water = "",
674                 node_riverbed = "default:sand",
675                 depth_riverbed = 2,
676                 y_min = -112,
677                 y_max = 4,
678                 heat_point = 20,
679                 humidity_point = 35,
680         })
681
682         -- Grassland
683
684         minetest.register_biome({
685                 name = "grassland",
686                 --node_dust = "",
687                 node_top = "default:dirt_with_grass",
688                 depth_top = 1,
689                 node_filler = "default:dirt",
690                 depth_filler = 1,
691                 --node_stone = "",
692                 --node_water_top = "",
693                 --depth_water_top = ,
694                 --node_water = "",
695                 --node_river_water = "",
696                 node_riverbed = "default:sand",
697                 depth_riverbed = 2,
698                 y_min = 6,
699                 y_max = 31000,
700                 heat_point = 50,
701                 humidity_point = 35,
702         })
703
704         minetest.register_biome({
705                 name = "grassland_dunes",
706                 --node_dust = "",
707                 node_top = "default:sand",
708                 depth_top = 1,
709                 node_filler = "default:sand",
710                 depth_filler = 2,
711                 --node_stone = "",
712                 --node_water_top = "",
713                 --depth_water_top = ,
714                 --node_water = "",
715                 --node_river_water = "",
716                 node_riverbed = "default:sand",
717                 depth_riverbed = 2,
718                 y_min = 5,
719                 y_max = 5,
720                 heat_point = 50,
721                 humidity_point = 35,
722         })
723
724         minetest.register_biome({
725                 name = "grassland_ocean",
726                 --node_dust = "",
727                 node_top = "default:sand",
728                 depth_top = 1,
729                 node_filler = "default:sand",
730                 depth_filler = 3,
731                 --node_stone = "",
732                 --node_water_top = "",
733                 --depth_water_top = ,
734                 --node_water = "",
735                 --node_river_water = "",
736                 node_riverbed = "default:sand",
737                 depth_riverbed = 2,
738                 y_min = -112,
739                 y_max = 4,
740                 heat_point = 50,
741                 humidity_point = 35,
742         })
743
744         -- Coniferous forest
745
746         minetest.register_biome({
747                 name = "coniferous_forest",
748                 --node_dust = "",
749                 node_top = "default:dirt_with_grass",
750                 depth_top = 1,
751                 node_filler = "default:dirt",
752                 depth_filler = 3,
753                 --node_stone = "",
754                 --node_water_top = "",
755                 --depth_water_top = ,
756                 --node_water = "",
757                 --node_river_water = "",
758                 node_riverbed = "default:sand",
759                 depth_riverbed = 2,
760                 y_min = 6,
761                 y_max = 31000,
762                 heat_point = 45,
763                 humidity_point = 70,
764         })
765
766         minetest.register_biome({
767                 name = "coniferous_forest_dunes",
768                 --node_dust = "",
769                 node_top = "default:sand",
770                 depth_top = 1,
771                 node_filler = "default:sand",
772                 depth_filler = 3,
773                 --node_stone = "",
774                 --node_water_top = "",
775                 --depth_water_top = ,
776                 --node_water = "",
777                 --node_river_water = "",
778                 node_riverbed = "default:sand",
779                 depth_riverbed = 2,
780                 y_min = 5,
781                 y_max = 5,
782                 heat_point = 45,
783                 humidity_point = 70,
784         })
785
786         minetest.register_biome({
787                 name = "coniferous_forest_ocean",
788                 --node_dust = "",
789                 node_top = "default:sand",
790                 depth_top = 1,
791                 node_filler = "default:sand",
792                 depth_filler = 3,
793                 --node_stone = "",
794                 --node_water_top = "",
795                 --depth_water_top = ,
796                 --node_water = "",
797                 --node_river_water = "",
798                 node_riverbed = "default:sand",
799                 depth_riverbed = 2,
800                 y_min = -112,
801                 y_max = 4,
802                 heat_point = 45,
803                 humidity_point = 70,
804         })
805
806         -- Deciduous forest
807
808         minetest.register_biome({
809                 name = "deciduous_forest",
810                 --node_dust = "",
811                 node_top = "default:dirt_with_grass",
812                 depth_top = 1,
813                 node_filler = "default:dirt",
814                 depth_filler = 3,
815                 --node_stone = "",
816                 --node_water_top = "",
817                 --depth_water_top = ,
818                 --node_water = "",
819                 --node_river_water = "",
820                 node_riverbed = "default:sand",
821                 depth_riverbed = 2,
822                 y_min = 1,
823                 y_max = 31000,
824                 heat_point = 60,
825                 humidity_point = 68,
826         })
827
828         minetest.register_biome({
829                 name = "deciduous_forest_shore",
830                 --node_dust = "",
831                 node_top = "default:dirt",
832                 depth_top = 1,
833                 node_filler = "default:dirt",
834                 depth_filler = 3,
835                 --node_stone = "",
836                 --node_water_top = "",
837                 --depth_water_top = ,
838                 --node_water = "",
839                 --node_river_water = "",
840                 node_riverbed = "default:sand",
841                 depth_riverbed = 2,
842                 y_min = -1,
843                 y_max = 0,
844                 heat_point = 60,
845                 humidity_point = 68,
846         })
847
848         minetest.register_biome({
849                 name = "deciduous_forest_ocean",
850                 --node_dust = "",
851                 node_top = "default:sand",
852                 depth_top = 1,
853                 node_filler = "default:sand",
854                 depth_filler = 3,
855                 --node_stone = "",
856                 --node_water_top = "",
857                 --depth_water_top = ,
858                 --node_water = "",
859                 --node_river_water = "",
860                 node_riverbed = "default:sand",
861                 depth_riverbed = 2,
862                 y_min = -112,
863                 y_max = -2,
864                 heat_point = 60,
865                 humidity_point = 68,
866         })
867
868         -- Desert
869
870         minetest.register_biome({
871                 name = "desert",
872                 --node_dust = "",
873                 node_top = "default:desert_sand",
874                 depth_top = 1,
875                 node_filler = "default:desert_sand",
876                 depth_filler = 1,
877                 node_stone = "default:desert_stone",
878                 --node_water_top = "",
879                 --depth_water_top = ,
880                 --node_water = "",
881                 --node_river_water = "",
882                 node_riverbed = "default:sand",
883                 depth_riverbed = 2,
884                 y_min = 5,
885                 y_max = 31000,
886                 heat_point = 92,
887                 humidity_point = 16,
888         })
889
890         minetest.register_biome({
891                 name = "desert_ocean",
892                 --node_dust = "",
893                 node_top = "default:sand",
894                 depth_top = 1,
895                 node_filler = "default:sand",
896                 depth_filler = 3,
897                 node_stone = "default:desert_stone",
898                 --node_water_top = "",
899                 --depth_water_top = ,
900                 --node_water = "",
901                 --node_river_water = "",
902                 node_riverbed = "default:sand",
903                 depth_riverbed = 2,
904                 y_min = -112,
905                 y_max = 4,
906                 heat_point = 92,
907                 humidity_point = 16,
908         })
909
910         -- Sandstone desert
911
912         minetest.register_biome({
913                 name = "sandstone_desert",
914                 --node_dust = "",
915                 node_top = "default:sand",
916                 depth_top = 1,
917                 node_filler = "default:sand",
918                 depth_filler = 0,
919                 node_stone = "default:sandstone",
920                 --node_water_top = "",
921                 --depth_water_top = ,
922                 --node_water = "",
923                 --node_river_water = "",
924                 node_riverbed = "default:sand",
925                 depth_riverbed = 2,
926                 y_min = 5,
927                 y_max = 31000,
928                 heat_point = 60,
929                 humidity_point = 0,
930         })
931
932         minetest.register_biome({
933                 name = "sandstone_desert_ocean",
934                 --node_dust = "",
935                 node_top = "default:sand",
936                 depth_top = 1,
937                 node_filler = "default:sand",
938                 depth_filler = 3,
939                 node_stone = "default:sandstone",
940                 --node_water_top = "",
941                 --depth_water_top = ,
942                 --node_water = "",
943                 --node_river_water = "",
944                 node_riverbed = "default:sand",
945                 depth_riverbed = 2,
946                 y_min = -112,
947                 y_max = 4,
948                 heat_point = 60,
949                 humidity_point = 0,
950         })
951
952         -- Cold desert
953
954         minetest.register_biome({
955                 name = "cold_desert",
956                 --node_dust = "",
957                 node_top = "default:silver_sand",
958                 depth_top = 1,
959                 node_filler = "default:silver_sand",
960                 depth_filler = 1,
961                 --node_stone = "",
962                 --node_water_top = "",
963                 --depth_water_top = ,
964                 --node_water = "",
965                 --node_river_water = "",
966                 node_riverbed = "default:sand",
967                 depth_riverbed = 2,
968                 y_min = 5,
969                 y_max = 31000,
970                 heat_point = 40,
971                 humidity_point = 0,
972         })
973
974         minetest.register_biome({
975                 name = "cold_desert_ocean",
976                 --node_dust = "",
977                 node_top = "default:sand",
978                 depth_top = 1,
979                 node_filler = "default:sand",
980                 depth_filler = 3,
981                 --node_stone = "",
982                 --node_water_top = "",
983                 --depth_water_top = ,
984                 --node_water = "",
985                 --node_river_water = "",
986                 node_riverbed = "default:sand",
987                 depth_riverbed = 2,
988                 y_min = -112,
989                 y_max = 4,
990                 heat_point = 40,
991                 humidity_point = 0,
992         })
993
994         -- Savanna
995
996         minetest.register_biome({
997                 name = "savanna",
998                 --node_dust = "",
999                 node_top = "default:dirt_with_dry_grass",
1000                 depth_top = 1,
1001                 node_filler = "default:dirt",
1002                 depth_filler = 1,
1003                 --node_stone = "",
1004                 --node_water_top = "",
1005                 --depth_water_top = ,
1006                 --node_water = "",
1007                 --node_river_water = "",
1008                 node_riverbed = "default:sand",
1009                 depth_riverbed = 2,
1010                 y_min = 1,
1011                 y_max = 31000,
1012                 heat_point = 89,
1013                 humidity_point = 42,
1014         })
1015
1016         minetest.register_biome({
1017                 name = "savanna_shore",
1018                 --node_dust = "",
1019                 node_top = "default:dirt",
1020                 depth_top = 1,
1021                 node_filler = "default:dirt",
1022                 depth_filler = 3,
1023                 --node_stone = "",
1024                 --node_water_top = "",
1025                 --depth_water_top = ,
1026                 --node_water = "",
1027                 --node_river_water = "",
1028                 node_riverbed = "default:sand",
1029                 depth_riverbed = 2,
1030                 y_min = -1,
1031                 y_max = 0,
1032                 heat_point = 89,
1033                 humidity_point = 42,
1034         })
1035
1036         minetest.register_biome({
1037                 name = "savanna_ocean",
1038                 --node_dust = "",
1039                 node_top = "default:sand",
1040                 depth_top = 1,
1041                 node_filler = "default:sand",
1042                 depth_filler = 3,
1043                 --node_stone = "",
1044                 --node_water_top = "",
1045                 --depth_water_top = ,
1046                 --node_water = "",
1047                 --node_river_water = "",
1048                 node_riverbed = "default:sand",
1049                 depth_riverbed = 2,
1050                 y_min = -112,
1051                 y_max = -2,
1052                 heat_point = 89,
1053                 humidity_point = 42,
1054         })
1055
1056         -- Rainforest
1057
1058         minetest.register_biome({
1059                 name = "rainforest",
1060                 --node_dust = "",
1061                 node_top = "default:dirt_with_rainforest_litter",
1062                 depth_top = 1,
1063                 node_filler = "default:dirt",
1064                 depth_filler = 3,
1065                 --node_stone = "",
1066                 --node_water_top = "",
1067                 --depth_water_top = ,
1068                 --node_water = "",
1069                 --node_river_water = "",
1070                 node_riverbed = "default:sand",
1071                 depth_riverbed = 2,
1072                 y_min = 1,
1073                 y_max = 31000,
1074                 heat_point = 86,
1075                 humidity_point = 65,
1076         })
1077
1078         minetest.register_biome({
1079                 name = "rainforest_swamp",
1080                 --node_dust = "",
1081                 node_top = "default:dirt",
1082                 depth_top = 1,
1083                 node_filler = "default:dirt",
1084                 depth_filler = 3,
1085                 --node_stone = "",
1086                 --node_water_top = "",
1087                 --depth_water_top = ,
1088                 --node_water = "",
1089                 --node_river_water = "",
1090                 node_riverbed = "default:sand",
1091                 depth_riverbed = 2,
1092                 y_min = -1,
1093                 y_max = 0,
1094                 heat_point = 86,
1095                 humidity_point = 65,
1096         })
1097
1098         minetest.register_biome({
1099                 name = "rainforest_ocean",
1100                 --node_dust = "",
1101                 node_top = "default:sand",
1102                 depth_top = 1,
1103                 node_filler = "default:sand",
1104                 depth_filler = 3,
1105                 --node_stone = "",
1106                 --node_water_top = "",
1107                 --depth_water_top = ,
1108                 --node_water = "",
1109                 --node_river_water = "",
1110                 node_riverbed = "default:sand",
1111                 depth_riverbed = 2,
1112                 y_min = -112,
1113                 y_max = -2,
1114                 heat_point = 86,
1115                 humidity_point = 65,
1116         })
1117
1118         -- Underground
1119
1120         minetest.register_biome({
1121                 name = "underground",
1122                 --node_dust = "",
1123                 --node_top = "",
1124                 --depth_top = ,
1125                 --node_filler = "",
1126                 --depth_filler = ,
1127                 --node_stone = "",
1128                 --node_water_top = "",
1129                 --depth_water_top = ,
1130                 --node_water = "",
1131                 --node_river_water = "",
1132                 y_min = -31000,
1133                 y_max = -113,
1134                 heat_point = 50,
1135                 humidity_point = 50,
1136         })
1137 end
1138
1139
1140 --
1141 -- Register decorations
1142 --
1143
1144 -- Mgv6
1145
1146 function default.register_mgv6_decorations()
1147
1148         -- Papyrus
1149
1150         minetest.register_decoration({
1151                 deco_type = "simple",
1152                 place_on = {"default:dirt_with_grass"},
1153                 sidelen = 16,
1154                 noise_params = {
1155                         offset = -0.3,
1156                         scale = 0.7,
1157                         spread = {x = 100, y = 100, z = 100},
1158                         seed = 354,
1159                         octaves = 3,
1160                         persist = 0.7
1161                 },
1162                 y_min = 1,
1163                 y_max = 1,
1164                 decoration = "default:papyrus",
1165                 height = 2,
1166                 height_max = 4,
1167                 spawn_by = "default:water_source",
1168                 num_spawn_by = 1,
1169         })
1170
1171         -- Cacti
1172
1173         minetest.register_decoration({
1174                 deco_type = "simple",
1175                 place_on = {"default:desert_sand"},
1176                 sidelen = 16,
1177                 noise_params = {
1178                         offset = -0.012,
1179                         scale = 0.024,
1180                         spread = {x = 100, y = 100, z = 100},
1181                         seed = 230,
1182                         octaves = 3,
1183                         persist = 0.6
1184                 },
1185                 y_min = 1,
1186                 y_max = 30,
1187                 decoration = "default:cactus",
1188                 height = 3,
1189                 height_max = 4,
1190         })
1191
1192         -- Long grasses
1193
1194         for length = 1, 5 do
1195                 minetest.register_decoration({
1196                         deco_type = "simple",
1197                         place_on = {"default:dirt_with_grass"},
1198                         sidelen = 16,
1199                         noise_params = {
1200                                 offset = 0,
1201                                 scale = 0.007,
1202                                 spread = {x = 100, y = 100, z = 100},
1203                                 seed = 329,
1204                                 octaves = 3,
1205                                 persist = 0.6
1206                         },
1207                         y_min = 1,
1208                         y_max = 30,
1209                         decoration = "default:grass_"..length,
1210                 })
1211         end
1212
1213         -- Dry shrubs
1214
1215         minetest.register_decoration({
1216                 deco_type = "simple",
1217                 place_on = {"default:desert_sand", "default:dirt_with_snow"},
1218                 sidelen = 16,
1219                 noise_params = {
1220                         offset = 0,
1221                         scale = 0.035,
1222                         spread = {x = 100, y = 100, z = 100},
1223                         seed = 329,
1224                         octaves = 3,
1225                         persist = 0.6
1226                 },
1227                 y_min = 1,
1228                 y_max = 30,
1229                 decoration = "default:dry_shrub",
1230         })
1231 end
1232
1233
1234 -- All mapgens except mgv6
1235
1236 local function register_grass_decoration(offset, scale, length)
1237         minetest.register_decoration({
1238                 deco_type = "simple",
1239                 place_on = {"default:dirt_with_grass", "default:sand"},
1240                 sidelen = 16,
1241                 noise_params = {
1242                         offset = offset,
1243                         scale = scale,
1244                         spread = {x = 200, y = 200, z = 200},
1245                         seed = 329,
1246                         octaves = 3,
1247                         persist = 0.6
1248                 },
1249                 biomes = {"grassland", "grassland_dunes", "deciduous_forest",
1250                         "coniferous_forest", "coniferous_forest_dunes"},
1251                 y_min = 1,
1252                 y_max = 31000,
1253                 decoration = "default:grass_" .. length,
1254         })
1255 end
1256
1257 local function register_dry_grass_decoration(offset, scale, length)
1258         minetest.register_decoration({
1259                 deco_type = "simple",
1260                 place_on = {"default:dirt_with_dry_grass"},
1261                 sidelen = 16,
1262                 noise_params = {
1263                         offset = offset,
1264                         scale = scale,
1265                         spread = {x = 200, y = 200, z = 200},
1266                         seed = 329,
1267                         octaves = 3,
1268                         persist = 0.6
1269                 },
1270                 biomes = {"savanna"},
1271                 y_min = 1,
1272                 y_max = 31000,
1273                 decoration = "default:dry_grass_" .. length,
1274         })
1275 end
1276
1277
1278 function default.register_decorations()
1279
1280         -- Apple tree and log
1281
1282         minetest.register_decoration({
1283                 deco_type = "schematic",
1284                 place_on = {"default:dirt_with_grass"},
1285                 sidelen = 16,
1286                 noise_params = {
1287                         offset = 0.036,
1288                         scale = 0.022,
1289                         spread = {x = 250, y = 250, z = 250},
1290                         seed = 2,
1291                         octaves = 3,
1292                         persist = 0.66
1293                 },
1294                 biomes = {"deciduous_forest"},
1295                 y_min = 1,
1296                 y_max = 31000,
1297                 schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts",
1298                 flags = "place_center_x, place_center_z",
1299         })
1300
1301         minetest.register_decoration({
1302                 deco_type = "schematic",
1303                 place_on = {"default:dirt_with_grass"},
1304                 sidelen = 16,
1305                 noise_params = {
1306                         offset = 0.0018,
1307                         scale = 0.0011,
1308                         spread = {x = 250, y = 250, z = 250},
1309                         seed = 2,
1310                         octaves = 3,
1311                         persist = 0.66
1312                 },
1313                 biomes = {"deciduous_forest"},
1314                 y_min = 1,
1315                 y_max = 31000,
1316                 schematic = minetest.get_modpath("default") .. "/schematics/apple_log.mts",
1317                 flags = "place_center_x",
1318                 rotation = "random",
1319         })
1320
1321         -- Jungle tree and log
1322
1323         minetest.register_decoration({
1324                 deco_type = "schematic",
1325                 place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
1326                 sidelen = 80,
1327                 fill_ratio = 0.1,
1328                 biomes = {"rainforest", "rainforest_swamp"},
1329                 y_min = -1,
1330                 y_max = 31000,
1331                 schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
1332                 flags = "place_center_x, place_center_z",
1333                 rotation = "random",
1334         })
1335
1336         minetest.register_decoration({
1337                 deco_type = "schematic",
1338                 place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
1339                 sidelen = 80,
1340                 fill_ratio = 0.005,
1341                 biomes = {"rainforest", "rainforest_swamp"},
1342                 y_min = 1,
1343                 y_max = 31000,
1344                 schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
1345                 flags = "place_center_x",
1346                 rotation = "random",
1347         })
1348
1349         -- Taiga and temperate coniferous forest pine tree and log
1350
1351         minetest.register_decoration({
1352                 deco_type = "schematic",
1353                 place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
1354                 sidelen = 16,
1355                 noise_params = {
1356                         offset = 0.036,
1357                         scale = 0.022,
1358                         spread = {x = 250, y = 250, z = 250},
1359                         seed = 2,
1360                         octaves = 3,
1361                         persist = 0.66
1362                 },
1363                 biomes = {"taiga", "coniferous_forest"},
1364                 y_min = 2,
1365                 y_max = 31000,
1366                 schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
1367                 flags = "place_center_x, place_center_z",
1368         })
1369
1370         minetest.register_decoration({
1371                 deco_type = "schematic",
1372                 place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
1373                 sidelen = 80,
1374                 noise_params = {
1375                         offset = 0.0018,
1376                         scale = 0.0011,
1377                         spread = {x = 250, y = 250, z = 250},
1378                         seed = 2,
1379                         octaves = 3,
1380                         persist = 0.66
1381                 },
1382                 biomes = {"taiga", "coniferous_forest"},
1383                 y_min = 1,
1384                 y_max = 31000,
1385                 schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
1386                 flags = "place_center_x",
1387                 rotation = "random",
1388         })
1389
1390         -- Acacia tree and log
1391
1392         minetest.register_decoration({
1393                 deco_type = "schematic",
1394                 place_on = {"default:dirt_with_dry_grass"},
1395                 sidelen = 16,
1396                 noise_params = {
1397                         offset = 0,
1398                         scale = 0.002,
1399                         spread = {x = 250, y = 250, z = 250},
1400                         seed = 2,
1401                         octaves = 3,
1402                         persist = 0.66
1403                 },
1404                 biomes = {"savanna"},
1405                 y_min = 1,
1406                 y_max = 31000,
1407                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts",
1408                 flags = "place_center_x, place_center_z",
1409                 rotation = "random",
1410         })
1411
1412         minetest.register_decoration({
1413                 deco_type = "schematic",
1414                 place_on = {"default:dirt_with_dry_grass"},
1415                 sidelen = 16,
1416                 noise_params = {
1417                         offset = 0,
1418                         scale = 0.001,
1419                         spread = {x = 250, y = 250, z = 250},
1420                         seed = 2,
1421                         octaves = 3,
1422                         persist = 0.66
1423                 },
1424                 biomes = {"savanna"},
1425                 y_min = 1,
1426                 y_max = 31000,
1427                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts",
1428                 flags = "place_center_x",
1429                 rotation = "random",
1430         })
1431
1432         -- Aspen tree and log
1433
1434         minetest.register_decoration({
1435                 deco_type = "schematic",
1436                 place_on = {"default:dirt_with_grass"},
1437                 sidelen = 16,
1438                 noise_params = {
1439                         offset = 0.0,
1440                         scale = -0.015,
1441                         spread = {x = 250, y = 250, z = 250},
1442                         seed = 2,
1443                         octaves = 3,
1444                         persist = 0.66
1445                 },
1446                 biomes = {"deciduous_forest"},
1447                 y_min = 1,
1448                 y_max = 31000,
1449                 schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts",
1450                 flags = "place_center_x, place_center_z",
1451         })
1452
1453         minetest.register_decoration({
1454                 deco_type = "schematic",
1455                 place_on = {"default:dirt_with_grass"},
1456                 sidelen = 16,
1457                 noise_params = {
1458                         offset = 0.0,
1459                         scale = -0.0008,
1460                         spread = {x = 250, y = 250, z = 250},
1461                         seed = 2,
1462                         octaves = 3,
1463                         persist = 0.66
1464                 },
1465                 biomes = {"deciduous_forest"},
1466                 y_min = 1,
1467                 y_max = 31000,
1468                 schematic = minetest.get_modpath("default") .. "/schematics/aspen_log.mts",
1469                 flags = "place_center_x",
1470                 rotation = "random",
1471         })
1472
1473         -- Large cactus
1474
1475         minetest.register_decoration({
1476                 deco_type = "schematic",
1477                 place_on = {"default:desert_sand"},
1478                 sidelen = 16,
1479                 noise_params = {
1480                         offset = -0.0003,
1481                         scale = 0.0009,
1482                         spread = {x = 200, y = 200, z = 200},
1483                         seed = 230,
1484                         octaves = 3,
1485                         persist = 0.6
1486                 },
1487                 biomes = {"desert"},
1488                 y_min = 5,
1489                 y_max = 31000,
1490                 schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts",
1491                 flags = "place_center_x",
1492                 rotation = "random",
1493         })
1494
1495         -- Cactus
1496
1497         minetest.register_decoration({
1498                 deco_type = "simple",
1499                 place_on = {"default:desert_sand"},
1500                 sidelen = 16,
1501                 noise_params = {
1502                         offset = -0.0003,
1503                         scale = 0.0009,
1504                         spread = {x = 200, y = 200, z = 200},
1505                         seed = 230,
1506                         octaves = 3,
1507                         persist = 0.6
1508                 },
1509                 biomes = {"desert"},
1510                 y_min = 5,
1511                 y_max = 31000,
1512                 decoration = "default:cactus",
1513                 height = 2,
1514                 height_max = 5,
1515         })
1516
1517         -- Papyrus
1518
1519         minetest.register_decoration({
1520                 deco_type = "schematic",
1521                 place_on = {"default:dirt"},
1522                 sidelen = 16,
1523                 noise_params = {
1524                         offset = -0.3,
1525                         scale = 0.7,
1526                         spread = {x = 200, y = 200, z = 200},
1527                         seed = 354,
1528                         octaves = 3,
1529                         persist = 0.7
1530                 },
1531                 biomes = {"savanna_shore"},
1532                 y_min = 0,
1533                 y_max = 0,
1534                 schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
1535         })
1536
1537         -- Bush
1538
1539         minetest.register_decoration({
1540                 deco_type = "schematic",
1541                 place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
1542                 sidelen = 16,
1543                 noise_params = {
1544                         offset = -0.004,
1545                         scale = 0.01,
1546                         spread = {x = 100, y = 100, z = 100},
1547                         seed = 137,
1548                         octaves = 3,
1549                         persist = 0.7,
1550                 },
1551                 biomes = {"snowy_grassland", "grassland", "deciduous_forest"},
1552                 y_min = 1,
1553                 y_max = 31000,
1554                 schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
1555                 flags = "place_center_x, place_center_z",
1556         })
1557
1558         -- Acacia bush
1559
1560         minetest.register_decoration({
1561                 deco_type = "schematic",
1562                 place_on = {"default:dirt_with_dry_grass"},
1563                 sidelen = 16,
1564                 noise_params = {
1565                         offset = -0.004,
1566                         scale = 0.01,
1567                         spread = {x = 100, y = 100, z = 100},
1568                         seed = 90155,
1569                         octaves = 3,
1570                         persist = 0.7,
1571                 },
1572                 biomes = {"savanna"},
1573                 y_min = 1,
1574                 y_max = 31000,
1575                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts",
1576                 flags = "place_center_x, place_center_z",
1577         })
1578
1579         -- Grasses
1580
1581         register_grass_decoration(-0.03,  0.09,  5)
1582         register_grass_decoration(-0.015, 0.075, 4)
1583         register_grass_decoration(0,      0.06,  3)
1584         register_grass_decoration(0.015,  0.045, 2)
1585         register_grass_decoration(0.03,   0.03,  1)
1586
1587         -- Dry grasses
1588
1589         register_dry_grass_decoration(0.01, 0.05,  5)
1590         register_dry_grass_decoration(0.03, 0.03,  4)
1591         register_dry_grass_decoration(0.05, 0.01,  3)
1592         register_dry_grass_decoration(0.07, -0.01, 2)
1593         register_dry_grass_decoration(0.09, -0.03, 1)
1594
1595         -- Junglegrass
1596
1597         minetest.register_decoration({
1598                 deco_type = "simple",
1599                 place_on = {"default:dirt_with_rainforest_litter"},
1600                 sidelen = 80,
1601                 fill_ratio = 0.1,
1602                 biomes = {"rainforest"},
1603                 y_min = 1,
1604                 y_max = 31000,
1605                 decoration = "default:junglegrass",
1606         })
1607
1608         -- Dry shrub
1609
1610         minetest.register_decoration({
1611                 deco_type = "simple",
1612                 place_on = {"default:desert_sand",
1613                         "default:sand", "default:silver_sand"},
1614                 sidelen = 16,
1615                 noise_params = {
1616                         offset = 0,
1617                         scale = 0.02,
1618                         spread = {x = 200, y = 200, z = 200},
1619                         seed = 329,
1620                         octaves = 3,
1621                         persist = 0.6
1622                 },
1623                 biomes = {"desert", "sandstone_desert", "cold_desert"},
1624                 y_min = 2,
1625                 y_max = 31000,
1626                 decoration = "default:dry_shrub",
1627         })
1628
1629         -- Coral reef
1630
1631         minetest.register_decoration({
1632                 deco_type = "schematic",
1633                 place_on = {"default:sand"},
1634                 noise_params = {
1635                         offset = -0.15,
1636                         scale = 0.1,
1637                         spread = {x = 100, y = 100, z = 100},
1638                         seed = 7013,
1639                         octaves = 3,
1640                         persist = 1,
1641                 },
1642                 biomes = {
1643                         "desert_ocean",
1644                         "savanna_ocean",
1645                         "rainforest_ocean",
1646                 },
1647                 y_min = -8,
1648                 y_max = -2,
1649                 schematic = minetest.get_modpath("default") .. "/schematics/corals.mts",
1650                 flags = "place_center_x, place_center_z",
1651                 rotation = "random",
1652         })
1653 end
1654
1655
1656 --
1657 -- Detect mapgen to select functions
1658 --
1659
1660 minetest.clear_registered_biomes()
1661 minetest.clear_registered_ores()
1662 minetest.clear_registered_decorations()
1663
1664 local mg_name = minetest.get_mapgen_setting("mg_name")
1665 if mg_name == "v6" then
1666         default.register_mgv6_blob_ores()
1667         default.register_ores()
1668         default.register_mgv6_decorations()
1669 else
1670         default.register_biomes()
1671         default.register_blob_ores()
1672         default.register_ores()
1673         default.register_decorations()
1674 end