1 local mg_name
= minetest
.get_mapgen_setting("mg_name")
7 local function register_classic_superflat_biome()
8 -- Classic Superflat: bedrock (not part of biome), 2 dirt, 1 grass block
9 minetest
.register_biome({
11 node_top
= "mcl_core:dirt_with_grass",
13 node_filler
= "mcl_core:dirt",
15 node_stone
= "mcl_core:dirt",
16 y_min
= mcl_vars
.mg_overworld_min
- 512,
17 y_max
= mcl_vars
.mg_overworld_max
,
23 -- All mapgens except mgv6, flat and singlenode
24 local function register_biomes()
27 --[[ These biomes try to resemble MC as good as possible. This means especially the floor cover and
28 the type of plants and structures (shapes might differ). The terrain itself will be of course different
29 and depends on the mapgen.
30 Important: MC also takes the terrain into account while MT biomes don't care about the terrain at all
32 MC has many “M” and “Hills” variants, most of which only differ in terrain compared to their original
34 In MT, any biome can occour in any terrain, so these variants are implied and are therefore
35 not explicitly implmented in MCL2. “M” variants are only included if they have another unique feature,
36 such as a different land cover.
37 In MCL2, MC biomes are usually split in two parts: A land part and an ocean part. Sometimes there's a beach/shore part as well.
39 The ocean biomes correspond to the MC Ocean biome.
41 Other intentionally missing biomes:
42 * River (generated by valleys and v7)
43 * Plateau (terrain only)
44 * Mesa (Bryce) (terrain only)
46 Tricky are the beach (esp. stone beach) and mushroom island biomes as they have specific conditions we can't check in MT. :(
47 TODO: Find a way to position these biomes accordingly.
50 * Savanna M (coarse dirt instead of dirt)
51 * Jungle Edge M (super rare but melons are common here)
57 minetest
.register_biome({
58 name
= "ice_plains_spikes",
59 node_top
= "mcl_core:snowblock",
61 node_filler
= "mcl_core:snowblock",
63 node_water_top
= "mcl_core:ice",
65 node_river_water
= "mcl_core:ice",
66 node_riverbed
= "mcl_core:sand",
69 y_max
= mcl_vars
.mg_overworld_max
,
73 minetest
.register_biome({
74 name
= "ice_plains_spikes_ocean",
75 node_top
= "mcl_core:gravel",
77 node_filler
= "mcl_core:dirt",
79 node_water_top
= "mcl_core:ice",
81 node_river_water
= "mcl_core:ice",
82 node_riverbed
= "mcl_core:sand",
84 y_min
= mcl_vars
.mg_overworld_min
,
91 minetest
.register_biome({
93 node_dust
= "mcl_core:snow",
94 node_top
= "mcl_core:dirt_with_grass_snow",
96 node_filler
= "mcl_core:dirt",
98 node_riverbed
= "mcl_core:sand",
101 y_max
= mcl_vars
.mg_overworld_max
,
106 minetest
.register_biome({
107 name
= "cold_taiga_beach",
108 node_dust
= "mcl_core:snow",
109 node_top
= "mcl_core:sand",
111 node_water_top
= "mcl_core:ice",
113 node_filler
= "mcl_core:sand",
115 node_riverbed
= "mcl_core:sand",
123 minetest
.register_biome({
124 name
= "cold_taiga_ocean",
125 node_top
= "mcl_core:dirt",
127 node_filler
= "mcl_core:dirt",
129 node_riverbed
= "mcl_core:sand",
131 y_min
= mcl_vars
.mg_overworld_min
,
138 minetest
.register_biome({
140 node_top
= "mcl_core:podzol",
142 node_filler
= "mcl_core:dirt",
144 node_riverbed
= "mcl_core:sand",
147 y_max
= mcl_vars
.mg_overworld_max
,
152 minetest
.register_biome({
153 name
= "mega_taiga_ocean",
154 node_top
= "mcl_core:dirt",
156 node_filler
= "mcl_core:dirt",
158 node_riverbed
= "mcl_core:sand",
160 y_min
= mcl_vars
.mg_overworld_min
,
167 minetest
.register_biome({
168 name
= "mega_spruce_taiga",
169 node_top
= "mcl_core:podzol",
171 node_filler
= "mcl_core:dirt",
173 node_riverbed
= "mcl_core:sand",
176 y_max
= mcl_vars
.mg_overworld_max
,
181 minetest
.register_biome({
182 name
= "mega_spruce_taiga_ocean",
183 node_top
= "mcl_core:dirt",
185 node_filler
= "mcl_core:dirt",
187 node_riverbed
= "mcl_core:sand",
189 y_min
= mcl_vars
.mg_overworld_min
,
196 minetest
.register_biome({
197 name
= "extreme_hills",
198 node_top
= "mcl_core:dirt_with_grass",
200 node_filler
= "mcl_core:dirt",
202 node_riverbed
= "mcl_core:sand",
205 y_max
= mcl_vars
.mg_overworld_max
,
210 minetest
.register_biome({
211 name
= "extreme_hills_beach",
212 node_top
= "mcl_core:sand",
215 node_filler
= "mcl_core:sand",
217 node_riverbed
= "mcl_core:sand",
225 minetest
.register_biome({
226 name
= "extreme_hills_ocean",
227 node_top
= "mcl_core:dirt",
229 node_filler
= "mcl_core:dirt",
231 node_riverbed
= "mcl_core:sand",
233 y_min
= mcl_vars
.mg_overworld_min
,
240 minetest
.register_biome({
241 name
= "extreme_hills_m",
242 node_top
= "mcl_core:gravel",
244 node_filler
= "mcl_core:gravel",
246 node_riverbed
= "mcl_core:gravel",
249 y_max
= mcl_vars
.mg_overworld_max
,
254 minetest
.register_biome({
255 name
= "extreme_hills_m_ocean",
256 node_top
= "mcl_core:dirt",
258 node_filler
= "mcl_core:dirt",
260 node_riverbed
= "mcl_core:sand",
262 y_min
= mcl_vars
.mg_overworld_min
,
269 -- This biome is identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak
270 -- forests above a certain hight.
271 minetest
.register_biome({
272 name
= "extreme_hills_plus",
273 node_top
= "mcl_core:dirt_with_grass",
275 node_filler
= "mcl_core:dirt",
277 node_riverbed
= "mcl_core:sand",
285 ---- Sub-biome Extra biome for Extreme Hills+ for those snow forests
286 minetest
.register_biome({
287 name
= "extreme_hills_plus_snowtop",
288 node_dust
= "mcl_core:snow",
289 node_top
= "mcl_core:dirt_with_grass_snow",
291 node_filler
= "mcl_core:dirt",
293 node_riverbed
= "mcl_core:sand",
296 y_max
= mcl_vars
.mg_overworld_max
,
301 minetest
.register_biome({
302 name
= "extreme_hills_plus_ocean",
303 node_top
= "mcl_core:dirt",
305 node_filler
= "mcl_core:dirt",
307 node_riverbed
= "mcl_core:sand",
309 y_min
= mcl_vars
.mg_overworld_min
,
316 minetest
.register_biome({
317 name
= "stone_beach",
319 y_max
= mcl_vars
.mg_overworld_max
,
323 minetest
.register_biome({
324 name
= "stone_beach_ocean",
325 node_top
= "mcl_core:dirt",
327 node_filler
= "mcl_core:dirt",
329 node_riverbed
= "mcl_core:sand",
331 y_min
= mcl_vars
.mg_overworld_min
,
338 minetest
.register_biome({
340 node_dust
= "mcl_core:snow",
341 node_top
= "mcl_core:dirt_with_grass_snow",
343 node_filler
= "mcl_core:dirt",
345 node_water_top
= "mcl_core:ice",
347 node_river_water
= "mcl_core:ice",
348 node_riverbed
= "mcl_core:sand",
351 y_max
= mcl_vars
.mg_overworld_max
,
356 minetest
.register_biome({
357 name
= "ice_plains_ocean",
358 node_top
= "mcl_core:dirt",
360 node_filler
= "mcl_core:dirt",
362 node_riverbed
= "mcl_core:sand",
364 y_min
= mcl_vars
.mg_overworld_min
,
371 minetest
.register_biome({
373 node_top
= "mcl_core:dirt_with_grass",
375 node_filler
= "mcl_core:dirt",
377 node_riverbed
= "mcl_core:sand",
380 y_max
= mcl_vars
.mg_overworld_max
,
385 minetest
.register_biome({
386 name
= "plains_beach",
387 node_top
= "mcl_core:sand",
389 node_filler
= "mcl_core:sand",
391 node_riverbed
= "mcl_core:sand",
399 minetest
.register_biome({
400 name
= "plains_ocean",
401 node_top
= "mcl_core:dirt",
403 node_filler
= "mcl_core:dirt",
405 node_riverbed
= "mcl_core:sand",
407 y_min
= mcl_vars
.mg_overworld_min
,
413 -- TODO: Sunflower Plains
415 minetest.register_biome({
416 name = "sunflower_plains",
417 node_top = "mcl_core:dirt_with_grass",
419 node_filler = "mcl_core:dirt",
421 node_riverbed = "mcl_core:sand",
424 y_max = mcl_vars.mg_overworld_max,
426 humidity_point = 22.5,
429 minetest.register_biome({
430 name = "sunflower_plains_ocean",
431 node_top = "mcl_core:dirt",
433 node_filler = "mcl_core:dirt",
435 node_riverbed = "mcl_core:dirt",
437 y_min = mcl_vars.mg_overworld_min,
440 humidity_point = 22.5,
445 minetest
.register_biome({
447 node_top
= "mcl_core:dirt_with_grass",
449 node_filler
= "mcl_core:dirt",
451 node_riverbed
= "mcl_core:sand",
454 y_max
= mcl_vars
.mg_overworld_max
,
456 humidity_point
= 73, --was 70
459 minetest
.register_biome({
460 name
= "taiga_beach",
461 node_top
= "mcl_core:sand",
463 node_filler
= "mcl_core:dirt",
465 node_riverbed
= "mcl_core:sand",
470 humidity_point
= 73, --was 70
473 minetest
.register_biome({
474 name
= "taiga_ocean",
475 node_top
= "mcl_core:sand",
477 node_filler
= "mcl_core:dirt",
479 node_riverbed
= "mcl_core:sand",
481 y_min
= mcl_vars
.mg_overworld_min
,
484 humidity_point
= 73, --was 70
488 minetest
.register_biome({
490 node_top
= "mcl_core:dirt_with_grass",
492 node_filler
= "mcl_core:dirt",
494 node_riverbed
= "mcl_core:sand",
497 y_max
= mcl_vars
.mg_overworld_max
,
499 humidity_point
= 44, --was 68
502 minetest
.register_biome({
503 name
= "forest_beach",
504 node_top
= "mcl_core:sand",
506 node_filler
= "mcl_core:dirt",
508 node_riverbed
= "mcl_core:sand",
513 humidity_point
= 44, --was 68
516 minetest
.register_biome({
517 name
= "forest_ocean",
518 node_top
= "mcl_core:dirt",
520 node_filler
= "mcl_core:dirt",
522 node_riverbed
= "mcl_core:sand",
524 y_min
= mcl_vars
.mg_overworld_min
,
527 humidity_point
= 44, --was 68
531 minetest
.register_biome({
532 name
= "flower_forest",
533 node_top
= "mcl_core:dirt_with_grass",
535 node_filler
= "mcl_core:dirt",
537 node_riverbed
= "mcl_core:sand",
540 y_max
= mcl_vars
.mg_overworld_max
,
545 minetest
.register_biome({
546 name
= "flower_forest_beach",
547 node_top
= "mcl_core:sand",
549 node_filler
= "mcl_core:dirt",
551 node_riverbed
= "mcl_core:sand",
559 minetest
.register_biome({
560 name
= "flower_forest_ocean",
561 node_top
= "mcl_core:dirt",
563 node_filler
= "mcl_core:dirt",
565 node_riverbed
= "mcl_core:sand",
567 y_min
= mcl_vars
.mg_overworld_min
,
574 minetest
.register_biome({
575 name
= "birch_forest",
576 node_top
= "mcl_core:dirt_with_grass",
578 node_filler
= "mcl_core:dirt",
580 node_riverbed
= "mcl_core:sand",
583 y_max
= mcl_vars
.mg_overworld_max
,
588 minetest
.register_biome({
589 name
= "birch_forest_ocean",
590 node_top
= "mcl_core:dirt",
592 node_filler
= "mcl_core:dirt",
594 node_riverbed
= "mcl_core:sand",
596 y_min
= mcl_vars
.mg_overworld_min
,
603 minetest
.register_biome({
604 name
= "birch_forest_m",
605 node_top
= "mcl_core:dirt_with_grass",
607 node_filler
= "mcl_core:dirt",
609 node_riverbed
= "mcl_core:sand",
612 y_max
= mcl_vars
.mg_overworld_max
,
617 minetest
.register_biome({
618 name
= "birch_forest_m_ocean",
619 node_top
= "mcl_core:dirt",
621 node_filler
= "mcl_core:dirt",
623 node_riverbed
= "mcl_core:sand",
625 y_min
= mcl_vars
.mg_overworld_min
,
632 -- FIXME: Not a real biome in MC
634 minetest.register_biome({
636 node_top = "mcl_core:redsand",
638 node_filler = "mcl_core:redsand",
640 node_riverbed = "mcl_core:sand",
642 node_stone = "mcl_core:redsandstone",
644 y_max = mcl_vars.mg_overworld_max,
646 humidity_point = 37, --was 16
649 minetest.register_biome({
650 name = "red_desert_ocean",
651 node_top = "mcl_core:redsand",
653 node_filler = "mcl_core:redsand",
655 node_riverbed = "mcl_core:redsand",
657 y_min = mcl_vars.mg_overworld_min,
660 humidity_point = 37, --was 16
665 minetest
.register_biome({
667 node_top
= "mcl_core:sand",
669 node_filler
= "mcl_core:sand",
671 node_riverbed
= "mcl_core:sand",
673 node_stone
= "mcl_core:sandstone",
675 y_max
= mcl_vars
.mg_overworld_max
,
677 humidity_point
= 0, --was 0
680 minetest
.register_biome({
681 name
= "desert_ocean",
682 node_top
= "mcl_core:sand",
684 node_filler
= "mcl_core:sand",
686 node_riverbed
= "mcl_core:sand",
688 y_min
= mcl_vars
.mg_overworld_min
,
691 humidity_point
= 0, --was 0
695 minetest
.register_biome({
696 name
= "roofed_forest",
697 node_top
= "mcl_core:dirt_with_grass",
699 node_filler
= "mcl_core:dirt",
701 node_riverbed
= "mcl_core:sand",
704 y_max
= mcl_vars
.mg_overworld_max
,
709 minetest
.register_biome({
710 name
= "roofed_forest_ocean",
711 node_top
= "mcl_core:dirt",
713 node_filler
= "mcl_core:dirt",
715 node_riverbed
= "mcl_core:sand",
717 y_min
= mcl_vars
.mg_overworld_min
,
724 minetest
.register_biome({
726 node_top
= "mcl_colorblocks:hardened_clay",
728 node_filler
= "mcl_colorblocks:hardened_clay",
729 node_stone
= "mcl_colorblocks:hardened_clay",
731 y_max
= mcl_vars
.mg_overworld_max
,
736 -- Helper biome for the red sand at the bottom of mesas.
737 -- This is part of the regular mesa.
738 minetest
.register_biome({
739 name
= "mesa_sandlevel",
740 node_top
= "mcl_core:redsand",
742 node_filler
= "mcl_colorblocks:hardened_clay_orange",
744 node_riverbed
= "mcl_core:redsand",
746 node_stone
= "mcl_colorblocks:hardened_clay_orange",
753 minetest
.register_biome({
755 node_top
= "mcl_core:redsand",
757 node_filler
= "mcl_colorblocks:hardened_clay",
759 node_riverbed
= "mcl_core:redsand",
761 y_min
= mcl_vars
.mg_overworld_min
,
768 -- Identical to Mesa below Y=30. Y=30 and above is replaced with an oak forest
769 minetest
.register_biome({
770 name
= "mesa_plateau_f",
771 node_top
= "mcl_colorblocks:hardened_clay",
773 node_filler
= "mcl_colorblocks:hardened_clay",
774 node_stone
= "mcl_colorblocks:hardened_clay",
781 -- The actual plateau of this biome
782 -- This is a mesa plateau for grass blocks, tall grass and oaks.
783 minetest
.register_biome({
784 name
= "mesa_plateau_f_grasstop",
785 node_top
= "mcl_core:dirt_with_grass",
787 node_filler
= "mcl_core:dirt",
789 node_stone
= "mcl_colorblocks:hardened_clay",
791 y_max
= mcl_vars
.mg_overworld_max
,
796 -- Helper biome for the red sand at the bottom.
797 minetest
.register_biome({
798 name
= "mesa_plateau_f_sandlevel",
799 node_top
= "mcl_core:redsand",
801 node_filler
= "mcl_colorblocks:hardened_clay_orange",
803 node_riverbed
= "mcl_core:redsand",
805 node_stone
= "mcl_colorblocks:hardened_clay_orange",
812 minetest
.register_biome({
813 name
= "mesa_plateau_f_ocean",
814 node_top
= "mcl_core:dirt",
816 node_filler
= "mcl_core:dirt",
818 node_riverbed
= "mcl_core:redsand",
820 y_min
= mcl_vars
.mg_overworld_min
,
827 minetest
.register_biome({
829 node_top
= "mcl_core:dirt_with_grass",
831 node_filler
= "mcl_core:coarse_dirt",
833 node_riverbed
= "mcl_core:sand",
836 y_max
= mcl_vars
.mg_overworld_max
,
841 minetest
.register_biome({
842 name
= "savanna_beach",
843 node_top
= "mcl_core:sand",
845 node_filler
= "mcl_core:dirt",
847 node_riverbed
= "mcl_core:sand",
855 minetest
.register_biome({
856 name
= "savanna_ocean",
857 node_top
= "mcl_core:dirt",
859 node_filler
= "mcl_core:coarse_dirt",
861 node_riverbed
= "mcl_core:sand",
863 y_min
= mcl_vars
.mg_overworld_min
,
870 minetest
.register_biome({
872 node_top
= "mcl_core:dirt_with_grass",
874 node_filler
= "mcl_core:dirt",
876 node_riverbed
= "mcl_core:sand",
879 y_max
= mcl_vars
.mg_overworld_max
,
884 minetest
.register_biome({
885 name
= "jungle_shore",
886 node_top
= "mcl_core:dirt",
888 node_filler
= "mcl_core:dirt",
890 node_riverbed
= "mcl_core:sand",
898 minetest
.register_biome({
899 name
= "jungle_ocean",
900 node_top
= "mcl_core:dirt",
902 node_filler
= "mcl_core:dirt",
904 node_riverbed
= "mcl_core:sand",
906 y_min
= mcl_vars
.mg_overworld_min
,
913 minetest
.register_biome({
914 name
= "jungle_edge",
915 node_top
= "mcl_core:dirt_with_grass",
917 node_filler
= "mcl_core:dirt",
919 node_riverbed
= "mcl_core:sand",
922 y_max
= mcl_vars
.mg_overworld_max
,
927 minetest
.register_biome({
928 name
= "jungle_edge_shore",
929 node_top
= "mcl_core:dirt",
931 node_filler
= "mcl_core:dirt",
933 node_riverbed
= "mcl_core:sand",
941 minetest
.register_biome({
942 name
= "jungle_edge_ocean",
943 node_top
= "mcl_core:dirt",
945 node_filler
= "mcl_core:dirt",
947 node_riverbed
= "mcl_core:sand",
949 y_min
= mcl_vars
.mg_overworld_min
,
956 minetest
.register_biome({
958 node_top
= "mcl_core:dirt_with_grass",
960 node_filler
= "mcl_core:dirt",
962 node_riverbed
= "mcl_core:sand",
965 -- Note: Limited in height!
971 minetest
.register_biome({
972 name
= "swampland_shore",
973 node_top
= "mcl_core:dirt",
975 node_filler
= "mcl_core:dirt",
977 node_riverbed
= "mcl_core:sand",
985 minetest
.register_biome({
986 name
= "swampland_ocean",
987 node_top
= "mcl_core:sand",
989 node_filler
= "mcl_core:sand",
991 node_riverbed
= "mcl_core:sand",
999 -- Mushroom Island / Mushroom Island Shore
1000 -- TODO: Make sure these biomes only spawn in islands
1001 minetest
.register_biome({
1002 name
= "mushroom_island",
1003 node_top
= "mcl_core:mycelium",
1005 node_filler
= "mcl_core:dirt",
1007 node_riverbed
= "mcl_core:sand",
1010 -- Note: Limited in height!
1013 humidity_point
= 99,
1016 minetest
.register_biome({
1017 name
= "mushroom_island_shore",
1018 node_top
= "mcl_core:mycelium",
1020 node_filler
= "mcl_core:dirt",
1022 node_riverbed
= "mcl_core:sand",
1027 humidity_point
= 99,
1030 minetest
.register_biome({
1031 name
= "mushroom_island_ocean",
1032 node_top
= "mcl_core:dirt",
1034 node_filler
= "mcl_core:dirt",
1036 node_riverbed
= "mcl_core:sand",
1038 y_min
= mcl_vars
.mg_overworld_min
,
1041 humidity_point
= 99,
1046 -- Register biomes of non-Overworld biomes
1047 local function register_dimension_biomes()
1051 minetest
.register_biome({
1053 node_filler
= "mcl_nether:netherrack",
1054 node_stone
= "mcl_nether:netherrack",
1056 node_river_water
= "air",
1057 y_min
= mcl_vars
.mg_nether_min
,
1058 -- FIXME: For some reason the Nether stops generating early if this constant is not added.
1060 y_max
= mcl_vars
.mg_nether_max
+ 80,
1066 minetest
.register_biome({
1069 node_filler
= "air",
1071 node_river_water
= "air",
1072 -- FIXME: For some reason the End stops generating early if this constant is not added.
1074 y_min
= mcl_vars
.mg_end_min
,
1075 y_max
= mcl_vars
.mg_end_max
+ 80,
1077 humidity_point
= 50,
1082 -- Register “fake” ores directly related to the biomes
1083 local function register_biomelike_ores()
1085 -- Random coarse dirt floor in mega taiga
1086 minetest
.register_ore({
1088 ore
= "mcl_core:coarse_dirt",
1089 wherein
= {"mcl_core:podzol", "mcl_core:dirt"},
1091 clust_num_ores
= 12,
1093 y_min
= mcl_vars
.mg_overworld_min
,
1094 y_max
= mcl_vars
.mg_overworld_max
,
1095 noise_threshold
= 0.2,
1096 noise_params
= {offset
=0, scale
=15, spread
={x
=130, y
=130, z
=130}, seed
=24, octaves
=3, persist
=0.70},
1097 biomes
= { "mega_taiga" },
1100 -- Small dirt patches in Extreme Hills M
1101 minetest
.register_ore({
1103 -- TODO: Should be grass block. But generating this as ore means gras blocks will spawn undeground. :-(
1104 ore
= "mcl_core:dirt",
1105 wherein
= {"mcl_core:gravel"},
1106 clust_scarcity
= 5000,
1107 clust_num_ores
= 12,
1109 y_min
= mcl_vars
.mg_overworld_min
,
1110 y_max
= mcl_vars
.mg_overworld_max
,
1111 noise_threshold
= 0.2,
1112 noise_params
= {offset
=0, scale
=5, spread
={x
=250, y
=250, z
=250}, seed
=64, octaves
=3, persist
=0.60},
1113 biomes
= { "extreme_hills_m" },
1116 -- Mesa strata (registered as sheet ores)
1119 -- Colors to use: silver (light grey), brown, orange, red, yellow, white
1120 local stratum
= function(y_min
, height
, color
, seed
)
1127 local y_max
= y_min
+ height
-1
1128 minetest
.register_ore({
1130 ore
= "mcl_colorblocks:hardened_clay_"..color
,
1131 wherein
= {"mcl_colorblocks:hardened_clay"},
1132 column_height_min
= height
,
1133 column_height_max
= height
,
1136 noise_threshold
= -1.0,
1137 noise_params
= {offset
=0, scale
=1, spread
={x
=3100, y
=3100, z
=3100}, seed
=seed
, octaves
=3, persist
=0.70},
1138 biomes
= { "mesa", "mesa_plateau_f" },
1142 stratum(11, 3, "orange")
1144 -- Create strata for up to Y = 256
1145 -- This is semi-random based on the mapseed.
1146 local seed
= minetest
.get_mapgen_setting("seed")
1151 stratum(17+i
, 1, "orange", seed
)
1152 stratum(19+i
, 1, "silver", seed
)
1153 stratum(21+i
, 1, "brown", seed
)
1154 stratum(22+i
, 1, "red", seed
)
1155 stratum(24+i
, 1, "silver", seed
)
1156 stratum(26+i
, 1, "brown", seed
)
1157 stratum(27+i
, 1, "white", seed
)
1158 stratum(29+i
, 1, "orange", seed
)
1159 stratum(34+i
, 1, "red", seed
)
1160 stratum(42+i
, 1, "orange", seed
)
1161 stratum(44+i
, 1, "yellow", seed
)
1162 stratum(46+i
, 1, "brown", seed
)
1163 stratum(48+i
, 1, "silver", seed
)
1164 stratum(51+i
, 1, "white", seed
)
1165 stratum(55+i
, 2, "yellow", seed
)
1166 stratum(58+i
, 2, "orange", seed
)
1167 stratum(62+i
, 1, "brown", seed
)
1168 stratum(68+i
, 3, "orange", seed
)
1169 stratum(73+i
, 2, "brown", seed
)
1170 stratum(76+i
, 1, "white", seed
)
1171 -- Repeat strata above Y=76
1177 -- Non-Overworld ores
1178 local function register_dimension_ores()
1180 --[[ NETHER GENERATION ]]
1183 minetest
.register_ore({
1185 ore
= "mcl_nether:soul_sand",
1186 -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally
1187 -- in v6, but instead set with the on_generated function in mcl_mapgen_core.
1188 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1189 clust_scarcity
= 13 * 13 * 13,
1191 y_min
= mcl_vars
.mg_nether_min
,
1192 y_max
= mcl_util
.layer_to_y(64, "nether"),
1193 noise_threshold
= 0.0,
1197 spread
= {x
= 5, y
= 5, z
= 5},
1205 minetest
.register_ore({
1207 ore
= "mcl_nether:magma",
1208 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1209 clust_scarcity
= 8*8*8,
1210 clust_num_ores
= 45,
1212 y_min
= mcl_util
.layer_to_y(23, "nether"),
1213 y_max
= mcl_util
.layer_to_y(37, "nether"),
1215 minetest
.register_ore({
1217 ore
= "mcl_nether:magma",
1218 wherein
= {"mcl_nether:netherrack"},
1219 clust_scarcity
= 10*10*10,
1220 clust_num_ores
= 65,
1222 y_min
= mcl_util
.layer_to_y(23, "nether"),
1223 y_max
= mcl_util
.layer_to_y(37, "nether"),
1227 minetest
.register_ore({
1229 ore
= "mcl_nether:glowstone",
1230 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1231 clust_scarcity
= 26 * 26 * 26,
1233 y_min
= mcl_vars
.mg_lava_nether_max
+ 10,
1234 y_max
= mcl_vars
.mg_nether_max
,
1235 noise_threshold
= 0.0,
1239 spread
= {x
= 5, y
= 5, z
= 5},
1247 minetest
.register_ore({
1249 ore
= "mcl_core:gravel",
1250 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1251 column_height_min
= 1,
1252 column_height_max
= 1,
1253 column_midpoint_factor
= 0,
1254 y_min
= mcl_util
.layer_to_y(63, "nether"),
1255 -- This should be 65, but for some reason with this setting, the sheet ore really stops at 65. o_O
1256 y_max
= mcl_util
.layer_to_y(65+2, "nether"),
1257 noise_threshold
= 0.2,
1261 spread
= {x
= 20, y
= 20, z
= 20},
1269 minetest
.register_ore({
1270 ore_type
= "scatter",
1271 ore
= "mcl_nether:quartz_ore",
1272 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1273 clust_scarcity
= 850,
1274 clust_num_ores
= 4, -- MC cluster amount: 4-10
1276 y_min
= mcl_vars
.mg_nether_min
,
1277 y_max
= mcl_vars
.mg_nether_max
,
1279 minetest
.register_ore({
1280 ore_type
= "scatter",
1281 ore
= "mcl_nether:quartz_ore",
1282 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1283 clust_scarcity
= 1650,
1284 clust_num_ores
= 8, -- MC cluster amount: 4-10
1286 y_min
= mcl_vars
.mg_nether_min
,
1287 y_max
= mcl_vars
.mg_nether_max
,
1290 -- Lava springs in the Nether
1291 minetest
.register_ore({
1292 ore_type
= "scatter",
1293 ore
= "mcl_nether:nether_lava_source",
1294 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1295 clust_scarcity
= 500,
1298 y_min
= mcl_vars
.mg_nether_min
,
1299 y_max
= mcl_vars
.mg_lava_nether_max
+ 1,
1302 minetest
.register_ore({
1303 ore_type
= "scatter",
1304 ore
= "mcl_nether:nether_lava_source",
1305 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1306 clust_scarcity
= 1000,
1309 y_min
= mcl_vars
.mg_lava_nether_max
+ 2,
1310 y_max
= mcl_vars
.mg_lava_nether_max
+ 12,
1313 minetest
.register_ore({
1314 ore_type
= "scatter",
1315 ore
= "mcl_nether:nether_lava_source",
1316 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1317 clust_scarcity
= 2000,
1320 y_min
= mcl_vars
.mg_lava_nether_max
+ 13,
1321 y_max
= mcl_vars
.mg_lava_nether_max
+ 48,
1323 minetest
.register_ore({
1324 ore_type
= "scatter",
1325 ore
= "mcl_nether:nether_lava_source",
1326 wherein
= {"mcl_nether:netherrack", "mcl_core:stone"},
1327 clust_scarcity
= 3500,
1330 y_min
= mcl_vars
.mg_lava_nether_max
+ 49,
1331 y_max
= mcl_vars
.mg_nether_max
,
1336 -- Generate fake End
1337 -- TODO: Remove both "ores" when there's a better End generator
1339 minetest
.register_ore({
1341 ore
= "mcl_end:end_stone",
1343 y_min
= mcl_vars
.mg_end_min
+64,
1344 y_max
= mcl_vars
.mg_end_min
+80,
1345 column_height_min
= 6,
1346 column_height_max
= 7,
1347 column_midpoint_factor
= 0.0,
1351 spread
= {x
=100, y
=100, z
=100},
1356 noise_threshold
= 0,
1359 minetest
.register_ore({
1361 ore
= "mcl_end:end_stone",
1363 y_min
= mcl_vars
.mg_end_min
+64,
1364 y_max
= mcl_vars
.mg_end_min
+80,
1365 column_height_min
= 4,
1366 column_height_max
= 4,
1367 column_midpoint_factor
= 0.0,
1371 spread
= {x
=200, y
=200, z
=200},
1376 noise_threshold
= 0,
1382 -- All mapgens except mgv6
1384 -- Template to register a grass or fern decoration
1385 local function register_grass_decoration(grasstype
, offset
, scale
, biomes
)
1386 local place_on
, seed
, node
1387 if grasstype
== "fern" then
1388 node
= "mcl_flowers:fern"
1389 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:podzol"}
1391 elseif grasstype
== "tallgrass" then
1392 node
= "mcl_flowers:tallgrass"
1393 place_on
= {"mcl_core:dirt_with_grass"}
1399 spread
= {x
= 200, y
= 200, z
= 200},
1404 minetest
.register_decoration({
1405 deco_type
= "simple",
1406 place_on
= place_on
,
1408 noise_params
= noise
,
1411 y_max
= mcl_vars
.mg_overworld_max
,
1416 local function register_decorations()
1418 minetest
.register_decoration({
1419 deco_type
= "schematic",
1420 place_on
= {"mcl_core:snowblock", "mcl_core:snow", "mcl_core:dirt_with_grass_snow"},
1425 spread
= {x
= 250, y
= 250, z
= 250},
1430 biomes
= {"ice_plains_spikes"},
1432 y_max
= mcl_vars
.mg_overworld_max
,
1433 schematic
= minetest
.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_large.mts",
1434 rotation
= "random",
1435 flags
= "place_center_x, place_center_z",
1439 minetest
.register_decoration({
1440 deco_type
= "schematic",
1441 place_on
= {"mcl_core:snowblock", "mcl_core:snow", "mcl_core:dirt_with_grass_snow"},
1446 spread
= {x
= 250, y
= 250, z
= 250},
1451 biomes
= {"ice_plains_spikes"},
1453 y_max
= mcl_vars
.mg_overworld_max
,
1454 schematic
= minetest
.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_small.mts",
1455 rotation
= "random",
1456 flags
= "place_center_x, place_center_z",
1462 minetest
.register_decoration({
1463 deco_type
= "schematic",
1464 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1469 spread
= {x
= 250, y
= 250, z
= 250},
1474 biomes
= {"forest"},
1476 y_max
= mcl_vars
.mg_overworld_max
,
1477 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_large_"..i
..".mts",
1478 flags
= "place_center_x, place_center_z",
1479 rotation
= "random",
1482 minetest
.register_decoration({
1483 deco_type
= "schematic",
1484 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"},
1489 spread
= {x
= 250, y
= 250, z
= 250},
1494 biomes
= {"extreme_hills", "extreme_hills_m", "extreme_hills_plus", "extreme_hills_plus_snowtop"},
1496 y_max
= mcl_vars
.mg_overworld_max
,
1497 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_large_"..i
..".mts",
1498 flags
= "place_center_x, place_center_z",
1499 rotation
= "random",
1502 -- Small classic oak (forest, flower forest and ice plains)
1503 minetest
.register_decoration({
1504 deco_type
= "schematic",
1505 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1510 spread
= {x
= 250, y
= 250, z
= 250},
1515 biomes
= {"forest"},
1517 y_max
= mcl_vars
.mg_overworld_max
,
1518 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1519 flags
= "place_center_x, place_center_z",
1520 rotation
= "random",
1522 minetest
.register_decoration({
1523 deco_type
= "schematic",
1524 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1529 spread
= {x
= 250, y
= 250, z
= 250},
1534 biomes
= {"flower_forest"},
1536 y_max
= mcl_vars
.mg_overworld_max
,
1537 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1538 flags
= "place_center_x, place_center_z",
1539 rotation
= "random",
1541 minetest
.register_decoration({
1542 deco_type
= "schematic",
1543 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"},
1548 spread
= {x
= 250, y
= 250, z
= 250},
1553 biomes
= {"extreme_hills", "extreme_hills_m", "extreme_hills_plus", "extreme_hills_plus_snowtop"},
1555 y_max
= mcl_vars
.mg_overworld_max
,
1556 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1557 flags
= "place_center_x, place_center_z",
1558 rotation
= "random",
1561 minetest
.register_decoration({
1562 deco_type
= "schematic",
1563 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt"},
1568 spread
= {x
= 250, y
= 250, z
= 250},
1573 biomes
= {"extreme_hills_plus", "extreme_hills_plus_snowtop"},
1575 y_max
= mcl_vars
.mg_overworld_max
,
1576 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1577 flags
= "place_center_x, place_center_z",
1578 rotation
= "random",
1580 minetest
.register_decoration({
1581 deco_type
= "schematic",
1582 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1587 spread
= {x
= 250, y
= 250, z
= 250},
1592 biomes
= {"mesa_plateau_f_grasstop"},
1594 y_max
= mcl_vars
.mg_overworld_max
,
1595 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1596 flags
= "place_center_x, place_center_z",
1597 rotation
= "random",
1600 minetest
.register_decoration({
1601 deco_type
= "schematic",
1602 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"},
1607 spread
= {x
= 250, y
= 250, z
= 250},
1612 biomes
= {"ice_plains"},
1614 y_max
= mcl_vars
.mg_overworld_max
,
1615 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1616 flags
= "place_center_x, place_center_z",
1617 rotation
= "random",
1620 minetest
.register_decoration({
1621 deco_type
= "schematic",
1622 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1627 spread
= {x
= 250, y
= 250, z
= 250},
1632 biomes
= {"forest"},
1634 y_max
= mcl_vars
.mg_overworld_max
,
1635 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_balloon.mts",
1636 flags
= "place_center_x, place_center_z",
1637 rotation
= "random",
1640 minetest
.register_decoration({
1641 deco_type
= "schematic",
1642 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1647 spread
= {x
= 250, y
= 250, z
= 250},
1652 biomes
= {"swampland", "swampland_shore"},
1654 y_max
= mcl_vars
.mg_overworld_max
,
1655 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_swamp.mts",
1656 flags
= "place_center_x, place_center_z",
1657 rotation
= "random",
1661 minetest
.register_decoration({
1662 deco_type
= "schematic",
1663 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1665 fill_ratio
= 0.0025,
1666 biomes
= {"jungle"},
1668 y_max
= mcl_vars
.mg_overworld_max
,
1669 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree_huge.mts",
1670 flags
= "place_center_x, place_center_z",
1671 rotation
= "random",
1673 minetest
.register_decoration({
1674 deco_type
= "schematic",
1675 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1678 biomes
= {"jungle"},
1680 y_max
= mcl_vars
.mg_overworld_max
,
1681 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree.mts",
1682 flags
= "place_center_x, place_center_z",
1683 rotation
= "random",
1685 minetest
.register_decoration({
1686 deco_type
= "schematic",
1687 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1689 fill_ratio
= 0.0045,
1690 biomes
= {"jungle_edge"},
1692 y_max
= mcl_vars
.mg_overworld_max
,
1693 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_jungle_tree.mts",
1694 flags
= "place_center_x, place_center_z",
1695 rotation
= "random",
1698 -- Oak in jungle / jungle edge
1699 minetest
.register_decoration({
1700 deco_type
= "schematic",
1701 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1704 biomes
= {"jungle"},
1706 y_max
= mcl_vars
.mg_overworld_max
,
1707 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1708 flags
= "place_center_x, place_center_z",
1709 rotation
= "random",
1711 minetest
.register_decoration({
1712 deco_type
= "schematic",
1713 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1715 fill_ratio
= 0.0004,
1716 biomes
= {"jungle_edge"},
1718 y_max
= mcl_vars
.mg_overworld_max
,
1719 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts",
1720 flags
= "place_center_x, place_center_z",
1721 rotation
= "random",
1725 local function quick_spruce(seed
, offset
, sprucename
, biomes
, y
)
1729 minetest
.register_decoration({
1730 deco_type
= "schematic",
1731 place_on
= {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol"},
1736 spread
= {x
= 250, y
= 250, z
= 250},
1743 y_max
= mcl_vars
.mg_overworld_max
,
1744 schematic
= minetest
.get_modpath("mcl_core").."/schematics/"..sprucename
,
1745 flags
= "place_center_x, place_center_z",
1750 quick_spruce(3000, 0.0013, "mcl_core_spruce_huge_1.mts", {"mega_spruce_taiga"})
1751 quick_spruce(4000, 0.00142, "mcl_core_spruce_huge_2.mts", {"mega_spruce_taiga"})
1752 quick_spruce(6000, 0.0013, "mcl_core_spruce_huge_3.mts", {"mega_spruce_taiga"})
1754 quick_spruce(3000, 0.0008, "mcl_core_spruce_huge_up_1.mts", {"mega_taiga"})
1755 quick_spruce(4000, 0.0008, "mcl_core_spruce_huge_up_2.mts", {"mega_taiga"})
1756 quick_spruce(6000, 0.0008, "mcl_core_spruce_huge_up_3.mts", {"mega_taiga"})
1760 quick_spruce(11000, 0.00150, "mcl_core_spruce_5.mts", {"taiga", "cold_taiga"})
1762 quick_spruce(2500, 0.00325, "mcl_core_spruce_1.mts", {"mega_spruce_taiga", "mega_taiga", "taiga", "cold_taiga"})
1763 quick_spruce(7000, 0.00425, "mcl_core_spruce_3.mts", {"mega_spruce_taiga", "mega_taiga", "taiga", "cold_taiga"})
1764 quick_spruce(9000, 0.00325, "mcl_core_spruce_4.mts", {"mega_spruce_taiga", "mega_taiga", "taiga", "cold_taiga"})
1766 quick_spruce(9500, 0.00500, "mcl_core_spruce_tall.mts", {"mega_taiga"})
1768 quick_spruce(5000, 0.00250, "mcl_core_spruce_2.mts", {"mega_spruce_taiga", "mega_taiga"})
1770 quick_spruce(11000, 0.000025, "mcl_core_spruce_5.mts", {"extreme_hills", "extreme_hills_m"})
1771 quick_spruce(2500, 0.00005, "mcl_core_spruce_1.mts", {"extreme_hills", "extreme_hills_m"})
1772 quick_spruce(7000, 0.00005, "mcl_core_spruce_3.mts", {"extreme_hills", "extreme_hills_m"})
1773 quick_spruce(9000, 0.00005, "mcl_core_spruce_4.mts", {"extreme_hills", "extreme_hills_m"})
1775 quick_spruce(11000, 0.001, "mcl_core_spruce_5.mts", {"extreme_hills_plus", "extreme_hills_plus_snowtop"}, 50)
1776 quick_spruce(2500, 0.002, "mcl_core_spruce_1.mts", {"extreme_hills_plus", "extreme_hills_plus_snowtop"}, 50)
1777 quick_spruce(7000, 0.003, "mcl_core_spruce_3.mts", {"extreme_hills_plus", "extreme_hills_plus_snowtop"}, 50)
1778 quick_spruce(9000, 0.002, "mcl_core_spruce_4.mts", {"extreme_hills_plus", "extreme_hills_plus_snowtop"}, 50)
1781 -- Small lollipop spruce
1782 minetest
.register_decoration({
1783 deco_type
= "schematic",
1784 place_on
= {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol"},
1789 spread
= {x
= 250, y
= 250, z
= 250},
1794 biomes
= {"taiga", "cold_taiga"},
1796 y_max
= mcl_vars
.mg_overworld_max
,
1797 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_spruce_lollipop.mts",
1798 flags
= "place_center_x, place_center_z",
1801 -- Matchstick spruce: Very few leaves, tall trunk
1802 minetest
.register_decoration({
1803 deco_type
= "schematic",
1804 place_on
= {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol"},
1809 spread
= {x
= 250, y
= 250, z
= 250},
1814 biomes
= {"taiga", "cold_taiga"},
1816 y_max
= mcl_vars
.mg_overworld_max
,
1817 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_spruce_matchstick.mts",
1818 flags
= "place_center_x, place_center_z",
1821 -- Acacia (many variants)
1823 minetest
.register_decoration({
1824 deco_type
= "schematic",
1825 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"},
1827 fill_ratio
= 0.0002,
1828 biomes
= {"savanna"},
1830 y_max
= mcl_vars
.mg_overworld_max
,
1831 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_acacia_"..a
..".mts",
1832 flags
= "place_center_x, place_center_z",
1833 rotation
= "random",
1838 minetest
.register_decoration({
1839 deco_type
= "schematic",
1840 place_on
= {"mcl_core:dirt_with_grass"},
1845 spread
= {x
= 250, y
= 250, z
= 250},
1850 biomes
= {"birch_forest"},
1852 y_max
= mcl_vars
.mg_overworld_max
,
1853 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_birch.mts",
1854 flags
= "place_center_x, place_center_z",
1856 minetest
.register_decoration({
1857 deco_type
= "schematic",
1858 place_on
= {"mcl_core:dirt_with_grass"},
1863 spread
= {x
= 250, y
= 250, z
= 250},
1868 biomes
= {"birch_forest_m"},
1870 y_max
= mcl_vars
.mg_overworld_max
,
1871 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_birch_tall.mts",
1872 flags
= "place_center_x, place_center_z",
1875 minetest
.register_decoration({
1876 deco_type
= "schematic",
1877 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
1882 spread
= {x
= 250, y
= 250, z
= 250},
1887 biomes
= {"forest", "flower_forest"},
1889 y_max
= mcl_vars
.mg_overworld_max
,
1890 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_birch.mts",
1891 flags
= "place_center_x, place_center_z",
1893 minetest
.register_decoration({
1894 deco_type
= "schematic",
1895 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"},
1900 spread
= {x
= 250, y
= 250, z
= 250},
1905 biomes
= {"ice_plains"},
1907 y_max
= mcl_vars
.mg_overworld_max
,
1908 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_birch.mts",
1909 flags
= "place_center_x, place_center_z",
1913 minetest
.register_decoration({
1914 deco_type
= "schematic",
1915 place_on
= {"mcl_core:dirt_with_grass"},
1920 spread
= {x
= 125, y
= 125, z
= 125},
1925 biomes
= {"roofed_forest"},
1927 y_max
= mcl_vars
.mg_overworld_max
,
1928 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_dark_oak.mts",
1929 flags
= "place_center_x, place_center_z",
1930 rotation
= "random",
1934 local ratio_mushroom
= 0.0001
1935 local ratio_mushroom_huge
= ratio_mushroom
* (11/12)
1936 local ratio_mushroom_giant
= ratio_mushroom
* (1/12)
1937 local ratio_mushroom_mycelium
= 0.002
1938 local ratio_mushroom_mycelium_huge
= ratio_mushroom_mycelium
* (11/12)
1939 local ratio_mushroom_mycelium_giant
= ratio_mushroom_mycelium
* (1/12)
1941 -- Huge Brown Mushroom
1942 minetest
.register_decoration({
1943 deco_type
= "schematic",
1944 place_on
= { "mcl_core:dirt_with_grass", "mcl_core:dirt" },
1946 fill_ratio
= ratio_mushroom_huge
,
1947 biomes
= { "roofed_forest" },
1949 y_max
= mcl_vars
.mg_overworld_max
,
1950 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_brown.mts",
1951 flags
= "place_center_x, place_center_z",
1952 rotation
= "random",
1954 minetest
.register_decoration({
1955 deco_type
= "schematic",
1956 place_on
= { "mcl_core:dirt_with_grass", "mcl_core:dirt" },
1958 fill_ratio
= ratio_mushroom_giant
,
1959 biomes
= { "roofed_forest" },
1961 y_max
= mcl_vars
.mg_overworld_max
,
1962 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_brown.mts",
1963 flags
= "place_center_x, place_center_z",
1964 rotation
= "random",
1967 minetest
.register_decoration({
1968 deco_type
= "schematic",
1969 place_on
= { "mcl_core:mycelium" },
1971 fill_ratio
= ratio_mushroom_mycelium_huge
,
1972 biomes
= { "mushroom_island", "mushroom_island_shore" },
1974 y_max
= mcl_vars
.mg_overworld_max
,
1975 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_brown.mts",
1976 flags
= "place_center_x, place_center_z",
1977 rotation
= "random",
1979 minetest
.register_decoration({
1980 deco_type
= "schematic",
1981 place_on
= { "mcl_core:mycelium" },
1983 fill_ratio
= ratio_mushroom_mycelium_giant
,
1984 biomes
= { "mushroom_island", "mushroom_island_shore" },
1986 y_max
= mcl_vars
.mg_overworld_max
,
1987 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_brown.mts",
1988 flags
= "place_center_x, place_center_z",
1989 rotation
= "random",
1992 -- Huge Red Mushroom
1993 minetest
.register_decoration({
1994 deco_type
= "schematic",
1995 place_on
= { "mcl_core:dirt_with_grass", "mcl_core:dirt" },
1997 fill_ratio
= ratio_mushroom_huge
,
1998 biomes
= { "roofed_forest" },
2000 y_max
= mcl_vars
.mg_overworld_max
,
2001 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_red.mts",
2002 flags
= "place_center_x, place_center_z",
2003 rotation
= "random",
2005 minetest
.register_decoration({
2006 deco_type
= "schematic",
2007 place_on
= { "mcl_core:dirt_with_grass", "mcl_core:dirt" },
2009 fill_ratio
= ratio_mushroom_giant
,
2010 biomes
= { "roofed_forest" },
2012 y_max
= mcl_vars
.mg_overworld_max
,
2013 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_red.mts",
2014 flags
= "place_center_x, place_center_z",
2015 rotation
= "random",
2018 minetest
.register_decoration({
2019 deco_type
= "schematic",
2020 place_on
= { "mcl_core:mycelium" },
2022 fill_ratio
= ratio_mushroom_mycelium_huge
,
2023 biomes
= { "mushroom_island", "mushroom_island_shore" },
2025 y_max
= mcl_vars
.mg_overworld_max
,
2026 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_huge_red.mts",
2027 flags
= "place_center_x, place_center_z",
2028 rotation
= "random",
2030 minetest
.register_decoration({
2031 deco_type
= "schematic",
2032 place_on
= { "mcl_core:mycelium" },
2034 fill_ratio
= ratio_mushroom_mycelium_giant
,
2035 biomes
= { "mushroom_island", "mushroom_island_shore" },
2037 y_max
= mcl_vars
.mg_overworld_max
,
2038 schematic
= minetest
.get_modpath("mcl_mushrooms").."/schematics/mcl_mushrooms_giant_red.mts",
2039 flags
= "place_center_x, place_center_z",
2040 rotation
= "random",
2043 -- Moss stone boulder (3×3)
2044 minetest
.register_decoration({
2045 deco_type
= "schematic",
2046 place_on
= {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
2051 spread
= {x
= 300, y
= 300, z
= 300},
2056 biomes
= {"mega_taiga", "mega_spruce_taiga"},
2058 y_max
= mcl_vars
.mg_overworld_max
,
2059 schematic
= minetest
.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder.mts",
2060 flags
= "place_center_x, place_center_z",
2063 -- Small moss stone boulder (2×2)
2064 minetest
.register_decoration({
2065 deco_type
= "schematic",
2066 place_on
= {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
2071 spread
= {x
= 300, y
= 300, z
= 300},
2076 biomes
= {"mega_taiga", "mega_spruce_taiga"},
2078 y_max
= mcl_vars
.mg_overworld_max
,
2079 schematic
= minetest
.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder_small.mts",
2080 flags
= "place_center_x, place_center_z",
2084 minetest
.register_decoration({
2085 deco_type
= "simple",
2086 place_on
= {"group:sand"},
2091 spread
= {x
= 100, y
= 100, z
= 100},
2097 y_max
= mcl_vars
.mg_overworld_max
,
2098 decoration
= "mcl_core:cactus",
2099 biomes
= {"red_desert","desert","mesa","mesa_sandlevel","mesa_plateau_f","mesa_plateau_f_sandlevel"},
2105 minetest
.register_decoration({
2106 deco_type
= "simple",
2107 place_on
= {"mcl_core:dirt", "mcl_core:coarse_dirt", "mcl_core:dirt_with_grass", "group:sand", "mcl_core:podzol", "mcl_core:reeds"},
2112 spread
= {x
= 100, y
= 100, z
= 100},
2117 biomes
= {"plains", "plains_beach", "taiga_beach", "ice_plains", "cold_taiga_beach", "savanna_beach", "forest_beach", "red_desert", "desert"},
2119 y_max
= mcl_vars
.mg_overworld_max
,
2120 decoration
= "mcl_core:reeds",
2123 spawn_by
= { "mcl_core:water_source", "group:frosted_ice" },
2126 minetest
.register_decoration({
2127 deco_type
= "simple",
2128 place_on
= {"mcl_core:dirt", "mcl_core:coarse_dirt", "mcl_core:dirt_with_grass", "group:sand", "mcl_core:podzol", "mcl_core:reeds"},
2133 spread
= {x
= 100, y
= 100, z
= 100},
2138 biomes
= {"swampland"},
2140 y_max
= mcl_vars
.mg_overworld_max
,
2141 decoration
= "mcl_core:reeds",
2144 spawn_by
= { "mcl_core:water_source", "group:frosted_ice" },
2149 minetest
.register_decoration({
2150 deco_type
= "schematic",
2152 size
= { x
=1, y
=3, z
=1 },
2154 { name
= "air", prob
= 0 },
2155 { name
= "mcl_flowers:double_grass", param1
=255, },
2156 { name
= "mcl_flowers:double_grass_top", param1
=255, },
2160 ["mcl_flowers:tallgrass"] = "mcl_flowers:double_grass"
2162 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"},
2167 spread
= {x
= 300, y
= 300, z
= 300},
2173 y_max
= mcl_vars
.mg_overworld_max
,
2174 biomes
= {"plains", "sunflower_plains", "taiga", "forest", "flower_forest", "birch_forest", "birch_forest_m", "roofed_forest", "savanna", "mesa_plateau_f_grasstop" },
2178 minetest
.register_decoration({
2179 deco_type
= "schematic",
2181 size
= { x
=1, y
=3, z
=1 },
2183 { name
= "air", prob
= 0 },
2184 { name
= "mcl_flowers:double_fern", param1
=255, },
2185 { name
= "mcl_flowers:double_fern_top", param1
=255, },
2189 ["mcl_flowers:fern"] = "mcl_flowers:double_fern"
2191 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:podzol_snow"},
2197 spread
= {x
= 250, y
= 250, z
= 250},
2202 biomes
= { "jungle", "jungle_edge", "taiga", "cold_taiga", "mega_taiga", "mega_spruce_taiga" },
2204 y_max
= mcl_vars
.mg_overworld_max
,
2208 local register_large_flower
= function(name
, biomes
, seed
, offset
, flower_forest_offset
)
2210 if flower_forest_offset
then
2216 local o
, b
-- offset, biomes
2221 o
= flower_forest_offset
2222 b
= { "flower_forest" }
2225 minetest
.register_decoration({
2226 deco_type
= "schematic",
2228 size
= { x
=1, y
=3, z
=1 },
2230 { name
= "air", prob
= 0 },
2231 { name
= "mcl_flowers:"..name
, param1
=255, },
2232 { name
= "mcl_flowers:"..name
.."_top", param1
=255, },
2235 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2241 spread
= {x
= 300, y
= 300, z
= 300},
2247 y_max
= mcl_vars
.mg_overworld_max
,
2254 register_large_flower("rose_bush", {"forest"}, 9350, -0.008, 0.003)
2255 register_large_flower("peony", {"forest"}, 10450, -0.008, 0.003)
2256 register_large_flower("lilac", {"forest"}, 10600, -0.007, 0.003)
2258 register_large_flower("sunflower", {"plains", "sunflower_plains"}, 2940, 0.0)
2261 minetest
.register_decoration({
2262 deco_type
= "schematic",
2263 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2268 spread
= {x
= 250, y
= 250, z
= 250},
2273 biomes
= {"jungle"},
2275 y_max
= mcl_vars
.mg_overworld_max
,
2276 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush.mts",
2277 flags
= "place_center_x, place_center_z",
2279 minetest
.register_decoration({
2280 deco_type
= "schematic",
2281 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2286 spread
= {x
= 250, y
= 250, z
= 250},
2291 biomes
= {"jungle_edge"},
2293 y_max
= mcl_vars
.mg_overworld_max
,
2294 schematic
= minetest
.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush.mts",
2295 flags
= "place_center_x, place_center_z",
2299 minetest
.register_decoration({
2300 deco_type
= "schematic",
2301 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:coarse_dirt"},
2306 spread
= {x
= 250, y
= 250, z
= 250},
2311 biomes
= {"mega_taiga", "mega_spruce_taiga", "taiga"},
2313 y_max
= mcl_vars
.mg_overworld_max
,
2315 size
= {x
= 4, y
= 3, z
= 1},
2317 {name
= "air", prob
= 0},
2318 {name
= "air", prob
= 0},
2319 {name
= "air", prob
= 0},
2320 {name
= "air", prob
= 0},
2321 {name
= "mcl_core:sprucetree", param2
= 12, prob
= 127},
2322 {name
= "mcl_core:sprucetree", param2
= 12},
2323 {name
= "mcl_core:sprucetree", param2
= 12},
2324 {name
= "mcl_core:sprucetree", param2
= 12, prob
= 127},
2325 {name
= "air", prob
= 0},
2326 {name
= "mcl_mushrooms:mushroom_brown", prob
= 160},
2327 {name
= "mcl_mushrooms:mushroom_red", prob
= 160},
2328 {name
= "air", prob
= 0},
2331 flags
= "place_center_x",
2332 rotation
= "random",
2335 minetest
.register_decoration({
2336 deco_type
= "schematic",
2337 place_on
= {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:podzol_snow", "mcl_core:coarse_dirt"},
2342 spread
= {x
= 250, y
= 250, z
= 250},
2347 biomes
= {"cold_taiga"},
2349 y_max
= mcl_vars
.mg_overworld_max
,
2351 size
= {x
= 4, y
= 3, z
= 1},
2353 {name
= "air", prob
= 0},
2354 {name
= "air", prob
= 0},
2355 {name
= "air", prob
= 0},
2356 {name
= "air", prob
= 0},
2357 {name
= "mcl_core:sprucetree", param2
= 12, prob
= 127},
2358 {name
= "mcl_core:sprucetree", param2
= 12},
2359 {name
= "mcl_core:sprucetree", param2
= 12},
2360 {name
= "mcl_core:sprucetree", param2
= 12, prob
= 127},
2361 {name
= "air", prob
= 0},
2362 {name
= "air", prob
= 0},
2363 {name
= "air", prob
= 0},
2364 {name
= "air", prob
= 0},
2367 flags
= "place_center_x",
2368 rotation
= "random",
2371 minetest
.register_decoration({
2372 deco_type
= "schematic",
2373 place_on
= {"mcl_core:dirt_with_grass"},
2378 spread
= {x
= 250, y
= 250, z
= 250},
2383 biomes
= {"forest", "birch_forest", "birch_forest_m",},
2385 y_max
= mcl_vars
.mg_overworld_max
,
2387 size
= {x
= 3, y
= 3, z
= 1},
2389 {name
= "air", prob
= 0},
2390 {name
= "air", prob
= 0},
2391 {name
= "air", prob
= 0},
2392 {name
= "mcl_core:birchtree", param2
= 12},
2393 {name
= "mcl_core:birchtree", param2
= 12},
2394 {name
= "mcl_core:birchtree", param2
= 12, prob
= 127},
2395 {name
= "mcl_mushrooms:mushroom_red", prob
= 100},
2396 {name
= "mcl_mushrooms:mushroom_brown", prob
= 10},
2397 {name
= "air", prob
= 0},
2400 flags
= "place_center_x",
2401 rotation
= "random",
2404 minetest
.register_decoration({
2405 deco_type
= "schematic",
2406 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2409 biomes
= {"jungle"},
2411 y_max
= mcl_vars
.mg_overworld_max
,
2413 size
= {x
= 4, y
= 3, z
= 1},
2415 {name
= "air", prob
= 0},
2416 {name
= "air", prob
= 0},
2417 {name
= "air", prob
= 0},
2418 {name
= "air", prob
= 0},
2419 {name
= "mcl_core:jungletree", param2
= 12, prob
= 127},
2420 {name
= "mcl_core:jungletree", param2
= 12},
2421 {name
= "mcl_core:jungletree", param2
= 12},
2422 {name
= "mcl_core:jungletree", param2
= 12, prob
= 127},
2423 {name
= "air", prob
= 0},
2424 {name
= "mcl_mushrooms:mushroom_brown", prob
= 50},
2425 {name
= "air", prob
= 0},
2426 {name
= "air", prob
= 0},
2429 flags
= "place_center_x",
2430 rotation
= "random",
2433 minetest
.register_decoration({
2434 deco_type
= "schematic",
2435 place_on
= {"mcl_core:dirt_with_grass"},
2440 spread
= {x
= 250, y
= 250, z
= 250},
2445 biomes
= {"forest"},
2447 y_max
= mcl_vars
.mg_overworld_max
,
2449 size
= {x
= 3, y
= 3, z
= 1},
2451 {name
= "air", prob
= 0},
2452 {name
= "air", prob
= 0},
2453 {name
= "air", prob
= 0},
2454 {name
= "mcl_core:tree", param2
= 12, prob
= 127},
2455 {name
= "mcl_core:tree", param2
= 12},
2456 {name
= "mcl_core:tree", param2
= 12},
2457 {name
= "air", prob
= 0},
2458 {name
= "mcl_mushrooms:mushroom_brown", prob
= 96},
2459 {name
= "mcl_mushrooms:mushroom_red", prob
= 96},
2462 flags
= "place_center_x",
2463 rotation
= "random",
2468 local lily_schem
= {
2469 { name
= "mcl_core:water_source" },
2470 { name
= "mcl_flowers:waterlily" },
2473 -- Spawn them in shallow water at ocean level in swamplands.
2474 -- Tweak lilydepth to change the maximum water depth
2477 for d
=1, lilydepth
do
2478 local height
= d
+ 2
2480 table.insert(lily_schem
, 1, { name
= "air", prob
= 0 })
2482 minetest
.register_decoration({
2483 deco_type
= "schematic",
2485 size
= { x
=1, y
=height
, z
=1 },
2488 place_on
= "mcl_core:dirt",
2493 spread
= {x
= 100, y
= 100, z
= 100},
2500 biomes
= { "swampland_shore" },
2501 rotation
= "random",
2506 minetest
.register_decoration({
2507 deco_type
= "simple",
2508 place_on
= {"mcl_core:dirt_with_grass"},
2513 spread
= {x
= 250, y
= 250, z
= 250},
2519 y_max
= mcl_vars
.mg_overworld_max
,
2520 decoration
= "mcl_farming:melon",
2521 biomes
= { "jungle" },
2523 minetest
.register_decoration({
2524 deco_type
= "simple",
2525 place_on
= {"mcl_core:dirt_with_grass"},
2530 spread
= {x
= 250, y
= 250, z
= 250},
2536 y_max
= mcl_vars
.mg_overworld_max
,
2537 decoration
= "mcl_farming:melon",
2538 biomes
= { "jungle_edge" },
2542 minetest
.register_decoration({
2543 deco_type
= "schematic",
2545 size
= { x
=1, y
=2, z
=1 },
2547 { name
= "air", prob
= 0 },
2548 { name
= "mcl_farming:pumpkin_face", param1
=255, },
2551 place_on
= {"mcl_core:dirt_with_grass"},
2556 spread
= {x
= 125, y
= 125, z
= 125},
2561 biomes
= {"plains"},
2564 rotation
= "random",
2567 -- Grasses and ferns
2568 local grass_forest
= {"plains", "taiga", "forest", "flower_forest", "birch_forest", "birch_forest_m", "roofed_forest", "swampland", "mesa_plateau_f_grasstop" }
2569 local grass_plains
= {"plains", "savanna", "sunflower_plains", "jungle_edge" }
2570 local grass_savanna
= {"savanna"}
2571 local grass_sparse
= {"extreme_hills", "extreme_hills_plus", "extreme_hills_plus_snowtop", "extreme_hills_m" }
2573 register_grass_decoration("tallgrass", -0.03, 0.09, grass_forest
)
2574 register_grass_decoration("tallgrass", -0.015, 0.075, grass_forest
)
2575 register_grass_decoration("tallgrass", 0, 0.06, grass_forest
)
2576 register_grass_decoration("tallgrass", 0.015, 0.045, grass_forest
)
2577 register_grass_decoration("tallgrass", 0.03, 0.03, grass_forest
)
2578 register_grass_decoration("tallgrass", 0.01, 0.05, grass_forest
)
2579 register_grass_decoration("tallgrass", 0.03, 0.03, grass_plains
)
2580 register_grass_decoration("tallgrass", 0.05, 0.01, grass_plains
)
2581 register_grass_decoration("tallgrass", 0.07, -0.01, grass_plains
)
2582 register_grass_decoration("tallgrass", 0.09, -0.03, grass_plains
)
2583 register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna
)
2584 register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse
)
2586 local fern_minimal
= { "jungle", "jungle_edge", "taiga", "mega_taiga", "mega_spruce_taiga", "cold_taiga" }
2587 local fern_low
= { "jungle", "jungle_edge", "taiga", "mega_taiga", "mega_spruce_taiga" }
2588 local fern_jungle
= { "jungle", "jungle_edge" }
2589 register_grass_decoration("fern", -0.03, 0.09, fern_minimal
)
2590 register_grass_decoration("fern", -0.015, 0.075, fern_minimal
)
2591 register_grass_decoration("fern", 0, 0.06, fern_minimal
)
2592 register_grass_decoration("fern", 0.015, 0.045, fern_low
)
2593 register_grass_decoration("fern", 0.03, 0.03, fern_low
)
2594 register_grass_decoration("fern", 0.01, 0.05, fern_jungle
)
2595 register_grass_decoration("fern", 0.03, 0.03, fern_jungle
)
2596 register_grass_decoration("fern", 0.05, 0.01, fern_jungle
)
2597 register_grass_decoration("fern", 0.07, -0.01, fern_jungle
)
2598 register_grass_decoration("fern", 0.09, -0.03, fern_jungle
)
2600 -- Place tall grass on snow in Ice Plains and Extreme Hills+
2601 minetest
.register_decoration({
2602 deco_type
= "schematic",
2603 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"},
2608 spread
= {x
= 15, y
= 15, z
= 15},
2613 biomes
= {"ice_plains"},
2615 y_max
= mcl_vars
.mg_overworld_max
,
2617 size
= { x
=1, y
=2, z
=1 },
2619 { name
= "mcl_core:dirt_with_grass", force_place
=true, },
2620 { name
= "mcl_flowers:tallgrass", },
2624 minetest
.register_decoration({
2625 deco_type
= "schematic",
2626 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"},
2631 spread
= {x
= 15, y
= 15, z
= 15},
2636 biomes
= {"extreme_hills_plus_snowtop"},
2638 y_max
= mcl_vars
.mg_overworld_max
,
2640 size
= { x
=1, y
=2, z
=1 },
2642 { name
= "mcl_core:dirt_with_grass", force_place
=true, },
2643 { name
= "mcl_flowers:tallgrass", },
2650 minetest
.register_decoration({
2651 deco_type
= "simple",
2652 place_on
= {"group:sand", "mcl_core:podzol", "mcl_core:podzol_snow", "mcl_core:dirt", "mcl_core:coarse_dirt", "group:hardened_clay"},
2657 spread
= {x
= 100, y
= 100, z
= 100},
2663 y_max
= mcl_vars
.mg_overworld_max
,
2664 biomes
= {"red_desert", "desert", "mesa", "mesa_sandlevel", "mesa_plateau_f", "mesa_plateau_f_sandlevel", "taiga", "mega_taiga"},
2665 decoration
= "mcl_core:deadbush",
2669 -- Mushrooms in mushroom biome
2670 minetest
.register_decoration({
2671 deco_type
= "simple",
2672 place_on
= {"mcl_core:mycelium"},
2675 biomes
= {"mushroom_island", "mushroom_island_shore"},
2676 noise_threshold
= 2.0,
2677 y_min
= mcl_vars
.mg_overworld_min
,
2678 y_max
= mcl_vars
.mg_overworld_max
,
2679 decoration
= "mcl_mushrooms:mushroom_red",
2681 minetest
.register_decoration({
2682 deco_type
= "simple",
2683 place_on
= {"mcl_core:mycelium"},
2686 biomes
= {"mushroom_island", "mushroom_island_shore"},
2687 y_min
= mcl_vars
.mg_overworld_min
,
2688 y_max
= mcl_vars
.mg_overworld_max
,
2689 decoration
= "mcl_mushrooms:mushroom_brown",
2692 -- Mushrooms in taigas
2693 minetest
.register_decoration({
2694 deco_type
= "simple",
2695 place_on
= {"mcl_core:podzol"},
2698 biomes
= {"taiga", "mega_taiga", "mega_spruce_taiga"},
2699 y_min
= mcl_vars
.mg_overworld_min
,
2700 y_max
= mcl_vars
.mg_overworld_max
,
2701 decoration
= "mcl_mushrooms:mushroom_red",
2703 minetest
.register_decoration({
2704 deco_type
= "simple",
2705 place_on
= {"mcl_core:podzol"},
2708 biomes
= {"taiga", "mega_taiga", "mega_spruce_taiga"},
2709 y_min
= mcl_vars
.mg_overworld_min
,
2710 y_max
= mcl_vars
.mg_overworld_max
,
2711 decoration
= "mcl_mushrooms:mushroom_brown",
2715 -- Mushrooms next to trees
2716 local mushrooms
= {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}
2717 local mseeds
= { 7133, 8244 }
2718 for m
=1, #mushrooms
do
2719 -- Mushrooms next to trees
2720 minetest
.register_decoration({
2721 deco_type
= "simple",
2722 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"},
2727 spread
= {x
= 250, y
= 250, z
= 250},
2733 y_max
= mcl_vars
.mg_overworld_max
,
2734 decoration
= mushrooms
[m
],
2735 spawn_by
= { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree" },
2739 -- More mushrooms in swamplands
2740 minetest
.register_decoration({
2741 deco_type
= "simple",
2742 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"},
2747 spread
= {x
= 250, y
= 250, z
= 250},
2753 y_max
= mcl_vars
.mg_overworld_max
,
2754 decoration
= mushrooms
[m
],
2755 biomes
= { "swampland "},
2756 spawn_by
= { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree" },
2760 local function register_flower(name
, biomes
, seed
, is_in_flower_forest
)
2761 if is_in_flower_forest
== nil then
2762 is_in_flower_forest
= true
2765 minetest
.register_decoration({
2766 deco_type
= "simple",
2767 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2772 spread
= {x
= 100, y
= 100, z
= 100},
2778 y_max
= mcl_vars
.mg_overworld_max
,
2780 decoration
= "mcl_flowers:"..name
,
2783 if is_in_flower_forest
then
2784 minetest
.register_decoration({
2785 deco_type
= "simple",
2786 place_on
= {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
2791 spread
= {x
= 100, y
= 100, z
= 100},
2797 y_max
= mcl_vars
.mg_overworld_max
,
2798 biomes
= {"flower_forest"},
2799 decoration
= "mcl_flowers:"..name
,
2804 local flower_biomes1
= {"plains", "sunflower_plains", "roofed_forest", "forest", "birch_forest", "birch_forest_m", "taiga", "cold_taiga", "jungle", "jungle_edge", "savanna", "extreme_hills", "extreme_hills_m", "extreme_hills_plus", "extreme_hills_plus_snowtop", "mesa_plateau_f_grasstop" }
2806 register_flower("dandelion", flower_biomes1
, 8)
2807 register_flower("poppy", flower_biomes1
, 9439)
2809 local flower_biomes2
= {"plains", "sunflower_plains"}
2810 register_flower("tulip_red", flower_biomes2
, 436)
2811 register_flower("tulip_orange", flower_biomes2
, 536)
2812 register_flower("tulip_pink", flower_biomes2
, 636)
2813 register_flower("tulip_white", flower_biomes2
, 736)
2814 register_flower("azure_bluet", flower_biomes2
, 800)
2815 register_flower("oxeye_daisy", flower_biomes2
, 3490)
2817 register_flower("allium", nil, 0) -- flower forest only
2818 register_flower("blue_orchid", {"swampland"}, 64500, false)
2822 -- Decorations in non-Overworld dimensions
2823 local function register_dimension_decorations()
2828 -- Detect mapgen to select functions
2830 if mg_name
~= "singlenode" then
2831 minetest
.clear_registered_biomes()
2832 minetest
.clear_registered_decorations()
2833 minetest
.clear_registered_schematics()
2834 if mg_name
~= "v6" and mg_name
~= "flat" then
2836 register_biomelike_ores()
2837 register_decorations()
2838 elseif mg_name
== "flat" then
2839 -- Implementation of Minecraft's Superflat mapgen, classic style
2840 minetest
.clear_registered_biomes()
2841 minetest
.clear_registered_decorations()
2842 minetest
.clear_registered_schematics()
2843 register_classic_superflat_biome()
2846 -- Non-overworld stuff is registered independently
2847 register_dimension_biomes()
2848 register_dimension_ores()
2849 register_dimension_decorations()
2851 -- Overworld decorations for v6 are handled in mcl_mapgen_core