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