Make can_interact_with_node() check for key group instead of default:key
[oweals/minetest_game.git] / mods / default / mapgen.lua
1 --
2 -- Aliases for map generators
3 --
4
5 -- All mapgens
6
7 minetest.register_alias("mapgen_stone", "default:stone")
8 minetest.register_alias("mapgen_water_source", "default:water_source")
9 minetest.register_alias("mapgen_river_water_source", "default:river_water_source")
10
11 -- Additional aliases needed for mapgen v6
12
13 minetest.register_alias("mapgen_lava_source", "default:lava_source")
14 minetest.register_alias("mapgen_dirt", "default:dirt")
15 minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass")
16 minetest.register_alias("mapgen_sand", "default:sand")
17 minetest.register_alias("mapgen_gravel", "default:gravel")
18 minetest.register_alias("mapgen_desert_stone", "default:desert_stone")
19 minetest.register_alias("mapgen_desert_sand", "default:desert_sand")
20 minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow")
21 minetest.register_alias("mapgen_snowblock", "default:snowblock")
22 minetest.register_alias("mapgen_snow", "default:snow")
23 minetest.register_alias("mapgen_ice", "default:ice")
24
25 minetest.register_alias("mapgen_tree", "default:tree")
26 minetest.register_alias("mapgen_leaves", "default:leaves")
27 minetest.register_alias("mapgen_apple", "default:apple")
28 minetest.register_alias("mapgen_jungletree", "default:jungletree")
29 minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves")
30 minetest.register_alias("mapgen_junglegrass", "default:junglegrass")
31 minetest.register_alias("mapgen_pine_tree", "default:pine_tree")
32 minetest.register_alias("mapgen_pine_needles", "default:pine_needles")
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
39
40 --
41 -- Register ores
42 --
43
44 -- Mgv6
45
46 function default.register_mgv6_ores()
47
48         -- Blob ore
49         -- These first to avoid other ores in blobs
50
51         -- Clay
52         -- This first to avoid clay in sand blobs
53
54         minetest.register_ore({
55                 ore_type        = "blob",
56                 ore             = "default:clay",
57                 wherein         = {"default:sand"},
58                 clust_scarcity  = 16 * 16 * 16,
59                 clust_size      = 5,
60                 y_max           = 0,
61                 y_min           = -15,
62                 noise_threshold = 0.0,
63                 noise_params    = {
64                         offset = 0.5,
65                         scale = 0.2,
66                         spread = {x = 5, y = 5, z = 5},
67                         seed = -316,
68                         octaves = 1,
69                         persist = 0.0
70                 },
71         })
72
73         -- Sand
74
75         minetest.register_ore({
76                 ore_type        = "blob",
77                 ore             = "default:sand",
78                 wherein         = {"default:stone", "default:desert_stone"},
79                 clust_scarcity  = 16 * 16 * 16,
80                 clust_size      = 5,
81                 y_max           = 0,
82                 y_min           = -31,
83                 noise_threshold = 0.0,
84                 noise_params    = {
85                         offset = 0.5,
86                         scale = 0.2,
87                         spread = {x = 5, y = 5, z = 5},
88                         seed = 2316,
89                         octaves = 1,
90                         persist = 0.0
91                 },
92         })
93
94         -- Dirt
95
96         minetest.register_ore({
97                 ore_type        = "blob",
98                 ore             = "default:dirt",
99                 wherein         = {"default:stone"},
100                 clust_scarcity  = 16 * 16 * 16,
101                 clust_size      = 5,
102                 y_max           = 31000,
103                 y_min           = -31,
104                 noise_threshold = 0.0,
105                 noise_params    = {
106                         offset = 0.5,
107                         scale = 0.2,
108                         spread = {x = 5, y = 5, z = 5},
109                         seed = 17676,
110                         octaves = 1,
111                         persist = 0.0
112                 },
113         })
114
115         -- Gravel
116
117         minetest.register_ore({
118                 ore_type        = "blob",
119                 ore             = "default:gravel",
120                 wherein         = {"default:stone"},
121                 clust_scarcity  = 16 * 16 * 16,
122                 clust_size      = 5,
123                 y_max           = 31000,
124                 y_min           = -31000,
125                 noise_threshold = 0.0,
126                 noise_params    = {
127                         offset = 0.5,
128                         scale = 0.2,
129                         spread = {x = 5, y = 5, z = 5},
130                         seed = 766,
131                         octaves = 1,
132                         persist = 0.0
133                 },
134         })
135
136         -- Scatter ores
137
138         -- Coal
139
140         minetest.register_ore({
141                 ore_type       = "scatter",
142                 ore            = "default:stone_with_coal",
143                 wherein        = "default:stone",
144                 clust_scarcity = 8 * 8 * 8,
145                 clust_num_ores = 9,
146                 clust_size     = 3,
147                 y_max          = 31000,
148                 y_min          = 1025,
149         })
150
151         minetest.register_ore({
152                 ore_type       = "scatter",
153                 ore            = "default:stone_with_coal",
154                 wherein        = "default:stone",
155                 clust_scarcity = 8 * 8 * 8,
156                 clust_num_ores = 8,
157                 clust_size     = 3,
158                 y_max          = 64,
159                 y_min          = -31000,
160         })
161
162         minetest.register_ore({
163                 ore_type       = "scatter",
164                 ore            = "default:stone_with_coal",
165                 wherein        = "default:stone",
166                 clust_scarcity = 24 * 24 * 24,
167                 clust_num_ores = 27,
168                 clust_size     = 6,
169                 y_max          = 0,
170                 y_min          = -31000,
171         })
172
173         -- Iron
174
175         minetest.register_ore({
176                 ore_type       = "scatter",
177                 ore            = "default:stone_with_iron",
178                 wherein        = "default:stone",
179                 clust_scarcity = 9 * 9 * 9,
180                 clust_num_ores = 12,
181                 clust_size     = 3,
182                 y_max          = 31000,
183                 y_min          = 1025,
184         })
185
186         minetest.register_ore({
187                 ore_type       = "scatter",
188                 ore            = "default:stone_with_iron",
189                 wherein        = "default:stone",
190                 clust_scarcity = 7 * 7 * 7,
191                 clust_num_ores = 5,
192                 clust_size     = 3,
193                 y_max          = 0,
194                 y_min          = -31000,
195         })
196
197         minetest.register_ore({
198                 ore_type       = "scatter",
199                 ore            = "default:stone_with_iron",
200                 wherein        = "default:stone",
201                 clust_scarcity = 24 * 24 * 24,
202                 clust_num_ores = 27,
203                 clust_size     = 6,
204                 y_max          = -64,
205                 y_min          = -31000,
206         })
207
208         -- Copper
209
210         minetest.register_ore({
211                 ore_type       = "scatter",
212                 ore            = "default:stone_with_copper",
213                 wherein        = "default:stone",
214                 clust_scarcity = 9 * 9 * 9,
215                 clust_num_ores = 5,
216                 clust_size     = 3,
217                 y_max          = 31000,
218                 y_min          = 1025,
219         })
220
221         minetest.register_ore({
222                 ore_type       = "scatter",
223                 ore            = "default:stone_with_copper",
224                 wherein        = "default:stone",
225                 clust_scarcity = 12 * 12 * 12,
226                 clust_num_ores = 4,
227                 clust_size     = 3,
228                 y_max          = -16,
229                 y_min          = -63,
230         })
231
232         minetest.register_ore({
233                 ore_type       = "scatter",
234                 ore            = "default:stone_with_copper",
235                 wherein        = "default:stone",
236                 clust_scarcity = 9 * 9 * 9,
237                 clust_num_ores = 5,
238                 clust_size     = 3,
239                 y_max          = -64,
240                 y_min          = -31000,
241         })
242
243         -- Tin
244
245         minetest.register_ore({
246                 ore_type       = "scatter",
247                 ore            = "default:stone_with_tin",
248                 wherein        = "default:stone",
249                 clust_scarcity = 10 * 10 * 10,
250                 clust_num_ores = 5,
251                 clust_size     = 3,
252                 y_max          = 31000,
253                 y_min          = 1025,
254         })
255
256         minetest.register_ore({
257                 ore_type       = "scatter",
258                 ore            = "default:stone_with_tin",
259                 wherein        = "default:stone",
260                 clust_scarcity = 13 * 13 * 13,
261                 clust_num_ores = 4,
262                 clust_size     = 3,
263                 y_max          = -32,
264                 y_min          = -127,
265         })
266
267         minetest.register_ore({
268                 ore_type       = "scatter",
269                 ore            = "default:stone_with_tin",
270                 wherein        = "default:stone",
271                 clust_scarcity = 10 * 10 * 10,
272                 clust_num_ores = 5,
273                 clust_size     = 3,
274                 y_max          = -128,
275                 y_min          = -31000,
276         })
277
278         -- Gold
279
280         minetest.register_ore({
281                 ore_type       = "scatter",
282                 ore            = "default:stone_with_gold",
283                 wherein        = "default:stone",
284                 clust_scarcity = 13 * 13 * 13,
285                 clust_num_ores = 5,
286                 clust_size     = 3,
287                 y_max          = 31000,
288                 y_min          = 1025,
289         })
290
291         minetest.register_ore({
292                 ore_type       = "scatter",
293                 ore            = "default:stone_with_gold",
294                 wherein        = "default:stone",
295                 clust_scarcity = 15 * 15 * 15,
296                 clust_num_ores = 3,
297                 clust_size     = 2,
298                 y_max          = -64,
299                 y_min          = -255,
300         })
301
302         minetest.register_ore({
303                 ore_type       = "scatter",
304                 ore            = "default:stone_with_gold",
305                 wherein        = "default:stone",
306                 clust_scarcity = 13 * 13 * 13,
307                 clust_num_ores = 5,
308                 clust_size     = 3,
309                 y_max          = -256,
310                 y_min          = -31000,
311         })
312
313         -- Mese crystal
314
315         minetest.register_ore({
316                 ore_type       = "scatter",
317                 ore            = "default:stone_with_mese",
318                 wherein        = "default:stone",
319                 clust_scarcity = 14 * 14 * 14,
320                 clust_num_ores = 5,
321                 clust_size     = 3,
322                 y_max          = 31000,
323                 y_min          = 1025,
324         })
325
326         minetest.register_ore({
327                 ore_type       = "scatter",
328                 ore            = "default:stone_with_mese",
329                 wherein        = "default:stone",
330                 clust_scarcity = 18 * 18 * 18,
331                 clust_num_ores = 3,
332                 clust_size     = 2,
333                 y_max          = -64,
334                 y_min          = -255,
335         })
336
337         minetest.register_ore({
338                 ore_type       = "scatter",
339                 ore            = "default:stone_with_mese",
340                 wherein        = "default:stone",
341                 clust_scarcity = 14 * 14 * 14,
342                 clust_num_ores = 5,
343                 clust_size     = 3,
344                 y_max          = -256,
345                 y_min          = -31000,
346         })
347
348         -- Diamond
349
350         minetest.register_ore({
351                 ore_type       = "scatter",
352                 ore            = "default:stone_with_diamond",
353                 wherein        = "default:stone",
354                 clust_scarcity = 15 * 15 * 15,
355                 clust_num_ores = 4,
356                 clust_size     = 3,
357                 y_max          = 31000,
358                 y_min          = 1025,
359         })
360
361         minetest.register_ore({
362                 ore_type       = "scatter",
363                 ore            = "default:stone_with_diamond",
364                 wherein        = "default:stone",
365                 clust_scarcity = 17 * 17 * 17,
366                 clust_num_ores = 4,
367                 clust_size     = 3,
368                 y_max          = -128,
369                 y_min          = -255,
370         })
371
372         minetest.register_ore({
373                 ore_type       = "scatter",
374                 ore            = "default:stone_with_diamond",
375                 wherein        = "default:stone",
376                 clust_scarcity = 15 * 15 * 15,
377                 clust_num_ores = 4,
378                 clust_size     = 3,
379                 y_max          = -256,
380                 y_min          = -31000,
381         })
382
383         -- Mese block
384
385         minetest.register_ore({
386                 ore_type       = "scatter",
387                 ore            = "default:mese",
388                 wherein        = "default:stone",
389                 clust_scarcity = 36 * 36 * 36,
390                 clust_num_ores = 3,
391                 clust_size     = 2,
392                 y_max          = 31000,
393                 y_min          = 1025,
394         })
395
396         minetest.register_ore({
397                 ore_type       = "scatter",
398                 ore            = "default:mese",
399                 wherein        = "default:stone",
400                 clust_scarcity = 36 * 36 * 36,
401                 clust_num_ores = 3,
402                 clust_size     = 2,
403                 y_max          = -1024,
404                 y_min          = -31000,
405         })
406 end
407
408
409 -- All mapgens except mgv6
410
411 function default.register_ores()
412
413         -- Stratum ores.
414         -- These obviously first.
415
416         -- Silver sandstone
417
418         minetest.register_ore({
419                 ore_type        = "stratum",
420                 ore             = "default:silver_sandstone",
421                 wherein         = {"default:stone"},
422                 clust_scarcity  = 1,
423                 y_max           = 46,
424                 y_min           = 10,
425                 noise_params    = {
426                         offset = 28,
427                         scale = 16,
428                         spread = {x = 128, y = 128, z = 128},
429                         seed = 90122,
430                         octaves = 1,
431                 },
432                 stratum_thickness = 4,
433                 biomes = {"cold_desert"},
434         })
435
436         minetest.register_ore({
437                 ore_type        = "stratum",
438                 ore             = "default:silver_sandstone",
439                 wherein         = {"default:stone"},
440                 clust_scarcity  = 1,
441                 y_max           = 42,
442                 y_min           = 6,
443                 noise_params    = {
444                         offset = 24,
445                         scale = 16,
446                         spread = {x = 128, y = 128, z = 128},
447                         seed = 90122,
448                         octaves = 1,
449                 },
450                 stratum_thickness = 2,
451                 biomes = {"cold_desert"},
452         })
453
454         -- Desert sandstone
455
456         minetest.register_ore({
457                 ore_type        = "stratum",
458                 ore             = "default:desert_sandstone",
459                 wherein         = {"default:desert_stone"},
460                 clust_scarcity  = 1,
461                 y_max           = 46,
462                 y_min           = 10,
463                 noise_params    = {
464                         offset = 28,
465                         scale = 16,
466                         spread = {x = 128, y = 128, z = 128},
467                         seed = 90122,
468                         octaves = 1,
469                 },
470                 stratum_thickness = 4,
471                 biomes = {"desert"},
472         })
473
474         minetest.register_ore({
475                 ore_type        = "stratum",
476                 ore             = "default:desert_sandstone",
477                 wherein         = {"default:desert_stone"},
478                 clust_scarcity  = 1,
479                 y_max           = 42,
480                 y_min           = 6,
481                 noise_params    = {
482                         offset = 24,
483                         scale = 16,
484                         spread = {x = 128, y = 128, z = 128},
485                         seed = 90122,
486                         octaves = 1,
487                 },
488                 stratum_thickness = 2,
489                 biomes = {"desert"},
490         })
491
492         -- Sandstone
493
494         minetest.register_ore({
495                 ore_type        = "stratum",
496                 ore             = "default:sandstone",
497                 wherein         = {"default:desert_stone"},
498                 clust_scarcity  = 1,
499                 y_max           = 39,
500                 y_min           = 3,
501                 noise_params    = {
502                         offset = 21,
503                         scale = 16,
504                         spread = {x = 128, y = 128, z = 128},
505                         seed = 90122,
506                         octaves = 1,
507                 },
508                 stratum_thickness = 2,
509                 biomes = {"desert"},
510         })
511
512         -- Blob ore.
513         -- These before scatter ores to avoid other ores in blobs.
514
515         -- Clay
516
517         minetest.register_ore({
518                 ore_type        = "blob",
519                 ore             = "default:clay",
520                 wherein         = {"default:sand"},
521                 clust_scarcity  = 16 * 16 * 16,
522                 clust_size      = 5,
523                 y_max           = 0,
524                 y_min           = -15,
525                 noise_threshold = 0.0,
526                 noise_params    = {
527                         offset = 0.5,
528                         scale = 0.2,
529                         spread = {x = 5, y = 5, z = 5},
530                         seed = -316,
531                         octaves = 1,
532                         persist = 0.0
533                 },
534         })
535
536         -- Silver sand
537
538         minetest.register_ore({
539                 ore_type        = "blob",
540                 ore             = "default:silver_sand",
541                 wherein         = {"default:stone"},
542                 clust_scarcity  = 16 * 16 * 16,
543                 clust_size      = 5,
544                 y_max           = 31000,
545                 y_min           = -31000,
546                 noise_threshold = 0.0,
547                 noise_params    = {
548                         offset = 0.5,
549                         scale = 0.2,
550                         spread = {x = 5, y = 5, z = 5},
551                         seed = 2316,
552                         octaves = 1,
553                         persist = 0.0
554                 },
555         })
556
557         -- Dirt
558
559         minetest.register_ore({
560                 ore_type        = "blob",
561                 ore             = "default:dirt",
562                 wherein         = {"default:stone"},
563                 clust_scarcity  = 16 * 16 * 16,
564                 clust_size      = 5,
565                 y_max           = 31000,
566                 y_min           = -31,
567                 noise_threshold = 0.0,
568                 noise_params    = {
569                         offset = 0.5,
570                         scale = 0.2,
571                         spread = {x = 5, y = 5, z = 5},
572                         seed = 17676,
573                         octaves = 1,
574                         persist = 0.0
575                 },
576                 -- Only where default:dirt is present as surface material
577                 biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
578                                 "deciduous_forest", "deciduous_forest_shore", "rainforest",
579                                 "rainforest_swamp"}
580         })
581
582         -- Gravel
583
584         minetest.register_ore({
585                 ore_type        = "blob",
586                 ore             = "default:gravel",
587                 wherein         = {"default:stone"},
588                 clust_scarcity  = 16 * 16 * 16,
589                 clust_size      = 5,
590                 y_max           = 31000,
591                 y_min           = -31000,
592                 noise_threshold = 0.0,
593                 noise_params    = {
594                         offset = 0.5,
595                         scale = 0.2,
596                         spread = {x = 5, y = 5, z = 5},
597                         seed = 766,
598                         octaves = 1,
599                         persist = 0.0
600                 },
601         })
602
603         -- Scatter ores
604
605         -- Coal
606
607         minetest.register_ore({
608                 ore_type       = "scatter",
609                 ore            = "default:stone_with_coal",
610                 wherein        = "default:stone",
611                 clust_scarcity = 8 * 8 * 8,
612                 clust_num_ores = 9,
613                 clust_size     = 3,
614                 y_max          = 31000,
615                 y_min          = 1025,
616         })
617
618         minetest.register_ore({
619                 ore_type       = "scatter",
620                 ore            = "default:stone_with_coal",
621                 wherein        = "default:stone",
622                 clust_scarcity = 8 * 8 * 8,
623                 clust_num_ores = 8,
624                 clust_size     = 3,
625                 y_max          = 64,
626                 y_min          = -127,
627         })
628
629         minetest.register_ore({
630                 ore_type       = "scatter",
631                 ore            = "default:stone_with_coal",
632                 wherein        = "default:stone",
633                 clust_scarcity = 12 * 12 * 12,
634                 clust_num_ores = 30,
635                 clust_size     = 5,
636                 y_max          = -128,
637                 y_min          = -31000,
638         })
639
640         -- Tin
641
642         minetest.register_ore({
643                 ore_type       = "scatter",
644                 ore            = "default:stone_with_tin",
645                 wherein        = "default:stone",
646                 clust_scarcity = 10 * 10 * 10,
647                 clust_num_ores = 5,
648                 clust_size     = 3,
649                 y_max          = 31000,
650                 y_min          = 1025,
651         })
652
653         minetest.register_ore({
654                 ore_type       = "scatter",
655                 ore            = "default:stone_with_tin",
656                 wherein        = "default:stone",
657                 clust_scarcity = 13 * 13 * 13,
658                 clust_num_ores = 4,
659                 clust_size     = 3,
660                 y_max          = -64,
661                 y_min          = -127,
662         })
663
664         minetest.register_ore({
665                 ore_type       = "scatter",
666                 ore            = "default:stone_with_tin",
667                 wherein        = "default:stone",
668                 clust_scarcity = 10 * 10 * 10,
669                 clust_num_ores = 5,
670                 clust_size     = 3,
671                 y_max          = -128,
672                 y_min          = -31000,
673         })
674
675         -- Copper
676
677         minetest.register_ore({
678                 ore_type       = "scatter",
679                 ore            = "default:stone_with_copper",
680                 wherein        = "default:stone",
681                 clust_scarcity = 9 * 9 * 9,
682                 clust_num_ores = 5,
683                 clust_size     = 3,
684                 y_max          = 31000,
685                 y_min          = 1025,
686         })
687
688         minetest.register_ore({
689                 ore_type       = "scatter",
690                 ore            = "default:stone_with_copper",
691                 wherein        = "default:stone",
692                 clust_scarcity = 12 * 12 * 12,
693                 clust_num_ores = 4,
694                 clust_size     = 3,
695                 y_max          = -64,
696                 y_min          = -127,
697         })
698
699         minetest.register_ore({
700                 ore_type       = "scatter",
701                 ore            = "default:stone_with_copper",
702                 wherein        = "default:stone",
703                 clust_scarcity = 9 * 9 * 9,
704                 clust_num_ores = 5,
705                 clust_size     = 3,
706                 y_max          = -128,
707                 y_min          = -31000,
708         })
709
710         -- Iron
711
712         minetest.register_ore({
713                 ore_type       = "scatter",
714                 ore            = "default:stone_with_iron",
715                 wherein        = "default:stone",
716                 clust_scarcity = 9 * 9 * 9,
717                 clust_num_ores = 12,
718                 clust_size     = 3,
719                 y_max          = 31000,
720                 y_min          = 1025,
721         })
722
723         minetest.register_ore({
724                 ore_type       = "scatter",
725                 ore            = "default:stone_with_iron",
726                 wherein        = "default:stone",
727                 clust_scarcity = 7 * 7 * 7,
728                 clust_num_ores = 5,
729                 clust_size     = 3,
730                 y_max          = -128,
731                 y_min          = -255,
732         })
733
734         minetest.register_ore({
735                 ore_type       = "scatter",
736                 ore            = "default:stone_with_iron",
737                 wherein        = "default:stone",
738                 clust_scarcity = 12 * 12 * 12,
739                 clust_num_ores = 29,
740                 clust_size     = 5,
741                 y_max          = -256,
742                 y_min          = -31000,
743         })
744
745         -- Gold
746
747         minetest.register_ore({
748                 ore_type       = "scatter",
749                 ore            = "default:stone_with_gold",
750                 wherein        = "default:stone",
751                 clust_scarcity = 13 * 13 * 13,
752                 clust_num_ores = 5,
753                 clust_size     = 3,
754                 y_max          = 31000,
755                 y_min          = 1025,
756         })
757
758         minetest.register_ore({
759                 ore_type       = "scatter",
760                 ore            = "default:stone_with_gold",
761                 wherein        = "default:stone",
762                 clust_scarcity = 15 * 15 * 15,
763                 clust_num_ores = 3,
764                 clust_size     = 2,
765                 y_max          = -256,
766                 y_min          = -511,
767         })
768
769         minetest.register_ore({
770                 ore_type       = "scatter",
771                 ore            = "default:stone_with_gold",
772                 wherein        = "default:stone",
773                 clust_scarcity = 13 * 13 * 13,
774                 clust_num_ores = 5,
775                 clust_size     = 3,
776                 y_max          = -512,
777                 y_min          = -31000,
778         })
779
780         -- Mese crystal
781
782         minetest.register_ore({
783                 ore_type       = "scatter",
784                 ore            = "default:stone_with_mese",
785                 wherein        = "default:stone",
786                 clust_scarcity = 14 * 14 * 14,
787                 clust_num_ores = 5,
788                 clust_size     = 3,
789                 y_max          = 31000,
790                 y_min          = 1025,
791         })
792
793         minetest.register_ore({
794                 ore_type       = "scatter",
795                 ore            = "default:stone_with_mese",
796                 wherein        = "default:stone",
797                 clust_scarcity = 18 * 18 * 18,
798                 clust_num_ores = 3,
799                 clust_size     = 2,
800                 y_max          = -512,
801                 y_min          = -1023,
802         })
803
804         minetest.register_ore({
805                 ore_type       = "scatter",
806                 ore            = "default:stone_with_mese",
807                 wherein        = "default:stone",
808                 clust_scarcity = 14 * 14 * 14,
809                 clust_num_ores = 5,
810                 clust_size     = 3,
811                 y_max          = -1024,
812                 y_min          = -31000,
813         })
814
815         -- Diamond
816
817         minetest.register_ore({
818                 ore_type       = "scatter",
819                 ore            = "default:stone_with_diamond",
820                 wherein        = "default:stone",
821                 clust_scarcity = 15 * 15 * 15,
822                 clust_num_ores = 4,
823                 clust_size     = 3,
824                 y_max          = 31000,
825                 y_min          = 1025,
826         })
827
828         minetest.register_ore({
829                 ore_type       = "scatter",
830                 ore            = "default:stone_with_diamond",
831                 wherein        = "default:stone",
832                 clust_scarcity = 17 * 17 * 17,
833                 clust_num_ores = 4,
834                 clust_size     = 3,
835                 y_max          = -1024,
836                 y_min          = -2047,
837         })
838
839         minetest.register_ore({
840                 ore_type       = "scatter",
841                 ore            = "default:stone_with_diamond",
842                 wherein        = "default:stone",
843                 clust_scarcity = 15 * 15 * 15,
844                 clust_num_ores = 4,
845                 clust_size     = 3,
846                 y_max          = -2048,
847                 y_min          = -31000,
848         })
849
850         -- Mese block
851
852         minetest.register_ore({
853                 ore_type       = "scatter",
854                 ore            = "default:mese",
855                 wherein        = "default:stone",
856                 clust_scarcity = 36 * 36 * 36,
857                 clust_num_ores = 3,
858                 clust_size     = 2,
859                 y_max          = 31000,
860                 y_min          = 1025,
861         })
862
863         minetest.register_ore({
864                 ore_type       = "scatter",
865                 ore            = "default:mese",
866                 wherein        = "default:stone",
867                 clust_scarcity = 36 * 36 * 36,
868                 clust_num_ores = 3,
869                 clust_size     = 2,
870                 y_max          = -2048,
871                 y_min          = -4095,
872         })
873
874         minetest.register_ore({
875                 ore_type       = "scatter",
876                 ore            = "default:mese",
877                 wherein        = "default:stone",
878                 clust_scarcity = 28 * 28 * 28,
879                 clust_num_ores = 5,
880                 clust_size     = 3,
881                 y_max          = -4096,
882                 y_min          = -31000,
883         })
884 end
885
886
887 --
888 -- Register biomes
889 --
890
891 -- All mapgens except mgv6
892
893 function default.register_biomes()
894
895         -- Icesheet
896
897         minetest.register_biome({
898                 name = "icesheet",
899                 node_dust = "default:snowblock",
900                 node_top = "default:snowblock",
901                 depth_top = 1,
902                 node_filler = "default:snowblock",
903                 depth_filler = 3,
904                 node_stone = "default:cave_ice",
905                 node_water_top = "default:ice",
906                 depth_water_top = 10,
907                 node_river_water = "default:ice",
908                 node_riverbed = "default:gravel",
909                 depth_riverbed = 2,
910                 node_dungeon = "default:ice",
911                 node_dungeon_stair = "stairs:stair_ice",
912                 y_max = 31000,
913                 y_min = -8,
914                 heat_point = 0,
915                 humidity_point = 73,
916         })
917
918         minetest.register_biome({
919                 name = "icesheet_ocean",
920                 node_dust = "default:snowblock",
921                 node_top = "default:sand",
922                 depth_top = 1,
923                 node_filler = "default:sand",
924                 depth_filler = 3,
925                 node_water_top = "default:ice",
926                 depth_water_top = 10,
927                 node_cave_liquid = "default:water_source",
928                 node_dungeon = "default:cobble",
929                 node_dungeon_alt = "default:mossycobble",
930                 node_dungeon_stair = "stairs:stair_cobble",
931                 y_max = -9,
932                 y_min = -255,
933                 heat_point = 0,
934                 humidity_point = 73,
935         })
936
937         minetest.register_biome({
938                 name = "icesheet_under",
939                 node_cave_liquid = {"default:water_source", "default:lava_source"},
940                 node_dungeon = "default:cobble",
941                 node_dungeon_alt = "default:mossycobble",
942                 node_dungeon_stair = "stairs:stair_cobble",
943                 y_max = -256,
944                 y_min = -31000,
945                 heat_point = 0,
946                 humidity_point = 73,
947         })
948
949         -- Tundra
950
951         minetest.register_biome({
952                 name = "tundra_highland",
953                 node_dust = "default:snow",
954                 node_riverbed = "default:gravel",
955                 depth_riverbed = 2,
956                 node_dungeon = "default:cobble",
957                 node_dungeon_alt = "default:mossycobble",
958                 node_dungeon_stair = "stairs:stair_cobble",
959                 y_max = 31000,
960                 y_min = 47,
961                 heat_point = 0,
962                 humidity_point = 40,
963         })
964
965         minetest.register_biome({
966                 name = "tundra",
967                 node_top = "default:permafrost_with_stones",
968                 depth_top = 1,
969                 node_filler = "default:permafrost",
970                 depth_filler = 1,
971                 node_riverbed = "default:gravel",
972                 depth_riverbed = 2,
973                 node_dungeon = "default:cobble",
974                 node_dungeon_alt = "default:mossycobble",
975                 node_dungeon_stair = "stairs:stair_cobble",
976                 vertical_blend = 4,
977                 y_max = 46,
978                 y_min = 2,
979                 heat_point = 0,
980                 humidity_point = 40,
981         })
982
983         minetest.register_biome({
984                 name = "tundra_beach",
985                 node_top = "default:gravel",
986                 depth_top = 1,
987                 node_filler = "default:gravel",
988                 depth_filler = 2,
989                 node_riverbed = "default:gravel",
990                 depth_riverbed = 2,
991                 node_dungeon = "default:cobble",
992                 node_dungeon_alt = "default:mossycobble",
993                 node_dungeon_stair = "stairs:stair_cobble",
994                 vertical_blend = 1,
995                 y_max = 1,
996                 y_min = -3,
997                 heat_point = 0,
998                 humidity_point = 40,
999         })
1000
1001         minetest.register_biome({
1002                 name = "tundra_ocean",
1003                 node_top = "default:sand",
1004                 depth_top = 1,
1005                 node_filler = "default:sand",
1006                 depth_filler = 3,
1007                 node_riverbed = "default:gravel",
1008                 depth_riverbed = 2,
1009                 node_cave_liquid = "default:water_source",
1010                 node_dungeon = "default:cobble",
1011                 node_dungeon_alt = "default:mossycobble",
1012                 node_dungeon_stair = "stairs:stair_cobble",
1013                 vertical_blend = 1,
1014                 y_max = -4,
1015                 y_min = -255,
1016                 heat_point = 0,
1017                 humidity_point = 40,
1018         })
1019
1020         minetest.register_biome({
1021                 name = "tundra_under",
1022                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1023                 node_dungeon = "default:cobble",
1024                 node_dungeon_alt = "default:mossycobble",
1025                 node_dungeon_stair = "stairs:stair_cobble",
1026                 y_max = -256,
1027                 y_min = -31000,
1028                 heat_point = 0,
1029                 humidity_point = 40,
1030         })
1031
1032         -- Taiga
1033
1034         minetest.register_biome({
1035                 name = "taiga",
1036                 node_dust = "default:snow",
1037                 node_top = "default:dirt_with_snow",
1038                 depth_top = 1,
1039                 node_filler = "default:dirt",
1040                 depth_filler = 3,
1041                 node_riverbed = "default:sand",
1042                 depth_riverbed = 2,
1043                 node_dungeon = "default:cobble",
1044                 node_dungeon_alt = "default:mossycobble",
1045                 node_dungeon_stair = "stairs:stair_cobble",
1046                 y_max = 31000,
1047                 y_min = 4,
1048                 heat_point = 25,
1049                 humidity_point = 70,
1050         })
1051
1052         minetest.register_biome({
1053                 name = "taiga_ocean",
1054                 node_dust = "default:snow",
1055                 node_top = "default:sand",
1056                 depth_top = 1,
1057                 node_filler = "default:sand",
1058                 depth_filler = 3,
1059                 node_riverbed = "default:sand",
1060                 depth_riverbed = 2,
1061                 node_cave_liquid = "default:water_source",
1062                 node_dungeon = "default:cobble",
1063                 node_dungeon_alt = "default:mossycobble",
1064                 node_dungeon_stair = "stairs:stair_cobble",
1065                 vertical_blend = 1,
1066                 y_max = 3,
1067                 y_min = -255,
1068                 heat_point = 25,
1069                 humidity_point = 70,
1070         })
1071
1072         minetest.register_biome({
1073                 name = "taiga_under",
1074                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1075                 node_dungeon = "default:cobble",
1076                 node_dungeon_alt = "default:mossycobble",
1077                 node_dungeon_stair = "stairs:stair_cobble",
1078                 y_max = -256,
1079                 y_min = -31000,
1080                 heat_point = 25,
1081                 humidity_point = 70,
1082         })
1083
1084         -- Snowy grassland
1085
1086         minetest.register_biome({
1087                 name = "snowy_grassland",
1088                 node_dust = "default:snow",
1089                 node_top = "default:dirt_with_snow",
1090                 depth_top = 1,
1091                 node_filler = "default:dirt",
1092                 depth_filler = 1,
1093                 node_riverbed = "default:sand",
1094                 depth_riverbed = 2,
1095                 node_dungeon = "default:cobble",
1096                 node_dungeon_alt = "default:mossycobble",
1097                 node_dungeon_stair = "stairs:stair_cobble",
1098                 y_max = 31000,
1099                 y_min = 4,
1100                 heat_point = 20,
1101                 humidity_point = 35,
1102         })
1103
1104         minetest.register_biome({
1105                 name = "snowy_grassland_ocean",
1106                 node_dust = "default:snow",
1107                 node_top = "default:sand",
1108                 depth_top = 1,
1109                 node_filler = "default:sand",
1110                 depth_filler = 3,
1111                 node_riverbed = "default:sand",
1112                 depth_riverbed = 2,
1113                 node_cave_liquid = "default:water_source",
1114                 node_dungeon = "default:cobble",
1115                 node_dungeon_alt = "default:mossycobble",
1116                 node_dungeon_stair = "stairs:stair_cobble",
1117                 vertical_blend = 1,
1118                 y_max = 3,
1119                 y_min = -255,
1120                 heat_point = 20,
1121                 humidity_point = 35,
1122         })
1123
1124         minetest.register_biome({
1125                 name = "snowy_grassland_under",
1126                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1127                 node_dungeon = "default:cobble",
1128                 node_dungeon_alt = "default:mossycobble",
1129                 node_dungeon_stair = "stairs:stair_cobble",
1130                 y_max = -256,
1131                 y_min = -31000,
1132                 heat_point = 20,
1133                 humidity_point = 35,
1134         })
1135
1136         -- Grassland
1137
1138         minetest.register_biome({
1139                 name = "grassland",
1140                 node_top = "default:dirt_with_grass",
1141                 depth_top = 1,
1142                 node_filler = "default:dirt",
1143                 depth_filler = 1,
1144                 node_riverbed = "default:sand",
1145                 depth_riverbed = 2,
1146                 node_dungeon = "default:cobble",
1147                 node_dungeon_alt = "default:mossycobble",
1148                 node_dungeon_stair = "stairs:stair_cobble",
1149                 y_max = 31000,
1150                 y_min = 6,
1151                 heat_point = 50,
1152                 humidity_point = 35,
1153         })
1154
1155         minetest.register_biome({
1156                 name = "grassland_dunes",
1157                 node_top = "default:sand",
1158                 depth_top = 1,
1159                 node_filler = "default:sand",
1160                 depth_filler = 2,
1161                 node_riverbed = "default:sand",
1162                 depth_riverbed = 2,
1163                 node_dungeon = "default:cobble",
1164                 node_dungeon_alt = "default:mossycobble",
1165                 node_dungeon_stair = "stairs:stair_cobble",
1166                 vertical_blend = 1,
1167                 y_max = 5,
1168                 y_min = 4,
1169                 heat_point = 50,
1170                 humidity_point = 35,
1171         })
1172
1173         minetest.register_biome({
1174                 name = "grassland_ocean",
1175                 node_top = "default:sand",
1176                 depth_top = 1,
1177                 node_filler = "default:sand",
1178                 depth_filler = 3,
1179                 node_riverbed = "default:sand",
1180                 depth_riverbed = 2,
1181                 node_cave_liquid = "default:water_source",
1182                 node_dungeon = "default:cobble",
1183                 node_dungeon_alt = "default:mossycobble",
1184                 node_dungeon_stair = "stairs:stair_cobble",
1185                 y_max = 3,
1186                 y_min = -255,
1187                 heat_point = 50,
1188                 humidity_point = 35,
1189         })
1190
1191         minetest.register_biome({
1192                 name = "grassland_under",
1193                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1194                 node_dungeon = "default:cobble",
1195                 node_dungeon_alt = "default:mossycobble",
1196                 node_dungeon_stair = "stairs:stair_cobble",
1197                 y_max = -256,
1198                 y_min = -31000,
1199                 heat_point = 50,
1200                 humidity_point = 35,
1201         })
1202
1203         -- Coniferous forest
1204
1205         minetest.register_biome({
1206                 name = "coniferous_forest",
1207                 node_top = "default:dirt_with_coniferous_litter",
1208                 depth_top = 1,
1209                 node_filler = "default:dirt",
1210                 depth_filler = 3,
1211                 node_riverbed = "default:sand",
1212                 depth_riverbed = 2,
1213                 node_dungeon = "default:cobble",
1214                 node_dungeon_alt = "default:mossycobble",
1215                 node_dungeon_stair = "stairs:stair_cobble",
1216                 y_max = 31000,
1217                 y_min = 6,
1218                 heat_point = 45,
1219                 humidity_point = 70,
1220         })
1221
1222         minetest.register_biome({
1223                 name = "coniferous_forest_dunes",
1224                 node_top = "default:sand",
1225                 depth_top = 1,
1226                 node_filler = "default:sand",
1227                 depth_filler = 3,
1228                 node_riverbed = "default:sand",
1229                 depth_riverbed = 2,
1230                 node_dungeon = "default:cobble",
1231                 node_dungeon_alt = "default:mossycobble",
1232                 node_dungeon_stair = "stairs:stair_cobble",
1233                 vertical_blend = 1,
1234                 y_max = 5,
1235                 y_min = 4,
1236                 heat_point = 45,
1237                 humidity_point = 70,
1238         })
1239
1240         minetest.register_biome({
1241                 name = "coniferous_forest_ocean",
1242                 node_top = "default:sand",
1243                 depth_top = 1,
1244                 node_filler = "default:sand",
1245                 depth_filler = 3,
1246                 node_riverbed = "default:sand",
1247                 depth_riverbed = 2,
1248                 node_cave_liquid = "default:water_source",
1249                 node_dungeon = "default:cobble",
1250                 node_dungeon_alt = "default:mossycobble",
1251                 node_dungeon_stair = "stairs:stair_cobble",
1252                 y_max = 3,
1253                 y_min = -255,
1254                 heat_point = 45,
1255                 humidity_point = 70,
1256         })
1257
1258         minetest.register_biome({
1259                 name = "coniferous_forest_under",
1260                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1261                 node_dungeon = "default:cobble",
1262                 node_dungeon_alt = "default:mossycobble",
1263                 node_dungeon_stair = "stairs:stair_cobble",
1264                 y_max = -256,
1265                 y_min = -31000,
1266                 heat_point = 45,
1267                 humidity_point = 70,
1268         })
1269
1270         -- Deciduous forest
1271
1272         minetest.register_biome({
1273                 name = "deciduous_forest",
1274                 node_top = "default:dirt_with_grass",
1275                 depth_top = 1,
1276                 node_filler = "default:dirt",
1277                 depth_filler = 3,
1278                 node_riverbed = "default:sand",
1279                 depth_riverbed = 2,
1280                 node_dungeon = "default:cobble",
1281                 node_dungeon_alt = "default:mossycobble",
1282                 node_dungeon_stair = "stairs:stair_cobble",
1283                 y_max = 31000,
1284                 y_min = 1,
1285                 heat_point = 60,
1286                 humidity_point = 68,
1287         })
1288
1289         minetest.register_biome({
1290                 name = "deciduous_forest_shore",
1291                 node_top = "default:dirt",
1292                 depth_top = 1,
1293                 node_filler = "default:dirt",
1294                 depth_filler = 3,
1295                 node_riverbed = "default:sand",
1296                 depth_riverbed = 2,
1297                 node_dungeon = "default:cobble",
1298                 node_dungeon_alt = "default:mossycobble",
1299                 node_dungeon_stair = "stairs:stair_cobble",
1300                 y_max = 0,
1301                 y_min = -1,
1302                 heat_point = 60,
1303                 humidity_point = 68,
1304         })
1305
1306         minetest.register_biome({
1307                 name = "deciduous_forest_ocean",
1308                 node_top = "default:sand",
1309                 depth_top = 1,
1310                 node_filler = "default:sand",
1311                 depth_filler = 3,
1312                 node_riverbed = "default:sand",
1313                 depth_riverbed = 2,
1314                 node_cave_liquid = "default:water_source",
1315                 node_dungeon = "default:cobble",
1316                 node_dungeon_alt = "default:mossycobble",
1317                 node_dungeon_stair = "stairs:stair_cobble",
1318                 vertical_blend = 1,
1319                 y_max = -2,
1320                 y_min = -255,
1321                 heat_point = 60,
1322                 humidity_point = 68,
1323         })
1324
1325         minetest.register_biome({
1326                 name = "deciduous_forest_under",
1327                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1328                 node_dungeon = "default:cobble",
1329                 node_dungeon_alt = "default:mossycobble",
1330                 node_dungeon_stair = "stairs:stair_cobble",
1331                 y_max = -256,
1332                 y_min = -31000,
1333                 heat_point = 60,
1334                 humidity_point = 68,
1335         })
1336
1337         -- Desert
1338
1339         minetest.register_biome({
1340                 name = "desert",
1341                 node_top = "default:desert_sand",
1342                 depth_top = 1,
1343                 node_filler = "default:desert_sand",
1344                 depth_filler = 1,
1345                 node_stone = "default:desert_stone",
1346                 node_riverbed = "default:sand",
1347                 depth_riverbed = 2,
1348                 node_dungeon = "default:desert_stone",
1349                 node_dungeon_stair = "stairs:stair_desert_stone",
1350                 y_max = 31000,
1351                 y_min = 4,
1352                 heat_point = 92,
1353                 humidity_point = 16,
1354         })
1355
1356         minetest.register_biome({
1357                 name = "desert_ocean",
1358                 node_top = "default:sand",
1359                 depth_top = 1,
1360                 node_filler = "default:sand",
1361                 depth_filler = 3,
1362                 node_stone = "default:desert_stone",
1363                 node_riverbed = "default:sand",
1364                 depth_riverbed = 2,
1365                 node_cave_liquid = "default:water_source",
1366                 node_dungeon = "default:desert_stone",
1367                 node_dungeon_stair = "stairs:stair_desert_stone",
1368                 vertical_blend = 1,
1369                 y_max = 3,
1370                 y_min = -255,
1371                 heat_point = 92,
1372                 humidity_point = 16,
1373         })
1374
1375         minetest.register_biome({
1376                 name = "desert_under",
1377                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1378                 node_dungeon = "default:cobble",
1379                 node_dungeon_alt = "default:mossycobble",
1380                 node_dungeon_stair = "stairs:stair_cobble",
1381                 y_max = -256,
1382                 y_min = -31000,
1383                 heat_point = 92,
1384                 humidity_point = 16,
1385         })
1386
1387         -- Sandstone desert
1388
1389         minetest.register_biome({
1390                 name = "sandstone_desert",
1391                 node_top = "default:sand",
1392                 depth_top = 1,
1393                 node_filler = "default:sand",
1394                 depth_filler = 1,
1395                 node_stone = "default:sandstone",
1396                 node_riverbed = "default:sand",
1397                 depth_riverbed = 2,
1398                 node_dungeon = "default:sandstonebrick",
1399                 node_dungeon_stair = "stairs:stair_sandstone_block",
1400                 y_max = 31000,
1401                 y_min = 4,
1402                 heat_point = 60,
1403                 humidity_point = 0,
1404         })
1405
1406         minetest.register_biome({
1407                 name = "sandstone_desert_ocean",
1408                 node_top = "default:sand",
1409                 depth_top = 1,
1410                 node_filler = "default:sand",
1411                 depth_filler = 3,
1412                 node_stone = "default:sandstone",
1413                 node_riverbed = "default:sand",
1414                 depth_riverbed = 2,
1415                 node_cave_liquid = "default:water_source",
1416                 node_dungeon = "default:sandstonebrick",
1417                 node_dungeon_stair = "stairs:stair_sandstone_block",
1418                 y_max = 3,
1419                 y_min = -255,
1420                 heat_point = 60,
1421                 humidity_point = 0,
1422         })
1423
1424         minetest.register_biome({
1425                 name = "sandstone_desert_under",
1426                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1427                 node_dungeon = "default:cobble",
1428                 node_dungeon_alt = "default:mossycobble",
1429                 node_dungeon_stair = "stairs:stair_cobble",
1430                 y_max = -256,
1431                 y_min = -31000,
1432                 heat_point = 60,
1433                 humidity_point = 0,
1434         })
1435
1436         -- Cold desert
1437
1438         minetest.register_biome({
1439                 name = "cold_desert",
1440                 node_top = "default:silver_sand",
1441                 depth_top = 1,
1442                 node_filler = "default:silver_sand",
1443                 depth_filler = 1,
1444                 node_riverbed = "default:sand",
1445                 depth_riverbed = 2,
1446                 node_dungeon = "default:cobble",
1447                 node_dungeon_alt = "default:mossycobble",
1448                 node_dungeon_stair = "stairs:stair_cobble",
1449                 y_max = 31000,
1450                 y_min = 4,
1451                 heat_point = 40,
1452                 humidity_point = 0,
1453         })
1454
1455         minetest.register_biome({
1456                 name = "cold_desert_ocean",
1457                 node_top = "default:sand",
1458                 depth_top = 1,
1459                 node_filler = "default:sand",
1460                 depth_filler = 3,
1461                 node_riverbed = "default:sand",
1462                 depth_riverbed = 2,
1463                 node_cave_liquid = "default:water_source",
1464                 node_dungeon = "default:cobble",
1465                 node_dungeon_alt = "default:mossycobble",
1466                 node_dungeon_stair = "stairs:stair_cobble",
1467                 vertical_blend = 1,
1468                 y_max = 3,
1469                 y_min = -255,
1470                 heat_point = 40,
1471                 humidity_point = 0,
1472         })
1473
1474         minetest.register_biome({
1475                 name = "cold_desert_under",
1476                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1477                 node_dungeon = "default:cobble",
1478                 node_dungeon_alt = "default:mossycobble",
1479                 node_dungeon_stair = "stairs:stair_cobble",
1480                 y_max = -256,
1481                 y_min = -31000,
1482                 heat_point = 40,
1483                 humidity_point = 0,
1484         })
1485
1486         -- Savanna
1487
1488         minetest.register_biome({
1489                 name = "savanna",
1490                 node_top = "default:dry_dirt_with_dry_grass",
1491                 depth_top = 1,
1492                 node_filler = "default:dry_dirt",
1493                 depth_filler = 1,
1494                 node_riverbed = "default:sand",
1495                 depth_riverbed = 2,
1496                 node_dungeon = "default:cobble",
1497                 node_dungeon_alt = "default:mossycobble",
1498                 node_dungeon_stair = "stairs:stair_cobble",
1499                 y_max = 31000,
1500                 y_min = 1,
1501                 heat_point = 89,
1502                 humidity_point = 42,
1503         })
1504
1505         minetest.register_biome({
1506                 name = "savanna_shore",
1507                 node_top = "default:dry_dirt",
1508                 depth_top = 1,
1509                 node_filler = "default:dry_dirt",
1510                 depth_filler = 3,
1511                 node_riverbed = "default:sand",
1512                 depth_riverbed = 2,
1513                 node_dungeon = "default:cobble",
1514                 node_dungeon_alt = "default:mossycobble",
1515                 node_dungeon_stair = "stairs:stair_cobble",
1516                 y_max = 0,
1517                 y_min = -1,
1518                 heat_point = 89,
1519                 humidity_point = 42,
1520         })
1521
1522         minetest.register_biome({
1523                 name = "savanna_ocean",
1524                 node_top = "default:sand",
1525                 depth_top = 1,
1526                 node_filler = "default:sand",
1527                 depth_filler = 3,
1528                 node_riverbed = "default:sand",
1529                 depth_riverbed = 2,
1530                 node_cave_liquid = "default:water_source",
1531                 node_dungeon = "default:cobble",
1532                 node_dungeon_alt = "default:mossycobble",
1533                 node_dungeon_stair = "stairs:stair_cobble",
1534                 vertical_blend = 1,
1535                 y_max = -2,
1536                 y_min = -255,
1537                 heat_point = 89,
1538                 humidity_point = 42,
1539         })
1540
1541         minetest.register_biome({
1542                 name = "savanna_under",
1543                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1544                 node_dungeon = "default:cobble",
1545                 node_dungeon_alt = "default:mossycobble",
1546                 node_dungeon_stair = "stairs:stair_cobble",
1547                 y_max = -256,
1548                 y_min = -31000,
1549                 heat_point = 89,
1550                 humidity_point = 42,
1551         })
1552
1553         -- Rainforest
1554
1555         minetest.register_biome({
1556                 name = "rainforest",
1557                 node_top = "default:dirt_with_rainforest_litter",
1558                 depth_top = 1,
1559                 node_filler = "default:dirt",
1560                 depth_filler = 3,
1561                 node_riverbed = "default:sand",
1562                 depth_riverbed = 2,
1563                 node_dungeon = "default:cobble",
1564                 node_dungeon_alt = "default:mossycobble",
1565                 node_dungeon_stair = "stairs:stair_cobble",
1566                 y_max = 31000,
1567                 y_min = 1,
1568                 heat_point = 86,
1569                 humidity_point = 65,
1570         })
1571
1572         minetest.register_biome({
1573                 name = "rainforest_swamp",
1574                 node_top = "default:dirt",
1575                 depth_top = 1,
1576                 node_filler = "default:dirt",
1577                 depth_filler = 3,
1578                 node_riverbed = "default:sand",
1579                 depth_riverbed = 2,
1580                 node_dungeon = "default:cobble",
1581                 node_dungeon_alt = "default:mossycobble",
1582                 node_dungeon_stair = "stairs:stair_cobble",
1583                 y_max = 0,
1584                 y_min = -1,
1585                 heat_point = 86,
1586                 humidity_point = 65,
1587         })
1588
1589         minetest.register_biome({
1590                 name = "rainforest_ocean",
1591                 node_top = "default:sand",
1592                 depth_top = 1,
1593                 node_filler = "default:sand",
1594                 depth_filler = 3,
1595                 node_riverbed = "default:sand",
1596                 depth_riverbed = 2,
1597                 node_cave_liquid = "default:water_source",
1598                 node_dungeon = "default:cobble",
1599                 node_dungeon_alt = "default:mossycobble",
1600                 node_dungeon_stair = "stairs:stair_cobble",
1601                 vertical_blend = 1,
1602                 y_max = -2,
1603                 y_min = -255,
1604                 heat_point = 86,
1605                 humidity_point = 65,
1606         })
1607
1608         minetest.register_biome({
1609                 name = "rainforest_under",
1610                 node_cave_liquid = {"default:water_source", "default:lava_source"},
1611                 node_dungeon = "default:cobble",
1612                 node_dungeon_alt = "default:mossycobble",
1613                 node_dungeon_stair = "stairs:stair_cobble",
1614                 y_max = -256,
1615                 y_min = -31000,
1616                 heat_point = 86,
1617                 humidity_point = 65,
1618         })
1619 end
1620
1621
1622 --
1623 -- Register decorations
1624 --
1625
1626 -- Mgv6
1627
1628 function default.register_mgv6_decorations()
1629
1630         -- Papyrus
1631
1632         minetest.register_decoration({
1633                 name = "default:papyrus",
1634                 deco_type = "simple",
1635                 place_on = {"default:dirt_with_grass"},
1636                 sidelen = 16,
1637                 noise_params = {
1638                         offset = -0.3,
1639                         scale = 0.7,
1640                         spread = {x = 100, y = 100, z = 100},
1641                         seed = 354,
1642                         octaves = 3,
1643                         persist = 0.7
1644                 },
1645                 y_max = 1,
1646                 y_min = 1,
1647                 decoration = "default:papyrus",
1648                 height = 2,
1649                 height_max = 4,
1650                 spawn_by = "default:water_source",
1651                 num_spawn_by = 1,
1652         })
1653
1654         -- Cacti
1655
1656         minetest.register_decoration({
1657                 name = "default:cactus",
1658                 deco_type = "simple",
1659                 place_on = {"default:desert_sand"},
1660                 sidelen = 16,
1661                 noise_params = {
1662                         offset = -0.012,
1663                         scale = 0.024,
1664                         spread = {x = 100, y = 100, z = 100},
1665                         seed = 230,
1666                         octaves = 3,
1667                         persist = 0.6
1668                 },
1669                 y_max = 30,
1670                 y_min = 1,
1671                 decoration = "default:cactus",
1672                 height = 3,
1673                 height_max = 4,
1674         })
1675
1676         -- Long grasses
1677
1678         for length = 1, 5 do
1679                 minetest.register_decoration({
1680                         name = "default:grass_"..length,
1681                         deco_type = "simple",
1682                         place_on = {"default:dirt_with_grass"},
1683                         sidelen = 16,
1684                         noise_params = {
1685                                 offset = 0,
1686                                 scale = 0.007,
1687                                 spread = {x = 100, y = 100, z = 100},
1688                                 seed = 329,
1689                                 octaves = 3,
1690                                 persist = 0.6
1691                         },
1692                         y_max = 30,
1693                         y_min = 1,
1694                         decoration = "default:grass_"..length,
1695                 })
1696         end
1697
1698         -- Dry shrubs
1699
1700         minetest.register_decoration({
1701                 name = "default:dry_shrub",
1702                 deco_type = "simple",
1703                 place_on = {"default:desert_sand", "default:dirt_with_snow"},
1704                 sidelen = 16,
1705                 noise_params = {
1706                         offset = 0,
1707                         scale = 0.035,
1708                         spread = {x = 100, y = 100, z = 100},
1709                         seed = 329,
1710                         octaves = 3,
1711                         persist = 0.6
1712                 },
1713                 y_max = 30,
1714                 y_min = 1,
1715                 decoration = "default:dry_shrub",
1716                 param2 = 4,
1717         })
1718 end
1719
1720
1721 -- All mapgens except mgv6
1722
1723 local function register_grass_decoration(offset, scale, length)
1724         minetest.register_decoration({
1725                 name = "default:grass_" .. length,
1726                 deco_type = "simple",
1727                 place_on = {"default:dirt_with_grass"},
1728                 sidelen = 16,
1729                 noise_params = {
1730                         offset = offset,
1731                         scale = scale,
1732                         spread = {x = 200, y = 200, z = 200},
1733                         seed = 329,
1734                         octaves = 3,
1735                         persist = 0.6
1736                 },
1737                 biomes = {"grassland", "deciduous_forest"},
1738                 y_max = 31000,
1739                 y_min = 1,
1740                 decoration = "default:grass_" .. length,
1741         })
1742 end
1743
1744 local function register_dry_grass_decoration(offset, scale, length)
1745         minetest.register_decoration({
1746                 name = "default:dry_grass_" .. length,
1747                 deco_type = "simple",
1748                 place_on = {"default:dry_dirt_with_dry_grass"},
1749                 sidelen = 16,
1750                 noise_params = {
1751                         offset = offset,
1752                         scale = scale,
1753                         spread = {x = 200, y = 200, z = 200},
1754                         seed = 329,
1755                         octaves = 3,
1756                         persist = 0.6
1757                 },
1758                 biomes = {"savanna"},
1759                 y_max = 31000,
1760                 y_min = 1,
1761                 decoration = "default:dry_grass_" .. length,
1762         })
1763 end
1764
1765 local function register_fern_decoration(seed, length)
1766         minetest.register_decoration({
1767                 name = "default:fern_" .. length,
1768                 deco_type = "simple",
1769                 place_on = {"default:dirt_with_coniferous_litter"},
1770                 sidelen = 16,
1771                 noise_params = {
1772                         offset = 0,
1773                         scale = 0.2,
1774                         spread = {x = 100, y = 100, z = 100},
1775                         seed = seed,
1776                         octaves = 3,
1777                         persist = 0.7
1778                 },
1779                 biomes = {"coniferous_forest"},
1780                 y_max = 31000,
1781                 y_min = 6,
1782                 decoration = "default:fern_" .. length,
1783         })
1784 end
1785
1786
1787 function default.register_decorations()
1788         -- Savanna bare dirt patches.
1789         -- Must come before all savanna decorations that are placed on dry grass.
1790         -- Noise is similar to long dry grass noise, but scale inverted, to appear
1791         -- where long dry grass is least dense and shortest.
1792
1793         minetest.register_decoration({
1794                 deco_type = "simple",
1795                 place_on = {"default:dry_dirt_with_dry_grass"},
1796                 sidelen = 4,
1797                 noise_params = {
1798                         offset = -1.5,
1799                         scale = -1.5,
1800                         spread = {x = 200, y = 200, z = 200},
1801                         seed = 329,
1802                         octaves = 4,
1803                         persist = 1.0
1804                 },
1805                 biomes = {"savanna"},
1806                 y_max = 31000,
1807                 y_min = 1,
1808                 decoration = "default:dry_dirt",
1809                 place_offset_y = -1,
1810                 flags = "force_placement",
1811         })
1812
1813         -- Apple tree and log
1814
1815         minetest.register_decoration({
1816                 name = "default:apple_tree",
1817                 deco_type = "schematic",
1818                 place_on = {"default:dirt_with_grass"},
1819                 sidelen = 16,
1820                 noise_params = {
1821                         offset = 0.024,
1822                         scale = 0.015,
1823                         spread = {x = 250, y = 250, z = 250},
1824                         seed = 2,
1825                         octaves = 3,
1826                         persist = 0.66
1827                 },
1828                 biomes = {"deciduous_forest"},
1829                 y_max = 31000,
1830                 y_min = 1,
1831                 schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts",
1832                 flags = "place_center_x, place_center_z",
1833                 rotation = "random",
1834         })
1835
1836         minetest.register_decoration({
1837                 name = "default:apple_log",
1838                 deco_type = "schematic",
1839                 place_on = {"default:dirt_with_grass"},
1840                 place_offset_y = 1,
1841                 sidelen = 16,
1842                 noise_params = {
1843                         offset = 0.0012,
1844                         scale = 0.0007,
1845                         spread = {x = 250, y = 250, z = 250},
1846                         seed = 2,
1847                         octaves = 3,
1848                         persist = 0.66
1849                 },
1850                 biomes = {"deciduous_forest"},
1851                 y_max = 31000,
1852                 y_min = 1,
1853                 schematic = minetest.get_modpath("default") .. "/schematics/apple_log.mts",
1854                 flags = "place_center_x",
1855                 rotation = "random",
1856                 spawn_by = "default:dirt_with_grass",
1857                 num_spawn_by = 8,
1858         })
1859
1860         -- Emergent jungle tree
1861         -- Due to 32 node height, altitude is limited and prescence depends on chunksize
1862
1863         local chunksize = tonumber(minetest.get_mapgen_setting("chunksize"))
1864         if chunksize >= 5 then
1865                 minetest.register_decoration({
1866                         name = "default:emergent_jungle_tree",
1867                         deco_type = "schematic",
1868                         place_on = {"default:dirt_with_rainforest_litter"},
1869                         sidelen = 80,
1870                         noise_params = {
1871                                 offset = 0.0,
1872                                 scale = 0.0025,
1873                                 spread = {x = 250, y = 250, z = 250},
1874                                 seed = 2685,
1875                                 octaves = 3,
1876                                 persist = 0.7
1877                         },
1878                         biomes = {"rainforest"},
1879                         y_max = 32,
1880                         y_min = 1,
1881                         schematic = minetest.get_modpath("default") ..
1882                                         "/schematics/emergent_jungle_tree.mts",
1883                         flags = "place_center_x, place_center_z",
1884                         rotation = "random",
1885                         place_offset_y = -4,
1886                 })
1887         end
1888
1889         -- Jungle tree and log
1890
1891         minetest.register_decoration({
1892                 name = "default:jungle_tree",
1893                 deco_type = "schematic",
1894                 place_on = {"default:dirt_with_rainforest_litter"},
1895                 sidelen = 80,
1896                 fill_ratio = 0.1,
1897                 biomes = {"rainforest"},
1898                 y_max = 31000,
1899                 y_min = 1,
1900                 schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
1901                 flags = "place_center_x, place_center_z",
1902                 rotation = "random",
1903         })
1904
1905         -- Swamp jungle trees
1906
1907         minetest.register_decoration({
1908                 name = "default:jungle_tree(swamp)",
1909                 deco_type = "schematic",
1910                 place_on = {"default:dirt"},
1911                 sidelen = 16,
1912                 -- Noise tuned to place swamp trees where papyrus is absent
1913                 noise_params = {
1914                         offset = 0.0,
1915                         scale = -0.1,
1916                         spread = {x = 200, y = 200, z = 200},
1917                         seed = 354,
1918                         octaves = 1,
1919                         persist = 0.5
1920                 },
1921                 biomes = {"rainforest_swamp"},
1922                 y_max = 0,
1923                 y_min = -1,
1924                 schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
1925                 flags = "place_center_x, place_center_z",
1926                 rotation = "random",
1927         })
1928
1929         minetest.register_decoration({
1930                 name = "default:jungle_log",
1931                 deco_type = "schematic",
1932                 place_on = {"default:dirt_with_rainforest_litter"},
1933                 place_offset_y = 1,
1934                 sidelen = 80,
1935                 fill_ratio = 0.005,
1936                 biomes = {"rainforest"},
1937                 y_max = 31000,
1938                 y_min = 1,
1939                 schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
1940                 flags = "place_center_x",
1941                 rotation = "random",
1942                 spawn_by = "default:dirt_with_rainforest_litter",
1943                 num_spawn_by = 8,
1944         })
1945
1946         -- Taiga and temperate coniferous forest pine tree, small pine tree and log
1947
1948         minetest.register_decoration({
1949                 name = "default:pine_tree",
1950                 deco_type = "schematic",
1951                 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1952                 sidelen = 16,
1953                 noise_params = {
1954                         offset = 0.010,
1955                         scale = 0.048,
1956                         spread = {x = 250, y = 250, z = 250},
1957                         seed = 2,
1958                         octaves = 3,
1959                         persist = 0.66
1960                 },
1961                 biomes = {"taiga", "coniferous_forest"},
1962                 y_max = 31000,
1963                 y_min = 4,
1964                 schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
1965                 flags = "place_center_x, place_center_z",
1966         })
1967
1968         minetest.register_decoration({
1969                 name = "default:small_pine_tree",
1970                 deco_type = "schematic",
1971                 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1972                 sidelen = 16,
1973                 noise_params = {
1974                         offset = 0.010,
1975                         scale = -0.048,
1976                         spread = {x = 250, y = 250, z = 250},
1977                         seed = 2,
1978                         octaves = 3,
1979                         persist = 0.66
1980                 },
1981                 biomes = {"taiga", "coniferous_forest"},
1982                 y_max = 31000,
1983                 y_min = 4,
1984                 schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
1985                 flags = "place_center_x, place_center_z",
1986         })
1987
1988         minetest.register_decoration({
1989                 name = "default:pine_log",
1990                 deco_type = "schematic",
1991                 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1992                 place_offset_y = 1,
1993                 sidelen = 80,
1994                 fill_ratio = 0.0018,
1995                 biomes = {"taiga", "coniferous_forest"},
1996                 y_max = 31000,
1997                 y_min = 4,
1998                 schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
1999                 flags = "place_center_x",
2000                 rotation = "random",
2001                 spawn_by = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
2002                 num_spawn_by = 8,
2003         })
2004
2005         -- Acacia tree and log
2006
2007         minetest.register_decoration({
2008                 name = "default:acacia_tree",
2009                 deco_type = "schematic",
2010                 place_on = {"default:dry_dirt_with_dry_grass"},
2011                 sidelen = 16,
2012                 noise_params = {
2013                         offset = 0,
2014                         scale = 0.002,
2015                         spread = {x = 250, y = 250, z = 250},
2016                         seed = 2,
2017                         octaves = 3,
2018                         persist = 0.66
2019                 },
2020                 biomes = {"savanna"},
2021                 y_max = 31000,
2022                 y_min = 1,
2023                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts",
2024                 flags = "place_center_x, place_center_z",
2025                 rotation = "random",
2026         })
2027
2028         minetest.register_decoration({
2029                 name = "default:acacia_log",
2030                 deco_type = "schematic",
2031                 place_on = {"default:dry_dirt_with_dry_grass"},
2032                 place_offset_y = 1,
2033                 sidelen = 16,
2034                 noise_params = {
2035                         offset = 0,
2036                         scale = 0.001,
2037                         spread = {x = 250, y = 250, z = 250},
2038                         seed = 2,
2039                         octaves = 3,
2040                         persist = 0.66
2041                 },
2042                 biomes = {"savanna"},
2043                 y_max = 31000,
2044                 y_min = 1,
2045                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts",
2046                 flags = "place_center_x",
2047                 rotation = "random",
2048                 spawn_by = "default:dry_dirt_with_dry_grass",
2049                 num_spawn_by = 8,
2050         })
2051
2052         -- Aspen tree and log
2053
2054         minetest.register_decoration({
2055                 name = "default:aspen_tree",
2056                 deco_type = "schematic",
2057                 place_on = {"default:dirt_with_grass"},
2058                 sidelen = 16,
2059                 noise_params = {
2060                         offset = 0.0,
2061                         scale = -0.015,
2062                         spread = {x = 250, y = 250, z = 250},
2063                         seed = 2,
2064                         octaves = 3,
2065                         persist = 0.66
2066                 },
2067                 biomes = {"deciduous_forest"},
2068                 y_max = 31000,
2069                 y_min = 1,
2070                 schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts",
2071                 flags = "place_center_x, place_center_z",
2072         })
2073
2074         minetest.register_decoration({
2075                 name = "default:aspen_log",
2076                 deco_type = "schematic",
2077                 place_on = {"default:dirt_with_grass"},
2078                 place_offset_y = 1,
2079                 sidelen = 16,
2080                 noise_params = {
2081                         offset = 0.0,
2082                         scale = -0.0008,
2083                         spread = {x = 250, y = 250, z = 250},
2084                         seed = 2,
2085                         octaves = 3,
2086                         persist = 0.66
2087                 },
2088                 biomes = {"deciduous_forest"},
2089                 y_max = 31000,
2090                 y_min = 1,
2091                 schematic = minetest.get_modpath("default") .. "/schematics/aspen_log.mts",
2092                 flags = "place_center_x",
2093                 rotation = "random",
2094                 spawn_by = "default:dirt_with_grass",
2095                 num_spawn_by = 8,
2096         })
2097
2098         -- Large cactus
2099
2100         minetest.register_decoration({
2101                 name = "default:large_cactus",
2102                 deco_type = "schematic",
2103                 place_on = {"default:desert_sand"},
2104                 sidelen = 16,
2105                 noise_params = {
2106                         offset = -0.0003,
2107                         scale = 0.0009,
2108                         spread = {x = 200, y = 200, z = 200},
2109                         seed = 230,
2110                         octaves = 3,
2111                         persist = 0.6
2112                 },
2113                 biomes = {"desert"},
2114                 y_max = 31000,
2115                 y_min = 4,
2116                 schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts",
2117                 flags = "place_center_x, place_center_z",
2118                 rotation = "random",
2119         })
2120
2121         -- Cactus
2122
2123         minetest.register_decoration({
2124                 name = "default:cactus",
2125                 deco_type = "simple",
2126                 place_on = {"default:desert_sand"},
2127                 sidelen = 16,
2128                 noise_params = {
2129                         offset = -0.0003,
2130                         scale = 0.0009,
2131                         spread = {x = 200, y = 200, z = 200},
2132                         seed = 230,
2133                         octaves = 3,
2134                         persist = 0.6
2135                 },
2136                 biomes = {"desert"},
2137                 y_max = 31000,
2138                 y_min = 4,
2139                 decoration = "default:cactus",
2140                 height = 2,
2141                 height_max = 5,
2142         })
2143
2144         -- Papyrus
2145
2146         minetest.register_decoration({
2147                 name = "default:papyrus",
2148                 deco_type = "schematic",
2149                 place_on = {"default:dirt"},
2150                 sidelen = 16,
2151                 noise_params = {
2152                         offset = -0.3,
2153                         scale = 0.7,
2154                         spread = {x = 200, y = 200, z = 200},
2155                         seed = 354,
2156                         octaves = 3,
2157                         persist = 0.7
2158                 },
2159                 biomes = {"savanna_shore", "rainforest_swamp"},
2160                 y_max = 0,
2161                 y_min = 0,
2162                 schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
2163         })
2164
2165         -- Bush
2166
2167         minetest.register_decoration({
2168                 name = "default:bush",
2169                 deco_type = "schematic",
2170                 place_on = {"default:dirt_with_grass"},
2171                 sidelen = 16,
2172                 noise_params = {
2173                         offset = -0.004,
2174                         scale = 0.01,
2175                         spread = {x = 100, y = 100, z = 100},
2176                         seed = 137,
2177                         octaves = 3,
2178                         persist = 0.7,
2179                 },
2180                 biomes = {"grassland", "deciduous_forest"},
2181                 y_max = 31000,
2182                 y_min = 1,
2183                 schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
2184                 flags = "place_center_x, place_center_z",
2185         })
2186
2187         -- Blueberry bush
2188
2189         minetest.register_decoration({
2190                 name = "default:blueberry_bush",
2191                 deco_type = "schematic",
2192                 place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
2193                 sidelen = 16,
2194                 noise_params = {
2195                         offset = -0.004,
2196                         scale = 0.01,
2197                         spread = {x = 100, y = 100, z = 100},
2198                         seed = 697,
2199                         octaves = 3,
2200                         persist = 0.7,
2201                 },
2202                 biomes = {"grassland", "snowy_grassland"},
2203                 y_max = 31000,
2204                 y_min = 1,
2205                 place_offset_y = 1,
2206                 schematic = minetest.get_modpath("default") .. "/schematics/blueberry_bush.mts",
2207                 flags = "place_center_x, place_center_z",
2208         })
2209
2210         -- Acacia bush
2211
2212         minetest.register_decoration({
2213                 name = "default:acacia_bush",
2214                 deco_type = "schematic",
2215                 place_on = {"default:dry_dirt_with_dry_grass"},
2216                 sidelen = 16,
2217                 noise_params = {
2218                         offset = -0.004,
2219                         scale = 0.01,
2220                         spread = {x = 100, y = 100, z = 100},
2221                         seed = 90155,
2222                         octaves = 3,
2223                         persist = 0.7,
2224                 },
2225                 biomes = {"savanna"},
2226                 y_max = 31000,
2227                 y_min = 1,
2228                 schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts",
2229                 flags = "place_center_x, place_center_z",
2230         })
2231
2232         -- Pine bush
2233
2234         minetest.register_decoration({
2235                 name = "default:pine_bush",
2236                 deco_type = "schematic",
2237                 place_on = {"default:dirt_with_snow"},
2238                 sidelen = 16,
2239                 noise_params = {
2240                         offset = -0.004,
2241                         scale = 0.01,
2242                         spread = {x = 100, y = 100, z = 100},
2243                         seed = 137,
2244                         octaves = 3,
2245                         persist = 0.7,
2246                 },
2247                 biomes = {"taiga", "snowy_grassland"},
2248                 y_max = 31000,
2249                 y_min = 4,
2250                 schematic = minetest.get_modpath("default") .. "/schematics/pine_bush.mts",
2251                 flags = "place_center_x, place_center_z",
2252         })
2253
2254         -- Grasses
2255
2256         register_grass_decoration(-0.03,  0.09,  5)
2257         register_grass_decoration(-0.015, 0.075, 4)
2258         register_grass_decoration(0,      0.06,  3)
2259         register_grass_decoration(0.015,  0.045, 2)
2260         register_grass_decoration(0.03,   0.03,  1)
2261
2262         -- Dry grasses
2263
2264         register_dry_grass_decoration(0.01, 0.05,  5)
2265         register_dry_grass_decoration(0.03, 0.03,  4)
2266         register_dry_grass_decoration(0.05, 0.01,  3)
2267         register_dry_grass_decoration(0.07, -0.01, 2)
2268         register_dry_grass_decoration(0.09, -0.03, 1)
2269
2270         -- Ferns
2271
2272         register_fern_decoration(14936, 3)
2273         register_fern_decoration(801,   2)
2274         register_fern_decoration(5,     1)
2275
2276         -- Junglegrass
2277
2278         minetest.register_decoration({
2279                 name = "default:junglegrass",
2280                 deco_type = "simple",
2281                 place_on = {"default:dirt_with_rainforest_litter"},
2282                 sidelen = 80,
2283                 fill_ratio = 0.1,
2284                 biomes = {"rainforest"},
2285                 y_max = 31000,
2286                 y_min = 1,
2287                 decoration = "default:junglegrass",
2288         })
2289
2290         -- Dry shrub
2291
2292         minetest.register_decoration({
2293                 name = "default:dry_shrub",
2294                 deco_type = "simple",
2295                 place_on = {"default:desert_sand",
2296                         "default:sand", "default:silver_sand"},
2297                 sidelen = 16,
2298                 noise_params = {
2299                         offset = 0,
2300                         scale = 0.02,
2301                         spread = {x = 200, y = 200, z = 200},
2302                         seed = 329,
2303                         octaves = 3,
2304                         persist = 0.6
2305                 },
2306                 biomes = {"desert", "sandstone_desert", "cold_desert"},
2307                 y_max = 31000,
2308                 y_min = 2,
2309                 decoration = "default:dry_shrub",
2310                 param2 = 4,
2311         })
2312
2313         -- Marram grass
2314
2315         minetest.register_decoration({
2316                 name = "default:marram_grass",
2317                 deco_type = "simple",
2318                 place_on = {"default:sand"},
2319                 sidelen = 4,
2320                 noise_params = {
2321                         offset = -0.7,
2322                         scale = 4.0,
2323                         spread = {x = 16, y = 16, z = 16},
2324                         seed = 513337,
2325                         octaves = 1,
2326                         persist = 0.0,
2327                         flags = "absvalue, eased"
2328                 },
2329                 biomes = {"coniferous_forest_dunes", "grassland_dunes"},
2330                 y_max = 6,
2331                 y_min = 4,
2332                 decoration = {
2333                         "default:marram_grass_1",
2334                         "default:marram_grass_2",
2335                         "default:marram_grass_3",
2336                 },
2337         })
2338
2339         -- Tundra moss
2340
2341         minetest.register_decoration({
2342                 deco_type = "simple",
2343                 place_on = {"default:permafrost_with_stones"},
2344                 sidelen = 4,
2345                 noise_params = {
2346                         offset = -0.8,
2347                         scale = 2.0,
2348                         spread = {x = 100, y = 100, z = 100},
2349                         seed = 53995,
2350                         octaves = 3,
2351                         persist = 1.0
2352                 },
2353                 biomes = {"tundra"},
2354                 y_max = 50,
2355                 y_min = 2,
2356                 decoration = "default:permafrost_with_moss",
2357                 place_offset_y = -1,
2358                 flags = "force_placement",
2359         })
2360
2361         -- Tundra patchy snow
2362
2363         minetest.register_decoration({
2364                 deco_type = "simple",
2365                 place_on = {
2366                         "default:permafrost_with_moss",
2367                         "default:permafrost_with_stones",
2368                         "default:stone",
2369                         "default:gravel"
2370                 },
2371                 sidelen = 4,
2372                 noise_params = {
2373                         offset = 0,
2374                         scale = 1.0,
2375                         spread = {x = 100, y = 100, z = 100},
2376                         seed = 172555,
2377                         octaves = 3,
2378                         persist = 1.0
2379                 },
2380                 biomes = {"tundra", "tundra_beach"},
2381                 y_max = 50,
2382                 y_min = 1,
2383                 decoration = "default:snow",
2384         })
2385
2386         -- Coral reef
2387
2388         minetest.register_decoration({
2389                 name = "default:corals",
2390                 deco_type = "simple",
2391                 place_on = {"default:sand"},
2392                 place_offset_y = -1,
2393                 sidelen = 4,
2394                 noise_params = {
2395                         offset = -4,
2396                         scale = 4,
2397                         spread = {x = 50, y = 50, z = 50},
2398                         seed = 7013,
2399                         octaves = 3,
2400                         persist = 0.7,
2401                 },
2402                 biomes = {
2403                         "desert_ocean",
2404                         "savanna_ocean",
2405                         "rainforest_ocean",
2406                 },
2407                 y_max = -2,
2408                 y_min = -8,
2409                 flags = "force_placement",
2410                 decoration = {
2411                         "default:coral_green", "default:coral_pink",
2412                         "default:coral_cyan", "default:coral_brown",
2413                         "default:coral_orange", "default:coral_skeleton",
2414                 },
2415         })
2416
2417         -- Kelp
2418
2419         minetest.register_decoration({
2420                 name = "default:kelp",
2421                 deco_type = "simple",
2422                 place_on = {"default:sand"},
2423                 place_offset_y = -1,
2424                 sidelen = 16,
2425                 noise_params = {
2426                         offset = -0.04,
2427                         scale = 0.1,
2428                         spread = {x = 200, y = 200, z = 200},
2429                         seed = 87112,
2430                         octaves = 3,
2431                         persist = 0.7
2432                 },
2433                 biomes = {
2434                         "taiga_ocean",
2435                         "snowy_grassland_ocean",
2436                         "grassland_ocean",
2437                         "coniferous_forest_ocean",
2438                         "deciduous_forest_ocean",
2439                         "sandstone_desert_ocean",
2440                         "cold_desert_ocean"},
2441                 y_max = -5,
2442                 y_min = -10,
2443                 flags = "force_placement",
2444                 decoration = "default:sand_with_kelp",
2445                 param2 = 48,
2446                 param2_max = 96,
2447         })
2448 end
2449
2450
2451 --
2452 -- Detect mapgen to select functions
2453 --
2454
2455 minetest.clear_registered_biomes()
2456 minetest.clear_registered_ores()
2457 minetest.clear_registered_decorations()
2458
2459 local mg_name = minetest.get_mapgen_setting("mg_name")
2460
2461 if mg_name == "v6" then
2462         default.register_mgv6_ores()
2463         default.register_mgv6_decorations()
2464 else
2465         default.register_biomes()
2466         default.register_ores()
2467         default.register_decorations()
2468 end