2 -- Aliases for map generator outputs
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_sandstonebrick", "default:sandstonebrick")
38 minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebrick")
45 function default.register_ores()
47 -- These first to avoid other ores in blobs
50 -- This first to avoid clay in sand blobs
52 minetest.register_ore({
55 wherein = {"default:sand"},
56 clust_scarcity = 16 * 16 * 16,
60 noise_threshold = 0.0,
64 spread = {x = 5, y = 5, z = 5},
73 minetest.register_ore({
76 wherein = {"default:stone", "default:sandstone",
77 "default:desert_stone"},
78 clust_scarcity = 16 * 16 * 16,
82 noise_threshold = 0.0,
86 spread = {x = 5, y = 5, z = 5},
95 minetest.register_ore({
98 wherein = {"default:stone"},
99 clust_scarcity = 16 * 16 * 16,
103 noise_threshold = 0.0,
107 spread = {x = 5, y = 5, z = 5},
116 minetest.register_ore({
118 ore = "default:gravel",
119 wherein = {"default:stone"},
120 clust_scarcity = 16 * 16 * 16,
124 noise_threshold = 0.0,
128 spread = {x = 5, y = 5, z = 5},
139 minetest.register_ore({
140 ore_type = "scatter",
141 ore = "default:stone_with_coal",
142 wherein = "default:stone",
143 clust_scarcity = 8 * 8 * 8,
150 minetest.register_ore({
151 ore_type = "scatter",
152 ore = "default:stone_with_coal",
153 wherein = "default:stone",
154 clust_scarcity = 8 * 8 * 8,
161 minetest.register_ore({
162 ore_type = "scatter",
163 ore = "default:stone_with_coal",
164 wherein = "default:stone",
165 clust_scarcity = 24 * 24 * 24,
174 minetest.register_ore({
175 ore_type = "scatter",
176 ore = "default:stone_with_iron",
177 wherein = "default:stone",
178 clust_scarcity = 9 * 9 * 9,
185 minetest.register_ore({
186 ore_type = "scatter",
187 ore = "default:stone_with_iron",
188 wherein = "default:stone",
189 clust_scarcity = 7 * 7 * 7,
196 minetest.register_ore({
197 ore_type = "scatter",
198 ore = "default:stone_with_iron",
199 wherein = "default:stone",
200 clust_scarcity = 24 * 24 * 24,
209 minetest.register_ore({
210 ore_type = "scatter",
211 ore = "default:stone_with_copper",
212 wherein = "default:stone",
213 clust_scarcity = 9 * 9 * 9,
220 minetest.register_ore({
221 ore_type = "scatter",
222 ore = "default:stone_with_copper",
223 wherein = "default:stone",
224 clust_scarcity = 12 * 12 * 12,
231 minetest.register_ore({
232 ore_type = "scatter",
233 ore = "default:stone_with_copper",
234 wherein = "default:stone",
235 clust_scarcity = 9 * 9 * 9,
244 minetest.register_ore({
245 ore_type = "scatter",
246 ore = "default:stone_with_gold",
247 wherein = "default:stone",
248 clust_scarcity = 13 * 13 * 13,
255 minetest.register_ore({
256 ore_type = "scatter",
257 ore = "default:stone_with_gold",
258 wherein = "default:stone",
259 clust_scarcity = 15 * 15 * 15,
266 minetest.register_ore({
267 ore_type = "scatter",
268 ore = "default:stone_with_gold",
269 wherein = "default:stone",
270 clust_scarcity = 13 * 13 * 13,
279 minetest.register_ore({
280 ore_type = "scatter",
281 ore = "default:stone_with_mese",
282 wherein = "default:stone",
283 clust_scarcity = 14 * 14 * 14,
290 minetest.register_ore({
291 ore_type = "scatter",
292 ore = "default:stone_with_mese",
293 wherein = "default:stone",
294 clust_scarcity = 18 * 18 * 18,
301 minetest.register_ore({
302 ore_type = "scatter",
303 ore = "default:stone_with_mese",
304 wherein = "default:stone",
305 clust_scarcity = 14 * 14 * 14,
314 minetest.register_ore({
315 ore_type = "scatter",
316 ore = "default:stone_with_diamond",
317 wherein = "default:stone",
318 clust_scarcity = 15 * 15 * 15,
325 minetest.register_ore({
326 ore_type = "scatter",
327 ore = "default:stone_with_diamond",
328 wherein = "default:stone",
329 clust_scarcity = 17 * 17 * 17,
336 minetest.register_ore({
337 ore_type = "scatter",
338 ore = "default:stone_with_diamond",
339 wherein = "default:stone",
340 clust_scarcity = 15 * 15 * 15,
349 minetest.register_ore({
350 ore_type = "scatter",
351 ore = "default:mese",
352 wherein = "default:stone",
353 clust_scarcity = 36 * 36 * 36,
360 minetest.register_ore({
361 ore_type = "scatter",
362 ore = "default:mese",
363 wherein = "default:stone",
364 clust_scarcity = 36 * 36 * 36,
377 -- All mapgens except mgv6 and singlenode
379 function default.register_biomes()
380 minetest.clear_registered_biomes()
384 minetest.register_biome({
386 node_dust = "default:snowblock",
387 node_top = "default:snowblock",
389 node_filler = "default:snowblock",
391 node_stone = "default:ice",
392 node_water_top = "default:ice",
393 depth_water_top = 10,
395 node_river_water = "default:ice",
396 node_riverbed = "default:gravel",
404 minetest.register_biome({
405 name = "glacier_ocean",
406 node_dust = "default:snowblock",
407 node_top = "default:sand",
409 node_filler = "default:sand",
412 --node_water_top = "",
413 --depth_water_top = ,
415 --node_river_water = "",
424 minetest.register_biome({
427 node_top = "default:dirt_with_snow",
429 node_filler = "default:dirt",
432 --node_water_top = "",
433 --depth_water_top = ,
435 --node_river_water = "",
436 node_riverbed = "default:gravel",
444 minetest.register_biome({
445 name = "tundra_beach",
447 node_top = "default:gravel",
449 node_filler = "default:gravel",
452 --node_water_top = "",
453 --depth_water_top = ,
455 --node_river_water = "",
456 node_riverbed = "default:gravel",
464 minetest.register_biome({
465 name = "tundra_ocean",
467 node_top = "default:sand",
469 node_filler = "default:sand",
472 --node_water_top = "",
473 --depth_water_top = ,
475 --node_river_water = "",
476 node_riverbed = "default:gravel",
485 minetest.register_biome({
487 node_dust = "default:snow",
488 node_top = "default:dirt_with_snow",
490 node_filler = "default:dirt",
493 --node_water_top = "",
494 --depth_water_top = ,
496 --node_river_water = "",
497 node_riverbed = "default:sand",
505 minetest.register_biome({
506 name = "taiga_ocean",
508 node_top = "default:sand",
510 node_filler = "default:sand",
513 --node_water_top = "",
514 --depth_water_top = ,
516 --node_river_water = "",
517 node_riverbed = "default:sand",
527 minetest.register_biome({
528 name = "stone_grassland",
530 node_top = "default:dirt_with_grass",
532 node_filler = "default:dirt",
535 --node_water_top = "",
536 --depth_water_top = ,
538 --node_river_water = "",
539 node_riverbed = "default:sand",
547 minetest.register_biome({
548 name = "stone_grassland_dunes",
550 node_top = "default:sand",
552 node_filler = "default:sand",
555 --node_water_top = "",
556 --depth_water_top = ,
558 --node_river_water = "",
559 node_riverbed = "default:sand",
567 minetest.register_biome({
568 name = "stone_grassland_ocean",
570 node_top = "default:sand",
572 node_filler = "default:sand",
575 --node_water_top = "",
576 --depth_water_top = ,
578 --node_river_water = "",
579 node_riverbed = "default:sand",
588 minetest.register_biome({
589 name = "coniferous_forest",
591 node_top = "default:dirt_with_grass",
593 node_filler = "default:dirt",
596 --node_water_top = "",
597 --depth_water_top = ,
599 --node_river_water = "",
600 node_riverbed = "default:sand",
608 minetest.register_biome({
609 name = "coniferous_forest_dunes",
611 node_top = "default:sand",
613 node_filler = "default:sand",
616 --node_water_top = "",
617 --depth_water_top = ,
619 --node_river_water = "",
620 node_riverbed = "default:sand",
628 minetest.register_biome({
629 name = "coniferous_forest_ocean",
631 node_top = "default:sand",
633 node_filler = "default:sand",
636 --node_water_top = "",
637 --depth_water_top = ,
639 --node_river_water = "",
640 node_riverbed = "default:sand",
649 minetest.register_biome({
650 name = "sandstone_grassland",
652 node_top = "default:dirt_with_grass",
654 node_filler = "default:dirt",
656 node_stone = "default:sandstone",
657 --node_water_top = "",
658 --depth_water_top = ,
660 --node_river_water = "",
661 node_riverbed = "default:sand",
669 minetest.register_biome({
670 name = "sandstone_grassland_dunes",
672 node_top = "default:sand",
674 node_filler = "default:sand",
676 node_stone = "default:sandstone",
677 --node_water_top = "",
678 --depth_water_top = ,
680 --node_river_water = "",
681 node_riverbed = "default:sand",
689 minetest.register_biome({
690 name = "sandstone_grassland_ocean",
692 node_top = "default:sand",
694 node_filler = "default:sand",
696 node_stone = "default:sandstone",
697 --node_water_top = "",
698 --depth_water_top = ,
700 --node_river_water = "",
701 node_riverbed = "default:sand",
710 minetest.register_biome({
711 name = "deciduous_forest",
713 node_top = "default:dirt_with_grass",
715 node_filler = "default:dirt",
718 --node_water_top = "",
719 --depth_water_top = ,
721 --node_river_water = "",
722 node_riverbed = "default:sand",
730 minetest.register_biome({
731 name = "deciduous_forest_swamp",
733 node_top = "default:dirt",
735 node_filler = "default:dirt",
738 --node_water_top = "",
739 --depth_water_top = ,
741 --node_river_water = "",
742 node_riverbed = "default:sand",
750 minetest.register_biome({
751 name = "deciduous_forest_ocean",
753 node_top = "default:sand",
755 node_filler = "default:sand",
758 --node_water_top = "",
759 --depth_water_top = ,
761 --node_river_water = "",
762 node_riverbed = "default:sand",
772 minetest.register_biome({
775 node_top = "default:desert_sand",
777 node_filler = "default:desert_sand",
779 node_stone = "default:desert_stone",
780 --node_water_top = "",
781 --depth_water_top = ,
783 --node_river_water = "",
784 node_riverbed = "default:sand",
792 minetest.register_biome({
793 name = "desert_ocean",
795 node_top = "default:sand",
797 node_filler = "default:sand",
799 node_stone = "default:desert_stone",
800 --node_water_top = "",
801 --depth_water_top = ,
803 --node_river_water = "",
804 node_riverbed = "default:sand",
813 minetest.register_biome({
816 node_top = "default:dirt_with_dry_grass",
818 node_filler = "default:dirt",
821 --node_water_top = "",
822 --depth_water_top = ,
824 --node_river_water = "",
825 node_riverbed = "default:sand",
833 minetest.register_biome({
834 name = "savanna_swamp",
836 node_top = "default:dirt",
838 node_filler = "default:dirt",
841 --node_water_top = "",
842 --depth_water_top = ,
844 --node_river_water = "",
845 node_riverbed = "default:sand",
853 minetest.register_biome({
854 name = "savanna_ocean",
856 node_top = "default:sand",
858 node_filler = "default:sand",
861 --node_water_top = "",
862 --depth_water_top = ,
864 --node_river_water = "",
865 node_riverbed = "default:sand",
874 minetest.register_biome({
877 node_top = "default:dirt_with_grass",
879 node_filler = "default:dirt",
882 --node_water_top = "",
883 --depth_water_top = ,
885 --node_river_water = "",
886 node_riverbed = "default:sand",
894 minetest.register_biome({
895 name = "rainforest_swamp",
897 node_top = "default:dirt",
899 node_filler = "default:dirt",
902 --node_water_top = "",
903 --depth_water_top = ,
905 --node_river_water = "",
906 node_riverbed = "default:sand",
914 minetest.register_biome({
915 name = "rainforest_ocean",
917 node_top = "default:sand",
919 node_filler = "default:sand",
922 --node_water_top = "",
923 --depth_water_top = ,
925 --node_river_water = "",
926 node_riverbed = "default:sand",
936 minetest.register_biome({
937 name = "underground",
944 --node_water_top = "",
945 --depth_water_top = ,
947 --node_river_water = "",
957 -- Register decorations
962 function default.register_mgv6_decorations()
963 minetest.clear_registered_decorations()
967 minetest.register_decoration({
968 deco_type = "simple",
969 place_on = {"default:dirt_with_grass"},
974 spread = {x = 100, y = 100, z = 100},
981 decoration = "default:papyrus",
984 spawn_by = "default:water_source",
990 minetest.register_decoration({
991 deco_type = "simple",
992 place_on = {"default:desert_sand"},
997 spread = {x = 100, y = 100, z = 100},
1004 decoration = "default:cactus",
1011 for length = 1, 5 do
1012 minetest.register_decoration({
1013 deco_type = "simple",
1014 place_on = {"default:dirt_with_grass"},
1019 spread = {x = 100, y = 100, z = 100},
1026 decoration = "default:grass_"..length,
1032 minetest.register_decoration({
1033 deco_type = "simple",
1034 place_on = {"default:desert_sand", "default:dirt_with_snow"},
1039 spread = {x = 100, y = 100, z = 100},
1046 decoration = "default:dry_shrub",
1050 -- All mapgens except mgv6 and singlenode
1052 local function register_grass_decoration(offset, scale, length)
1053 minetest.register_decoration({
1054 deco_type = "simple",
1055 place_on = {"default:dirt_with_grass", "default:sand"},
1060 spread = {x = 200, y = 200, z = 200},
1065 biomes = {"stone_grassland", "sandstone_grassland",
1066 "deciduous_forest", "coniferous_forest",
1067 "stone_grassland_dunes", "sandstone_grassland_dunes",
1068 "coniferous_forest_dunes"},
1071 decoration = "default:grass_"..length,
1075 local function register_dry_grass_decoration(offset, scale, length)
1076 minetest.register_decoration({
1077 deco_type = "simple",
1078 place_on = {"default:dirt_with_dry_grass"},
1083 spread = {x = 200, y = 200, z = 200},
1088 biomes = {"savanna"},
1091 decoration = "default:dry_grass_"..length,
1095 function default.register_decorations()
1096 minetest.clear_registered_decorations()
1098 -- Apple tree and log
1100 minetest.register_decoration({
1101 deco_type = "schematic",
1102 place_on = {"default:dirt_with_grass"},
1107 spread = {x = 250, y = 250, z = 250},
1112 biomes = {"deciduous_forest"},
1115 schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts",
1116 flags = "place_center_x, place_center_z",
1119 minetest.register_decoration({
1120 deco_type = "schematic",
1121 place_on = {"default:dirt_with_grass"},
1126 spread = {x = 250, y = 250, z = 250},
1131 biomes = {"deciduous_forest"},
1135 size = {x = 3, y = 3, z = 1},
1137 {name = "air", prob = 0},
1138 {name = "air", prob = 0},
1139 {name = "air", prob = 0},
1140 {name = "default:tree", param2 = 12, prob = 191},
1141 {name = "default:tree", param2 = 12},
1142 {name = "default:tree", param2 = 12, prob = 127},
1143 {name = "air", prob = 0},
1144 {name = "flowers:mushroom_brown", prob = 63},
1145 {name = "air", prob = 0},
1148 flags = "place_center_x",
1149 rotation = "random",
1152 -- Jungle tree and log
1154 minetest.register_decoration({
1155 deco_type = "schematic",
1156 place_on = {"default:dirt_with_grass", "default:dirt"},
1159 biomes = {"rainforest", "rainforest_swamp"},
1162 schematic = minetest.get_modpath("default").."/schematics/jungle_tree.mts",
1163 flags = "place_center_x, place_center_z",
1164 rotation = "random",
1167 minetest.register_decoration({
1168 deco_type = "schematic",
1169 place_on = {"default:dirt_with_grass", "default:dirt"},
1172 biomes = {"rainforest", "rainforest_swamp"},
1176 size = {x = 3, y = 3, z = 1},
1178 {name = "air", prob = 0},
1179 {name = "air", prob = 0},
1180 {name = "air", prob = 0},
1181 {name = "default:jungletree", param2 = 12, prob = 191},
1182 {name = "default:jungletree", param2 = 12},
1183 {name = "default:jungletree", param2 = 12, prob = 127},
1184 {name = "air", prob = 0},
1185 {name = "flowers:mushroom_brown", prob = 127},
1186 {name = "air", prob = 0},
1189 flags = "place_center_x",
1190 rotation = "random",
1193 -- Taiga and temperate coniferous forest pine tree and log
1195 minetest.register_decoration({
1196 deco_type = "schematic",
1197 place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
1202 spread = {x = 250, y = 250, z = 250},
1207 biomes = {"taiga", "coniferous_forest"},
1210 schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts",
1211 flags = "place_center_x, place_center_z",
1214 minetest.register_decoration({
1215 deco_type = "schematic",
1216 place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
1221 spread = {x = 250, y = 250, z = 250},
1226 biomes = {"taiga", "coniferous_forest"},
1230 size = {x = 3, y = 3, z = 1},
1232 {name = "air", prob = 0},
1233 {name = "air", prob = 0},
1234 {name = "air", prob = 0},
1235 {name = "default:pine_tree", param2 = 12, prob = 191},
1236 {name = "default:pine_tree", param2 = 12},
1237 {name = "default:pine_tree", param2 = 12, prob = 127},
1238 {name = "air", prob = 0},
1239 {name = "flowers:mushroom_red", prob = 63},
1240 {name = "air", prob = 0},
1243 flags = "place_center_x",
1244 rotation = "random",
1247 -- Acacia tree and log
1249 minetest.register_decoration({
1250 deco_type = "schematic",
1251 place_on = {"default:dirt_with_dry_grass"},
1256 spread = {x = 250, y = 250, z = 250},
1261 biomes = {"savanna"},
1264 schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts",
1265 flags = "place_center_x, place_center_z",
1266 rotation = "random",
1269 minetest.register_decoration({
1270 deco_type = "schematic",
1271 place_on = {"default:dirt_with_dry_grass"},
1276 spread = {x = 250, y = 250, z = 250},
1281 biomes = {"savanna"},
1285 size = {x = 3, y = 2, z = 1},
1287 {name = "air", prob = 0},
1288 {name = "air", prob = 0},
1289 {name = "air", prob = 0},
1290 {name = "default:acacia_tree", param2 = 12, prob = 191},
1291 {name = "default:acacia_tree", param2 = 12},
1292 {name = "default:acacia_tree", param2 = 12, prob = 127},
1295 flags = "place_center_x",
1296 rotation = "random",
1299 -- Aspen tree and log
1301 minetest.register_decoration({
1302 deco_type = "schematic",
1303 place_on = {"default:dirt_with_grass"},
1308 spread = {x = 250, y = 250, z = 250},
1313 biomes = {"deciduous_forest"},
1316 schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
1317 flags = "place_center_x, place_center_z",
1320 minetest.register_decoration({
1321 deco_type = "schematic",
1322 place_on = {"default:dirt_with_grass"},
1327 spread = {x = 250, y = 250, z = 250},
1332 biomes = {"deciduous_forest"},
1336 size = {x = 3, y = 3, z = 1},
1338 {name = "air", prob = 0},
1339 {name = "air", prob = 0},
1340 {name = "air", prob = 0},
1341 {name = "default:aspen_tree", param2 = 12},
1342 {name = "default:aspen_tree", param2 = 12},
1343 {name = "default:aspen_tree", param2 = 12, prob = 127},
1344 {name = "flowers:mushroom_red", prob = 63},
1345 {name = "flowers:mushroom_brown", prob = 63},
1346 {name = "air", prob = 0},
1349 flags = "place_center_x",
1350 rotation = "random",
1354 minetest.register_decoration({
1355 deco_type = "schematic",
1356 place_on = {"default:desert_sand"},
1361 spread = {x = 200, y = 200, z = 200},
1366 biomes = {"desert"},
1369 schematic = minetest.get_modpath("default").."/schematics/large_cactus.mts",
1370 flags = "place_center_x",
1371 rotation = "random",
1376 minetest.register_decoration({
1377 deco_type = "simple",
1378 place_on = {"default:desert_sand"},
1383 spread = {x = 200, y = 200, z = 200},
1388 biomes = {"desert"},
1391 decoration = "default:cactus",
1398 minetest.register_decoration({
1399 deco_type = "schematic",
1400 place_on = {"default:dirt"},
1405 spread = {x = 200, y = 200, z = 200},
1410 biomes = {"savanna_swamp"},
1413 schematic = minetest.get_modpath("default").."/schematics/papyrus.mts",
1418 register_grass_decoration(-0.03, 0.09, 5)
1419 register_grass_decoration(-0.015, 0.075, 4)
1420 register_grass_decoration(0, 0.06, 3)
1421 register_grass_decoration(0.015, 0.045, 2)
1422 register_grass_decoration(0.03, 0.03, 1)
1426 register_dry_grass_decoration(0.01, 0.05, 5)
1427 register_dry_grass_decoration(0.03, 0.03, 4)
1428 register_dry_grass_decoration(0.05, 0.01, 3)
1429 register_dry_grass_decoration(0.07, -0.01, 2)
1430 register_dry_grass_decoration(0.09, -0.03, 1)
1434 minetest.register_decoration({
1435 deco_type = "simple",
1436 place_on = {"default:dirt_with_grass"},
1439 biomes = {"rainforest"},
1442 decoration = "default:junglegrass",
1447 minetest.register_decoration({
1448 deco_type = "simple",
1449 place_on = {"default:desert_sand", "default:dirt_with_snow"},
1454 spread = {x = 200, y = 200, z = 200},
1459 biomes = {"desert", "tundra"},
1462 decoration = "default:dry_shrub",
1468 -- Detect mapgen to select functions
1471 local mg_name = minetest.get_mapgen_setting("mg_name")
1472 if mg_name == "v6" then
1473 default.register_ores()
1474 default.register_mgv6_decorations()
1476 default.register_biomes()
1477 default.register_ores()
1478 default.register_decorations()