2 -- Aliases for map generators
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")
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")
34 minetest.register_alias("mapgen_cobble", "default:cobble")
35 minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
36 minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
37 minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
38 minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
39 minetest.register_alias("mapgen_stair_sandstone_block", "stairs:stair_sandstone_block")
48 function default.register_mgv6_ores()
51 -- These first to avoid other ores in blobs
54 -- This first to avoid clay in sand blobs
56 minetest.register_ore({
59 wherein = {"default:sand"},
60 clust_scarcity = 16 * 16 * 16,
64 noise_threshold = 0.0,
68 spread = {x = 5, y = 5, z = 5},
77 minetest.register_ore({
80 wherein = {"default:stone", "default:desert_stone"},
81 clust_scarcity = 16 * 16 * 16,
85 noise_threshold = 0.0,
89 spread = {x = 5, y = 5, z = 5},
98 minetest.register_ore({
100 ore = "default:dirt",
101 wherein = {"default:stone"},
102 clust_scarcity = 16 * 16 * 16,
106 noise_threshold = 0.0,
110 spread = {x = 5, y = 5, z = 5},
119 minetest.register_ore({
121 ore = "default:gravel",
122 wherein = {"default:stone"},
123 clust_scarcity = 16 * 16 * 16,
127 noise_threshold = 0.0,
131 spread = {x = 5, y = 5, z = 5},
142 minetest.register_ore({
143 ore_type = "scatter",
144 ore = "default:stone_with_coal",
145 wherein = "default:stone",
146 clust_scarcity = 8 * 8 * 8,
153 minetest.register_ore({
154 ore_type = "scatter",
155 ore = "default:stone_with_coal",
156 wherein = "default:stone",
157 clust_scarcity = 8 * 8 * 8,
164 minetest.register_ore({
165 ore_type = "scatter",
166 ore = "default:stone_with_coal",
167 wherein = "default:stone",
168 clust_scarcity = 24 * 24 * 24,
177 minetest.register_ore({
178 ore_type = "scatter",
179 ore = "default:stone_with_iron",
180 wherein = "default:stone",
181 clust_scarcity = 9 * 9 * 9,
188 minetest.register_ore({
189 ore_type = "scatter",
190 ore = "default:stone_with_iron",
191 wherein = "default:stone",
192 clust_scarcity = 7 * 7 * 7,
199 minetest.register_ore({
200 ore_type = "scatter",
201 ore = "default:stone_with_iron",
202 wherein = "default:stone",
203 clust_scarcity = 24 * 24 * 24,
212 minetest.register_ore({
213 ore_type = "scatter",
214 ore = "default:stone_with_copper",
215 wherein = "default:stone",
216 clust_scarcity = 9 * 9 * 9,
223 minetest.register_ore({
224 ore_type = "scatter",
225 ore = "default:stone_with_copper",
226 wherein = "default:stone",
227 clust_scarcity = 12 * 12 * 12,
234 minetest.register_ore({
235 ore_type = "scatter",
236 ore = "default:stone_with_copper",
237 wherein = "default:stone",
238 clust_scarcity = 9 * 9 * 9,
247 minetest.register_ore({
248 ore_type = "scatter",
249 ore = "default:stone_with_tin",
250 wherein = "default:stone",
251 clust_scarcity = 10 * 10 * 10,
258 minetest.register_ore({
259 ore_type = "scatter",
260 ore = "default:stone_with_tin",
261 wherein = "default:stone",
262 clust_scarcity = 13 * 13 * 13,
269 minetest.register_ore({
270 ore_type = "scatter",
271 ore = "default:stone_with_tin",
272 wherein = "default:stone",
273 clust_scarcity = 10 * 10 * 10,
282 minetest.register_ore({
283 ore_type = "scatter",
284 ore = "default:stone_with_gold",
285 wherein = "default:stone",
286 clust_scarcity = 13 * 13 * 13,
293 minetest.register_ore({
294 ore_type = "scatter",
295 ore = "default:stone_with_gold",
296 wherein = "default:stone",
297 clust_scarcity = 15 * 15 * 15,
304 minetest.register_ore({
305 ore_type = "scatter",
306 ore = "default:stone_with_gold",
307 wherein = "default:stone",
308 clust_scarcity = 13 * 13 * 13,
317 minetest.register_ore({
318 ore_type = "scatter",
319 ore = "default:stone_with_mese",
320 wherein = "default:stone",
321 clust_scarcity = 14 * 14 * 14,
328 minetest.register_ore({
329 ore_type = "scatter",
330 ore = "default:stone_with_mese",
331 wherein = "default:stone",
332 clust_scarcity = 18 * 18 * 18,
339 minetest.register_ore({
340 ore_type = "scatter",
341 ore = "default:stone_with_mese",
342 wherein = "default:stone",
343 clust_scarcity = 14 * 14 * 14,
352 minetest.register_ore({
353 ore_type = "scatter",
354 ore = "default:stone_with_diamond",
355 wherein = "default:stone",
356 clust_scarcity = 15 * 15 * 15,
363 minetest.register_ore({
364 ore_type = "scatter",
365 ore = "default:stone_with_diamond",
366 wherein = "default:stone",
367 clust_scarcity = 17 * 17 * 17,
374 minetest.register_ore({
375 ore_type = "scatter",
376 ore = "default:stone_with_diamond",
377 wherein = "default:stone",
378 clust_scarcity = 15 * 15 * 15,
387 minetest.register_ore({
388 ore_type = "scatter",
389 ore = "default:mese",
390 wherein = "default:stone",
391 clust_scarcity = 36 * 36 * 36,
398 minetest.register_ore({
399 ore_type = "scatter",
400 ore = "default:mese",
401 wherein = "default:stone",
402 clust_scarcity = 36 * 36 * 36,
411 -- All mapgens except mgv6
413 function default.register_ores()
416 -- These obviously first.
420 minetest.register_ore({
421 ore_type = "stratum",
422 ore = "default:silver_sandstone",
423 wherein = {"default:stone"},
430 spread = {x = 128, y = 128, z = 128},
434 stratum_thickness = 4,
435 biomes = {"cold_desert"},
438 minetest.register_ore({
439 ore_type = "stratum",
440 ore = "default:silver_sandstone",
441 wherein = {"default:stone"},
448 spread = {x = 128, y = 128, z = 128},
452 stratum_thickness = 2,
453 biomes = {"cold_desert"},
458 minetest.register_ore({
459 ore_type = "stratum",
460 ore = "default:desert_sandstone",
461 wherein = {"default:desert_stone"},
468 spread = {x = 128, y = 128, z = 128},
472 stratum_thickness = 4,
476 minetest.register_ore({
477 ore_type = "stratum",
478 ore = "default:desert_sandstone",
479 wherein = {"default:desert_stone"},
486 spread = {x = 128, y = 128, z = 128},
490 stratum_thickness = 2,
496 minetest.register_ore({
497 ore_type = "stratum",
498 ore = "default:sandstone",
499 wherein = {"default:desert_stone"},
506 spread = {x = 128, y = 128, z = 128},
510 stratum_thickness = 2,
515 -- These before scatter ores to avoid other ores in blobs.
519 minetest.register_ore({
521 ore = "default:clay",
522 wherein = {"default:sand"},
523 clust_scarcity = 16 * 16 * 16,
527 noise_threshold = 0.0,
531 spread = {x = 5, y = 5, z = 5},
540 minetest.register_ore({
542 ore = "default:silver_sand",
543 wherein = {"default:stone"},
544 clust_scarcity = 16 * 16 * 16,
548 noise_threshold = 0.0,
552 spread = {x = 5, y = 5, z = 5},
557 biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
558 "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
559 "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
560 "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
561 "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
562 "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
563 "rainforest", "rainforest_swamp", "rainforest_ocean", "underground",
564 "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
569 minetest.register_ore({
571 ore = "default:dirt",
572 wherein = {"default:stone"},
573 clust_scarcity = 16 * 16 * 16,
577 noise_threshold = 0.0,
581 spread = {x = 5, y = 5, z = 5},
586 biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
587 "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore",
588 "rainforest", "rainforest_swamp", "floatland_coniferous_forest"}
593 minetest.register_ore({
595 ore = "default:gravel",
596 wherein = {"default:stone"},
597 clust_scarcity = 16 * 16 * 16,
601 noise_threshold = 0.0,
605 spread = {x = 5, y = 5, z = 5},
610 biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
611 "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
612 "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
613 "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
614 "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
615 "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
616 "rainforest", "rainforest_swamp", "rainforest_ocean", "underground",
617 "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
624 minetest.register_ore({
625 ore_type = "scatter",
626 ore = "default:stone_with_coal",
627 wherein = "default:stone",
628 clust_scarcity = 8 * 8 * 8,
635 minetest.register_ore({
636 ore_type = "scatter",
637 ore = "default:stone_with_coal",
638 wherein = "default:stone",
639 clust_scarcity = 8 * 8 * 8,
646 minetest.register_ore({
647 ore_type = "scatter",
648 ore = "default:stone_with_coal",
649 wherein = "default:stone",
650 clust_scarcity = 12 * 12 * 12,
659 minetest.register_ore({
660 ore_type = "scatter",
661 ore = "default:stone_with_tin",
662 wherein = "default:stone",
663 clust_scarcity = 10 * 10 * 10,
670 minetest.register_ore({
671 ore_type = "scatter",
672 ore = "default:stone_with_tin",
673 wherein = "default:stone",
674 clust_scarcity = 13 * 13 * 13,
681 minetest.register_ore({
682 ore_type = "scatter",
683 ore = "default:stone_with_tin",
684 wherein = "default:stone",
685 clust_scarcity = 10 * 10 * 10,
694 minetest.register_ore({
695 ore_type = "scatter",
696 ore = "default:stone_with_copper",
697 wherein = "default:stone",
698 clust_scarcity = 9 * 9 * 9,
705 minetest.register_ore({
706 ore_type = "scatter",
707 ore = "default:stone_with_copper",
708 wherein = "default:stone",
709 clust_scarcity = 12 * 12 * 12,
716 minetest.register_ore({
717 ore_type = "scatter",
718 ore = "default:stone_with_copper",
719 wherein = "default:stone",
720 clust_scarcity = 9 * 9 * 9,
729 minetest.register_ore({
730 ore_type = "scatter",
731 ore = "default:stone_with_iron",
732 wherein = "default:stone",
733 clust_scarcity = 9 * 9 * 9,
740 minetest.register_ore({
741 ore_type = "scatter",
742 ore = "default:stone_with_iron",
743 wherein = "default:stone",
744 clust_scarcity = 7 * 7 * 7,
751 minetest.register_ore({
752 ore_type = "scatter",
753 ore = "default:stone_with_iron",
754 wherein = "default:stone",
755 clust_scarcity = 12 * 12 * 12,
764 minetest.register_ore({
765 ore_type = "scatter",
766 ore = "default:stone_with_gold",
767 wherein = "default:stone",
768 clust_scarcity = 13 * 13 * 13,
775 minetest.register_ore({
776 ore_type = "scatter",
777 ore = "default:stone_with_gold",
778 wherein = "default:stone",
779 clust_scarcity = 15 * 15 * 15,
786 minetest.register_ore({
787 ore_type = "scatter",
788 ore = "default:stone_with_gold",
789 wherein = "default:stone",
790 clust_scarcity = 13 * 13 * 13,
799 minetest.register_ore({
800 ore_type = "scatter",
801 ore = "default:stone_with_mese",
802 wherein = "default:stone",
803 clust_scarcity = 14 * 14 * 14,
810 minetest.register_ore({
811 ore_type = "scatter",
812 ore = "default:stone_with_mese",
813 wherein = "default:stone",
814 clust_scarcity = 18 * 18 * 18,
821 minetest.register_ore({
822 ore_type = "scatter",
823 ore = "default:stone_with_mese",
824 wherein = "default:stone",
825 clust_scarcity = 14 * 14 * 14,
834 minetest.register_ore({
835 ore_type = "scatter",
836 ore = "default:stone_with_diamond",
837 wherein = "default:stone",
838 clust_scarcity = 15 * 15 * 15,
845 minetest.register_ore({
846 ore_type = "scatter",
847 ore = "default:stone_with_diamond",
848 wherein = "default:stone",
849 clust_scarcity = 17 * 17 * 17,
856 minetest.register_ore({
857 ore_type = "scatter",
858 ore = "default:stone_with_diamond",
859 wherein = "default:stone",
860 clust_scarcity = 15 * 15 * 15,
869 minetest.register_ore({
870 ore_type = "scatter",
871 ore = "default:mese",
872 wherein = "default:stone",
873 clust_scarcity = 36 * 36 * 36,
880 minetest.register_ore({
881 ore_type = "scatter",
882 ore = "default:mese",
883 wherein = "default:stone",
884 clust_scarcity = 36 * 36 * 36,
891 minetest.register_ore({
892 ore_type = "scatter",
893 ore = "default:mese",
894 wherein = "default:stone",
895 clust_scarcity = 28 * 28 * 28,
908 -- All mapgens except mgv6
910 function default.register_biomes(upper_limit)
914 minetest.register_biome({
916 node_dust = "default:snowblock",
917 node_top = "default:snowblock",
919 node_filler = "default:snowblock",
921 node_stone = "default:cave_ice",
922 node_water_top = "default:ice",
923 depth_water_top = 10,
924 node_river_water = "default:ice",
925 node_riverbed = "default:gravel",
933 minetest.register_biome({
934 name = "icesheet_ocean",
935 node_dust = "default:snowblock",
936 node_top = "default:sand",
938 node_filler = "default:sand",
940 node_water_top = "default:ice",
941 depth_water_top = 10,
950 minetest.register_biome({
951 name = "tundra_highland",
952 node_dust = "default:snow",
953 node_riverbed = "default:gravel",
961 minetest.register_biome({
963 node_top = "default:permafrost_with_stones",
965 node_filler = "default:permafrost",
967 node_riverbed = "default:gravel",
976 minetest.register_biome({
977 name = "tundra_beach",
978 node_top = "default:gravel",
980 node_filler = "default:gravel",
982 node_riverbed = "default:gravel",
991 minetest.register_biome({
992 name = "tundra_ocean",
993 node_top = "default:sand",
995 node_filler = "default:sand",
997 node_riverbed = "default:gravel",
1003 humidity_point = 40,
1008 minetest.register_biome({
1010 node_dust = "default:snow",
1011 node_top = "default:dirt_with_snow",
1013 node_filler = "default:dirt",
1015 node_riverbed = "default:sand",
1017 y_max = upper_limit,
1020 humidity_point = 70,
1023 minetest.register_biome({
1024 name = "taiga_ocean",
1025 node_dust = "default:snow",
1026 node_top = "default:sand",
1028 node_filler = "default:sand",
1030 node_riverbed = "default:sand",
1036 humidity_point = 70,
1041 minetest.register_biome({
1042 name = "snowy_grassland",
1043 node_dust = "default:snow",
1044 node_top = "default:dirt_with_snow",
1046 node_filler = "default:dirt",
1048 node_riverbed = "default:sand",
1050 y_max = upper_limit,
1053 humidity_point = 35,
1056 minetest.register_biome({
1057 name = "snowy_grassland_ocean",
1058 node_dust = "default:snow",
1059 node_top = "default:sand",
1061 node_filler = "default:sand",
1063 node_riverbed = "default:sand",
1069 humidity_point = 35,
1074 minetest.register_biome({
1076 node_top = "default:dirt_with_grass",
1078 node_filler = "default:dirt",
1080 node_riverbed = "default:sand",
1082 y_max = upper_limit,
1085 humidity_point = 35,
1088 minetest.register_biome({
1089 name = "grassland_dunes",
1090 node_top = "default:sand",
1092 node_filler = "default:sand",
1094 node_riverbed = "default:sand",
1100 humidity_point = 35,
1103 minetest.register_biome({
1104 name = "grassland_ocean",
1105 node_top = "default:sand",
1107 node_filler = "default:sand",
1109 node_riverbed = "default:sand",
1114 humidity_point = 35,
1117 -- Coniferous forest
1119 minetest.register_biome({
1120 name = "coniferous_forest",
1121 node_top = "default:dirt_with_coniferous_litter",
1123 node_filler = "default:dirt",
1125 node_riverbed = "default:sand",
1127 y_max = upper_limit,
1130 humidity_point = 70,
1133 minetest.register_biome({
1134 name = "coniferous_forest_dunes",
1135 node_top = "default:sand",
1137 node_filler = "default:sand",
1139 node_riverbed = "default:sand",
1145 humidity_point = 70,
1148 minetest.register_biome({
1149 name = "coniferous_forest_ocean",
1150 node_top = "default:sand",
1152 node_filler = "default:sand",
1154 node_riverbed = "default:sand",
1159 humidity_point = 70,
1164 minetest.register_biome({
1165 name = "deciduous_forest",
1166 node_top = "default:dirt_with_grass",
1168 node_filler = "default:dirt",
1170 node_riverbed = "default:sand",
1172 y_max = upper_limit,
1175 humidity_point = 68,
1178 minetest.register_biome({
1179 name = "deciduous_forest_shore",
1180 node_top = "default:dirt",
1182 node_filler = "default:dirt",
1184 node_riverbed = "default:sand",
1189 humidity_point = 68,
1192 minetest.register_biome({
1193 name = "deciduous_forest_ocean",
1194 node_top = "default:sand",
1196 node_filler = "default:sand",
1198 node_riverbed = "default:sand",
1204 humidity_point = 68,
1209 minetest.register_biome({
1211 node_top = "default:desert_sand",
1213 node_filler = "default:desert_sand",
1215 node_stone = "default:desert_stone",
1216 node_riverbed = "default:sand",
1218 y_max = upper_limit,
1221 humidity_point = 16,
1224 minetest.register_biome({
1225 name = "desert_ocean",
1226 node_top = "default:sand",
1228 node_filler = "default:sand",
1230 node_stone = "default:desert_stone",
1231 node_riverbed = "default:sand",
1237 humidity_point = 16,
1242 minetest.register_biome({
1243 name = "sandstone_desert",
1244 node_top = "default:sand",
1246 node_filler = "default:sand",
1248 node_stone = "default:sandstone",
1249 node_riverbed = "default:sand",
1251 y_max = upper_limit,
1257 minetest.register_biome({
1258 name = "sandstone_desert_ocean",
1259 node_top = "default:sand",
1261 node_filler = "default:sand",
1263 node_stone = "default:sandstone",
1264 node_riverbed = "default:sand",
1274 minetest.register_biome({
1275 name = "cold_desert",
1276 node_top = "default:silver_sand",
1278 node_filler = "default:silver_sand",
1280 node_riverbed = "default:sand",
1282 y_max = upper_limit,
1288 minetest.register_biome({
1289 name = "cold_desert_ocean",
1290 node_top = "default:sand",
1292 node_filler = "default:sand",
1294 node_riverbed = "default:sand",
1305 minetest.register_biome({
1307 node_top = "default:dirt_with_dry_grass",
1309 node_filler = "default:dirt",
1311 node_riverbed = "default:sand",
1313 y_max = upper_limit,
1316 humidity_point = 42,
1319 minetest.register_biome({
1320 name = "savanna_shore",
1321 node_top = "default:dirt",
1323 node_filler = "default:dirt",
1325 node_riverbed = "default:sand",
1330 humidity_point = 42,
1333 minetest.register_biome({
1334 name = "savanna_ocean",
1335 node_top = "default:sand",
1337 node_filler = "default:sand",
1339 node_riverbed = "default:sand",
1345 humidity_point = 42,
1350 minetest.register_biome({
1351 name = "rainforest",
1352 node_top = "default:dirt_with_rainforest_litter",
1354 node_filler = "default:dirt",
1356 node_riverbed = "default:sand",
1358 y_max = upper_limit,
1361 humidity_point = 65,
1364 minetest.register_biome({
1365 name = "rainforest_swamp",
1366 node_top = "default:dirt",
1368 node_filler = "default:dirt",
1370 node_riverbed = "default:sand",
1375 humidity_point = 65,
1378 minetest.register_biome({
1379 name = "rainforest_ocean",
1380 node_top = "default:sand",
1382 node_filler = "default:sand",
1384 node_riverbed = "default:sand",
1390 humidity_point = 65,
1395 minetest.register_biome({
1396 name = "underground",
1400 humidity_point = 50,
1405 -- Biomes for floatlands
1407 -- TODO Temporary simple biomes to be replaced by special floatland biomes later.
1409 function default.register_floatland_biomes(floatland_level, shadow_limit)
1411 minetest.register_biome({
1412 name = "floatland_grassland",
1413 node_top = "default:dirt_with_grass",
1415 node_filler = "default:dirt",
1418 y_min = floatland_level + 2,
1420 humidity_point = 25,
1423 minetest.register_biome({
1424 name = "floatland_coniferous_forest",
1425 node_top = "default:dirt_with_coniferous_litter",
1427 node_filler = "default:dirt",
1430 y_min = floatland_level + 2,
1432 humidity_point = 75,
1435 minetest.register_biome({
1436 name = "floatland_ocean",
1437 node_top = "default:sand",
1439 node_filler = "default:sand",
1441 y_max = floatland_level + 1,
1442 y_min = shadow_limit,
1444 humidity_point = 50,
1450 -- Register decorations
1455 function default.register_mgv6_decorations()
1459 minetest.register_decoration({
1460 name = "default:papyrus",
1461 deco_type = "simple",
1462 place_on = {"default:dirt_with_grass"},
1467 spread = {x = 100, y = 100, z = 100},
1474 decoration = "default:papyrus",
1477 spawn_by = "default:water_source",
1483 minetest.register_decoration({
1484 name = "default:cactus",
1485 deco_type = "simple",
1486 place_on = {"default:desert_sand"},
1491 spread = {x = 100, y = 100, z = 100},
1498 decoration = "default:cactus",
1505 for length = 1, 5 do
1506 minetest.register_decoration({
1507 name = "default:grass_"..length,
1508 deco_type = "simple",
1509 place_on = {"default:dirt_with_grass"},
1514 spread = {x = 100, y = 100, z = 100},
1521 decoration = "default:grass_"..length,
1527 minetest.register_decoration({
1528 name = "default:dry_shrub",
1529 deco_type = "simple",
1530 place_on = {"default:desert_sand", "default:dirt_with_snow"},
1535 spread = {x = 100, y = 100, z = 100},
1542 decoration = "default:dry_shrub",
1548 -- All mapgens except mgv6
1550 local function register_grass_decoration(offset, scale, length)
1551 minetest.register_decoration({
1552 name = "default:grass_" .. length,
1553 deco_type = "simple",
1554 place_on = {"default:dirt_with_grass"},
1559 spread = {x = 200, y = 200, z = 200},
1564 biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
1567 decoration = "default:grass_" .. length,
1571 local function register_dry_grass_decoration(offset, scale, length)
1572 minetest.register_decoration({
1573 name = "default:dry_grass_" .. length,
1574 deco_type = "simple",
1575 place_on = {"default:dirt_with_dry_grass"},
1580 spread = {x = 200, y = 200, z = 200},
1585 biomes = {"savanna"},
1588 decoration = "default:dry_grass_" .. length,
1592 local function register_fern_decoration(seed, length)
1593 minetest.register_decoration({
1594 name = "default:fern_" .. length,
1595 deco_type = "simple",
1596 place_on = {"default:dirt_with_coniferous_litter"},
1601 spread = {x = 100, y = 100, z = 100},
1606 biomes = {"coniferous_forest", "floatland_coniferous_forest"},
1609 decoration = "default:fern_" .. length,
1614 function default.register_decorations()
1616 -- Apple tree and log
1618 minetest.register_decoration({
1619 name = "default:apple_tree",
1620 deco_type = "schematic",
1621 place_on = {"default:dirt_with_grass"},
1626 spread = {x = 250, y = 250, z = 250},
1631 biomes = {"deciduous_forest"},
1634 schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts",
1635 flags = "place_center_x, place_center_z",
1636 rotation = "random",
1639 minetest.register_decoration({
1640 name = "default:apple_log",
1641 deco_type = "schematic",
1642 place_on = {"default:dirt_with_grass"},
1648 spread = {x = 250, y = 250, z = 250},
1653 biomes = {"deciduous_forest"},
1656 schematic = minetest.get_modpath("default") .. "/schematics/apple_log.mts",
1657 flags = "place_center_x",
1658 rotation = "random",
1659 spawn_by = "default:dirt_with_grass",
1663 -- Emergent jungle tree
1664 -- Due to 32 node height, altitude is limited and prescence depends on chunksize
1666 local chunksize = tonumber(minetest.get_mapgen_setting("chunksize"))
1667 if chunksize >= 5 then
1668 minetest.register_decoration({
1669 name = "default:emergent_jungle_tree",
1670 deco_type = "schematic",
1671 place_on = {"default:dirt_with_rainforest_litter"},
1676 spread = {x = 250, y = 250, z = 250},
1681 biomes = {"rainforest"},
1684 schematic = minetest.get_modpath("default") ..
1685 "/schematics/emergent_jungle_tree.mts",
1686 flags = "place_center_x, place_center_z",
1687 rotation = "random",
1688 place_offset_y = -4,
1692 -- Jungle tree and log
1694 minetest.register_decoration({
1695 name = "default:jungle_tree",
1696 deco_type = "schematic",
1697 place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
1700 biomes = {"rainforest", "rainforest_swamp"},
1703 schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
1704 flags = "place_center_x, place_center_z",
1705 rotation = "random",
1708 minetest.register_decoration({
1709 name = "default:jungle_log",
1710 deco_type = "schematic",
1711 place_on = {"default:dirt_with_rainforest_litter"},
1715 biomes = {"rainforest", "rainforest_swamp"},
1718 schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
1719 flags = "place_center_x",
1720 rotation = "random",
1721 spawn_by = "default:dirt_with_rainforest_litter",
1725 -- Taiga and temperate coniferous forest pine tree, small pine tree and log
1727 minetest.register_decoration({
1728 name = "default:pine_tree",
1729 deco_type = "schematic",
1730 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1735 spread = {x = 250, y = 250, z = 250},
1740 biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
1743 schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
1744 flags = "place_center_x, place_center_z",
1747 minetest.register_decoration({
1748 name = "default:small_pine_tree",
1749 deco_type = "schematic",
1750 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1755 spread = {x = 250, y = 250, z = 250},
1760 biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
1763 schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
1764 flags = "place_center_x, place_center_z",
1767 minetest.register_decoration({
1768 name = "default:pine_log",
1769 deco_type = "schematic",
1770 place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1773 fill_ratio = 0.0018,
1774 biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
1777 schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
1778 flags = "place_center_x",
1779 rotation = "random",
1780 spawn_by = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
1784 -- Acacia tree and log
1786 minetest.register_decoration({
1787 name = "default:acacia_tree",
1788 deco_type = "schematic",
1789 place_on = {"default:dirt_with_dry_grass"},
1794 spread = {x = 250, y = 250, z = 250},
1799 biomes = {"savanna"},
1802 schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts",
1803 flags = "place_center_x, place_center_z",
1804 rotation = "random",
1807 minetest.register_decoration({
1808 name = "default:acacia_log",
1809 deco_type = "schematic",
1810 place_on = {"default:dirt_with_dry_grass"},
1816 spread = {x = 250, y = 250, z = 250},
1821 biomes = {"savanna"},
1824 schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts",
1825 flags = "place_center_x",
1826 rotation = "random",
1827 spawn_by = "default:dirt_with_dry_grass",
1831 -- Aspen tree and log
1833 minetest.register_decoration({
1834 name = "default:aspen_tree",
1835 deco_type = "schematic",
1836 place_on = {"default:dirt_with_grass"},
1841 spread = {x = 250, y = 250, z = 250},
1846 biomes = {"deciduous_forest"},
1849 schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts",
1850 flags = "place_center_x, place_center_z",
1853 minetest.register_decoration({
1854 name = "default:aspen_log",
1855 deco_type = "schematic",
1856 place_on = {"default:dirt_with_grass"},
1862 spread = {x = 250, y = 250, z = 250},
1867 biomes = {"deciduous_forest"},
1870 schematic = minetest.get_modpath("default") .. "/schematics/aspen_log.mts",
1871 flags = "place_center_x",
1872 rotation = "random",
1873 spawn_by = "default:dirt_with_grass",
1879 minetest.register_decoration({
1880 name = "default:large_cactus",
1881 deco_type = "schematic",
1882 place_on = {"default:desert_sand"},
1887 spread = {x = 200, y = 200, z = 200},
1892 biomes = {"desert"},
1895 schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts",
1896 flags = "place_center_x",
1897 rotation = "random",
1902 minetest.register_decoration({
1903 name = "default:cactus",
1904 deco_type = "simple",
1905 place_on = {"default:desert_sand"},
1910 spread = {x = 200, y = 200, z = 200},
1915 biomes = {"desert"},
1918 decoration = "default:cactus",
1925 minetest.register_decoration({
1926 name = "default:papyrus",
1927 deco_type = "schematic",
1928 place_on = {"default:dirt"},
1933 spread = {x = 200, y = 200, z = 200},
1938 biomes = {"savanna_shore"},
1941 schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
1946 minetest.register_decoration({
1947 name = "default:bush",
1948 deco_type = "schematic",
1949 place_on = {"default:dirt_with_grass"},
1954 spread = {x = 100, y = 100, z = 100},
1959 biomes = {"grassland", "deciduous_forest",
1960 "floatland_grassland"},
1963 schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
1964 flags = "place_center_x, place_center_z",
1969 minetest.register_decoration({
1970 name = "default:blueberry_bush",
1971 deco_type = "schematic",
1972 place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
1977 spread = {x = 100, y = 100, z = 100},
1982 biomes = {"grassland", "snowy_grassland"},
1986 schematic = minetest.get_modpath("default") .. "/schematics/blueberry_bush.mts",
1987 flags = "place_center_x, place_center_z",
1992 minetest.register_decoration({
1993 name = "default:acacia_bush",
1994 deco_type = "schematic",
1995 place_on = {"default:dirt_with_dry_grass"},
2000 spread = {x = 100, y = 100, z = 100},
2005 biomes = {"savanna"},
2008 schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts",
2009 flags = "place_center_x, place_center_z",
2014 minetest.register_decoration({
2015 name = "default:pine_bush",
2016 deco_type = "schematic",
2017 place_on = {"default:dirt_with_snow"},
2022 spread = {x = 100, y = 100, z = 100},
2027 biomes = {"taiga", "snowy_grassland"},
2030 schematic = minetest.get_modpath("default") .. "/schematics/pine_bush.mts",
2031 flags = "place_center_x, place_center_z",
2036 register_grass_decoration(-0.03, 0.09, 5)
2037 register_grass_decoration(-0.015, 0.075, 4)
2038 register_grass_decoration(0, 0.06, 3)
2039 register_grass_decoration(0.015, 0.045, 2)
2040 register_grass_decoration(0.03, 0.03, 1)
2044 register_dry_grass_decoration(0.01, 0.05, 5)
2045 register_dry_grass_decoration(0.03, 0.03, 4)
2046 register_dry_grass_decoration(0.05, 0.01, 3)
2047 register_dry_grass_decoration(0.07, -0.01, 2)
2048 register_dry_grass_decoration(0.09, -0.03, 1)
2052 register_fern_decoration(14936, 3)
2053 register_fern_decoration(801, 2)
2054 register_fern_decoration(5, 1)
2058 minetest.register_decoration({
2059 name = "default:junglegrass",
2060 deco_type = "simple",
2061 place_on = {"default:dirt_with_rainforest_litter"},
2064 biomes = {"rainforest"},
2067 decoration = "default:junglegrass",
2072 minetest.register_decoration({
2073 name = "default:dry_shrub",
2074 deco_type = "simple",
2075 place_on = {"default:desert_sand",
2076 "default:sand", "default:silver_sand"},
2081 spread = {x = 200, y = 200, z = 200},
2086 biomes = {"desert", "sandstone_desert", "cold_desert"},
2089 decoration = "default:dry_shrub",
2095 minetest.register_decoration({
2096 name = "default:marram_grass",
2097 deco_type = "simple",
2098 place_on = {"default:sand"},
2103 spread = {x = 16, y = 16, z = 16},
2109 biomes = {"coniferous_forest_dunes", "grassland_dunes"},
2113 "default:marram_grass_1",
2114 "default:marram_grass_2",
2115 "default:marram_grass_3",
2121 minetest.register_decoration({
2122 deco_type = "simple",
2123 place_on = {"default:permafrost_with_stones"},
2128 spread = {x = 100, y = 100, z = 100},
2133 biomes = {"tundra"},
2136 decoration = "default:permafrost_with_moss",
2137 place_offset_y = -1,
2138 flags = "force_placement",
2141 -- Tundra patchy snow
2143 minetest.register_decoration({
2144 deco_type = "simple",
2146 "default:permafrost_with_moss",
2147 "default:permafrost_with_stones",
2155 spread = {x = 100, y = 100, z = 100},
2160 biomes = {"tundra", "tundra_beach"},
2163 decoration = "default:snow",
2168 minetest.register_decoration({
2169 name = "default:corals",
2170 deco_type = "schematic",
2171 place_on = {"default:sand"},
2175 spread = {x = 100, y = 100, z = 100},
2187 schematic = minetest.get_modpath("default") .. "/schematics/corals.mts",
2188 flags = "place_center_x, place_center_z",
2189 rotation = "random",
2194 minetest.register_decoration({
2195 name = "default:kelp",
2196 deco_type = "simple",
2197 place_on = {"default:sand"},
2198 place_offset_y = -1,
2203 spread = {x = 200, y = 200, z = 200},
2210 "snowy_grassland_ocean",
2212 "coniferous_forest_ocean",
2213 "deciduous_forest_ocean",
2214 "sandstone_desert_ocean",
2215 "cold_desert_ocean"},
2218 flags = "force_placement",
2219 decoration = "default:sand_with_kelp",
2227 -- Detect mapgen, flags and parameters to select functions
2230 -- Get setting or default
2231 local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or
2232 "mountains, ridges, nofloatlands, caverns"
2233 local captures_float = string.match(mgv7_spflags, "floatlands")
2234 local captures_nofloat = string.match(mgv7_spflags, "nofloatlands")
2236 -- Get setting or default
2237 -- Make global for mods to use to register floatland biomes
2238 default.mgv7_floatland_level =
2239 minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
2240 default.mgv7_shadow_limit =
2241 minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
2243 minetest.clear_registered_biomes()
2244 minetest.clear_registered_ores()
2245 minetest.clear_registered_decorations()
2247 local mg_name = minetest.get_mapgen_setting("mg_name")
2249 if mg_name == "v6" then
2250 default.register_mgv6_ores()
2251 default.register_mgv6_decorations()
2252 -- Need to check for 'nofloatlands' because that contains
2253 -- 'floatlands' which makes the second condition true.
2254 elseif mg_name == "v7" and
2255 captures_float == "floatlands" and
2256 captures_nofloat ~= "nofloatlands" then
2257 -- Mgv7 with floatlands and floatland biomes
2258 default.register_biomes(default.mgv7_shadow_limit - 1)
2259 default.register_floatland_biomes(
2260 default.mgv7_floatland_level, default.mgv7_shadow_limit)
2261 default.register_ores()
2262 default.register_decorations()
2264 default.register_biomes(31000)
2265 default.register_ores()
2266 default.register_decorations()