1 -- mods/default/mapgen.lua
5 -- Aliases for map generator outputs
9 minetest
.register_alias("mapgen_stone", "default:stone")
10 minetest
.register_alias("mapgen_dirt", "default:sand")
11 minetest
.register_alias("mapgen_dirt_with_grass", "default:sand")
12 minetest
.register_alias("mapgen_sand", "default:sand")
13 minetest
.register_alias("mapgen_water_source", "default:lava_source")
14 minetest
.register_alias("mapgen_river_water_source", "default:lava_source")
15 minetest
.register_alias("mapgen_lava_source", "default:lava_source")
16 minetest
.register_alias("mapgen_gravel", "default:lava_source")
17 minetest
.register_alias("mapgen_desert_stone", "default:stone")
18 minetest
.register_alias("mapgen_desert_sand", "default:sand")
19 minetest
.register_alias("mapgen_dirt_with_snow", "default:sand")
20 minetest
.register_alias("mapgen_snowblock", "default:sand")
21 minetest
.register_alias("mapgen_snow", "default:sand")
22 minetest
.register_alias("mapgen_ice", "default:stone")
23 minetest
.register_alias("mapgen_sandstone", "default:tuff")
27 minetest
.register_alias("mapgen_tree", "air")
28 minetest
.register_alias("mapgen_leaves", "air")
29 minetest
.register_alias("mapgen_apple", "air")
30 minetest
.register_alias("mapgen_jungletree", "air")
31 minetest
.register_alias("mapgen_jungleleaves", "air")
32 minetest
.register_alias("mapgen_junglegrass", "air")
33 minetest
.register_alias("mapgen_pine_tree", "air")
34 minetest
.register_alias("mapgen_pine_needles", "air")
38 minetest
.register_alias("mapgen_cobble", "default:cobble")
39 minetest
.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
40 minetest
.register_alias("mapgen_mossycobble", "default:mossycobble")
41 minetest
.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
42 minetest
.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebrick")
44 minetest
.register_on_mapgen_init(function(mgparams
)
45 minetest
.set_mapgen_params({mgname
="v6", mg_flags
={"nodungeons", "notrees", "caves"}, mgv6_spflags
={"mudflow", "nosnowbiomes", "notrees", "nojungles"}, "water_level=-5"})
52 minetest
.register_ore({
54 ore
= "default:stone_with_emerald",
55 wherein
= "default:stone",
56 clust_scarcity
= 24*24*24,
63 minetest
.register_ore({
65 ore
= "default:stone_with_emerald",
66 wherein
= "default:stone",
67 clust_scarcity
=16*16*16,
75 minetest
.register_ore({
77 ore
= "default:stone_with_sapphire",
78 wherein
= "default:stone",
79 clust_scarcity
= 24*24*24,
86 minetest
.register_ore({
88 ore
= "default:stone_with_sapphire",
89 wherein
= "default:stone",
90 clust_scarcity
=16*16*16,
98 minetest
.register_ore({
100 ore
= "default:stone_with_diamond",
101 wherein
= "default:stone",
102 clust_scarcity
= 24*24*24,
109 minetest
.register_ore({
110 ore_type
= "scatter",
111 ore
= "default:stone_with_diamond",
112 wherein
= "default:stone",
113 clust_scarcity
=16*16*16,
121 minetest
.register_ore({
122 ore_type
= "scatter",
123 ore
= "default:stone_with_ruby",
124 wherein
= "default:stone",
125 clust_scarcity
= 24*24*24,
132 minetest
.register_ore({
133 ore_type
= "scatter",
134 ore
= "default:stone_with_ruby",
135 wherein
= "default:stone",
136 clust_scarcity
=16*16*16,
144 minetest
.register_ore({
145 ore_type
= "scatter",
146 ore
= "default:stone_with_coal",
147 wherein
= "default:stone",
148 clust_scarcity
= 8*8*8,
157 minetest
.register_ore({
158 ore_type
= "scatter",
159 ore
= "default:stone_with_coal",
160 wherein
= "default:stone",
161 clust_scarcity
= 12*12*12,
169 minetest
.register_ore({
170 ore_type
= "scatter",
171 ore
= "default:stone_with_coal",
172 wherein
= "default:stone",
173 clust_scarcity
= 24*24*24,
182 minetest
.register_ore({
183 ore_type
= "scatter",
184 ore
= "default:stone_with_iron",
185 wherein
= "default:stone",
186 clust_scarcity
= 12*12*12,
194 minetest
.register_ore({
195 ore_type
= "scatter",
196 ore
= "default:stone_with_iron",
197 wherein
= "default:stone",
198 clust_scarcity
= 9*9*9,
206 minetest
.register_ore({
207 ore_type
= "scatter",
208 ore
= "default:stone_with_iron",
209 wherein
= "default:stone",
210 clust_scarcity
= 7*7*7,
219 minetest
.register_ore({
220 ore_type
= "scatter",
221 ore
= "default:stone_with_iron",
222 wherein
= "default:stone",
223 clust_scarcity
= 24*24*24,
232 minetest
.register_ore({
233 ore_type
= "scatter",
234 ore
= "default:stone_with_mese",
235 wherein
= "default:stone",
236 clust_scarcity
= 18*18*18,
245 minetest
.register_ore({
246 ore_type
= "scatter",
247 ore
= "default:stone_with_mese",
248 wherein
= "default:stone",
249 clust_scarcity
= 14*14*14,
258 minetest
.register_ore({
259 ore_type
= "scatter",
260 ore
= "default:mese",
261 wherein
= "default:stone",
262 clust_scarcity
= 36*36*36,
271 minetest
.register_ore({
272 ore_type
= "scatter",
273 ore
= "default:stone_with_gold",
274 wherein
= "default:stone",
275 clust_scarcity
= 15*15*15,
283 minetest
.register_ore({
284 ore_type
= "scatter",
285 ore
= "default:stone_with_gold",
286 wherein
= "default:stone",
287 clust_scarcity
= 13*13*13,
295 minetest
.register_ore({
296 ore_type
= "scatter",
297 ore
= "default:stone_with_diamond",
298 wherein
= "default:stone",
299 clust_scarcity
= 15*15*15,
307 minetest
.register_ore({
308 ore_type
= "scatter",
309 ore
= "default:stone_with_emerald",
310 wherein
= "default:stone",
311 clust_scarcity
= 15*15*15,
319 minetest
.register_ore({
320 ore_type
= "scatter",
321 ore
= "default:stone_with_sapphire",
322 wherein
= "default:stone",
323 clust_scarcity
= 15*15*15,
331 minetest
.register_ore({
332 ore_type
= "scatter",
333 ore
= "default:stone_with_ruby",
334 wherein
= "default:stone",
335 clust_scarcity
= 15*15*15,
343 minetest
.register_ore({
344 ore_type
= "scatter",
345 ore
= "default:stone_with_copper",
346 wherein
= "default:stone",
347 clust_scarcity
= 12*12*12,
355 minetest
.register_ore({
356 ore_type
= "scatter",
357 ore
= "default:stone_with_copper",
358 wherein
= "default:stone",
359 clust_scarcity
= 9*9*9,
367 minetest
.register_ore({
368 ore_type
= "scatter",
369 ore
= "default:stone_with_copper",
370 wherein
= "default:stone",
371 clust_scarcity
= 9*9*9,
379 minetest
.register_ore({
380 ore_type
= "scatter",
381 ore
= "default:stone_with_tin",
382 wherein
= "default:stone",
383 clust_scarcity
= 12*12*12,
391 minetest
.register_ore({
392 ore_type
= "scatter",
393 ore
= "default:stone_with_tin",
394 wherein
= "default:stone",
395 clust_scarcity
= 9*9*9,
403 minetest
.register_ore({
404 ore_type
= "scatter",
405 ore
= "default:stone_with_tin",
406 wherein
= "default:stone",
407 clust_scarcity
= 9*9*9,
415 -- if minetest.setting_get("mg_name") == "indev" then
416 -- Floatlands and high mountains springs
418 minetest
.register_ore({
420 ore
= "default:lava_source",
421 wherein
= {"default:stone"},
422 clust_scarcity
= 25* 25 * 25,
426 noise_threshold
= 0.0,
430 spread
= {x
= 5, y
= 5, z
= 5},
438 minetest
.register_ore({
439 ore_type
= "scatter",
440 ore
= "default:sand",
441 wherein
= "default:stone",
442 clust_scarcity
= 20*20*20,
443 clust_num_ores
= 5*5*3,
450 minetest
.register_ore({
451 ore_type
= "scatter",
452 ore
= "default:tuff",
454 wherein
= "default:stone",
455 clust_scarcity
= 25*25*25,
456 clust_num_ores
= 10000,
462 minetest
.register_ore({
463 ore_type
= "scatter",
464 ore
= "default:chondrit",
466 wherein
= "default:stone",
467 clust_scarcity
= 10*10*10,
475 minetest
.register_ore({
476 ore_type
= "scatter",
477 ore
= "default:chondrit",
479 wherein
= "default:stone",
480 clust_scarcity
= 20*20*20,
481 clust_num_ores
= 550,
488 minetest
.register_ore({
489 ore_type
= "scatter",
490 ore
= "default:chondrit",
492 wherein
= "default:stone",
493 clust_scarcity
= 20*20*20,
494 clust_num_ores
= 650,
501 minetest
.register_ore({
502 ore_type
= "scatter",
503 ore
= "default:essexit",
505 wherein
= "default:stone",
506 clust_scarcity
= 10*10*10,
513 minetest
.register_ore({
514 ore_type
= "scatter",
515 ore
= "default:essexit",
517 wherein
= "default:stone",
518 clust_scarcity
= 10*10*10,
519 clust_num_ores
= 500,
526 minetest
.register_ore({
527 ore_type
= "scatter",
528 ore
= "default:essexit",
530 wherein
= "default:stone",
531 clust_scarcity
= 20*10*20,
532 clust_num_ores
= 950,
539 minetest
.register_ore({
540 ore_type
= "scatter",
541 ore
= "default:gravel",
543 wherein
= "default:stone",
544 clust_scarcity
= 20*5*20,
545 clust_num_ores
= 150,
551 minetest
.register_ore({
552 ore_type
= "scatter",
553 ore
= "default:gravel",
555 wherein
= "default:stone",
556 clust_scarcity
= 20*5*20,
557 clust_num_ores
= 350,
563 minetest
.register_ore({
564 ore_type
= "scatter",
565 ore
= "default:gravel",
567 wherein
= "default:stone",
568 clust_scarcity
= 20*10*20,
569 clust_num_ores
= 500,
575 -- Underground springs
576 minetest
.register_ore({
577 ore_type
= "scatter",
578 ore
= "default:water_source",
580 wherein
= "default:stone",
581 clust_scarcity
= 25*25*25,
588 minetest
.register_ore({
590 ore
= "default:lava_source",
591 wherein
= {"default:stone"},
592 clust_scarcity
= 25* 25 * 25,
596 noise_threshold
= 0.2,
600 spread
= {x
= 500, y
= 500, z
= 500},
609 minetest
.register_decoration({
610 deco_type
= "simple",
611 place_on
= {"default:stone"},
616 spread
= {x
= 5, y
= 5, z
= 5},
623 decoration
= "default:stone",
628 minetest
.register_decoration({
629 deco_type
= "simple",
630 place_on
= {"default:stone"},
635 spread
= {x
= 5, y
= 5, z
= 5},
642 decoration
= "default:sand",
645 function default
.make_papyrus(pos
, size
)
647 local p
= {x
=pos
.x
, y
=pos
.y
+y
, z
=pos
.z
}
648 local nn
= minetest
.get_node(p
).name
649 if minetest
.registered_nodes
[nn
] and
650 minetest
.registered_nodes
[nn
].buildable_to
then
651 minetest
.set_node(p
, {name
="default:papyrus"})
659 function default
.make_cactus(pos
, size
)
661 local p
= {x
=pos
.x
, y
=pos
.y
+y
, z
=pos
.z
}
662 local nn
= minetest
.get_node(p
).name
663 if minetest
.registered_nodes
[nn
] and
664 minetest
.registered_nodes
[nn
].buildable_to
then
665 minetest
.set_node(p
, {name
="default:cactus"})
673 -- facedir: 0/1/2/3 (head node facedir value)
674 -- length: length of rainbow tail
675 function default
.make_nyancat(pos
, facedir
, length
)
676 local tailvec
= {x
=0, y
=0, z
=0}
679 elseif facedir
== 1 then
681 elseif facedir
== 2 then
683 elseif facedir
== 3 then
686 --print("default.make_nyancat(): Invalid facedir: "+dump(facedir))
690 local p
= {x
=pos
.x
, y
=pos
.y
, z
=pos
.z
}
691 minetest
.set_node(p
, {name
="default:nyancat", param2
=facedir
})
693 p
.x
= p
.x
+ tailvec
.x
694 p
.z
= p
.z
+ tailvec
.z
695 minetest
.set_node(p
, {name
="default:nyancat_rainbow", param2
=facedir
})
700 function generate_nyancats(seed
, minp
, maxp
)
701 local height_min
= -31000
702 local height_max
= -32
703 if maxp
.y
< height_min
or minp
.y
> height_max
then
706 local y_min
= math
.max(minp
.y
, height_min
)
707 local y_max
= math
.min(maxp
.y
, height_max
)
708 local volume
= (maxp
.x
-minp
.x
+1)*(y_max
-y_min
+1)*(maxp
.z
-minp
.z
+1)
709 local pr
= PseudoRandom(seed
+ 9324342)
710 local max_num_nyancats
= math
.floor(volume
/ (16*16*16))
711 for i
=1,max_num_nyancats
do
712 if pr
:next(0, 1000) == 0 then
713 local x0
= pr
:next(minp
.x
, maxp
.x
)
714 local y0
= pr
:next(minp
.y
, maxp
.y
)
715 local z0
= pr
:next(minp
.z
, maxp
.z
)
716 local p0
= {x
=x0
, y
=y0
, z
=z0
}
717 default
.make_nyancat(p0
, pr
:next(0,3), pr
:next(3,15))
723 minetest
.register_on_generated(function(minp
, maxp
, seed
)
724 -- Generate nyan cats
725 generate_nyancats(seed
, minp
, maxp
)