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