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