mapgen.lua 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237
  1. --
  2. -- Aliases for map generators
  3. --
  4. minetest.register_alias("mapgen_stone", "default:stone")
  5. minetest.register_alias("mapgen_dirt", "default:dirt")
  6. minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass")
  7. minetest.register_alias("mapgen_sand", "default:sand")
  8. minetest.register_alias("mapgen_water_source", "default:water_source")
  9. minetest.register_alias("mapgen_river_water_source", "default:river_water_source")
  10. minetest.register_alias("mapgen_lava_source", "default:lava_source")
  11. minetest.register_alias("mapgen_gravel", "default:gravel")
  12. minetest.register_alias("mapgen_desert_stone", "default:desert_stone")
  13. minetest.register_alias("mapgen_desert_sand", "default:desert_sand")
  14. minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow")
  15. minetest.register_alias("mapgen_snowblock", "default:snowblock")
  16. minetest.register_alias("mapgen_snow", "default:snow")
  17. minetest.register_alias("mapgen_ice", "default:ice")
  18. minetest.register_alias("mapgen_sandstone", "default:sandstone")
  19. -- Flora
  20. minetest.register_alias("mapgen_tree", "default:tree")
  21. minetest.register_alias("mapgen_leaves", "default:leaves")
  22. minetest.register_alias("mapgen_apple", "default:apple")
  23. minetest.register_alias("mapgen_jungletree", "default:jungletree")
  24. minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves")
  25. minetest.register_alias("mapgen_junglegrass", "default:junglegrass")
  26. minetest.register_alias("mapgen_pine_tree", "default:pine_tree")
  27. minetest.register_alias("mapgen_pine_needles", "default:pine_needles")
  28. -- Dungeons
  29. minetest.register_alias("mapgen_cobble", "default:cobble")
  30. minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
  31. minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
  32. minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
  33. minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")
  34. minetest.register_alias("mapgen_stair_sandstone_block", "stairs:stair_sandstone_block")
  35. --
  36. -- Register ores
  37. --
  38. -- Mgv6
  39. function default.register_mgv6_ores()
  40. -- Blob ore
  41. -- These first to avoid other ores in blobs
  42. -- Clay
  43. -- This first to avoid clay in sand blobs
  44. minetest.register_ore({
  45. ore_type = "blob",
  46. ore = "default:clay",
  47. wherein = {"default:sand"},
  48. clust_scarcity = 16 * 16 * 16,
  49. clust_size = 5,
  50. y_max = 0,
  51. y_min = -15,
  52. noise_threshold = 0.0,
  53. noise_params = {
  54. offset = 0.5,
  55. scale = 0.2,
  56. spread = {x = 5, y = 5, z = 5},
  57. seed = -316,
  58. octaves = 1,
  59. persist = 0.0
  60. },
  61. })
  62. -- Sand
  63. minetest.register_ore({
  64. ore_type = "blob",
  65. ore = "default:sand",
  66. wherein = {"default:stone", "default:desert_stone"},
  67. clust_scarcity = 16 * 16 * 16,
  68. clust_size = 5,
  69. y_max = 0,
  70. y_min = -31,
  71. noise_threshold = 0.0,
  72. noise_params = {
  73. offset = 0.5,
  74. scale = 0.2,
  75. spread = {x = 5, y = 5, z = 5},
  76. seed = 2316,
  77. octaves = 1,
  78. persist = 0.0
  79. },
  80. })
  81. -- Dirt
  82. minetest.register_ore({
  83. ore_type = "blob",
  84. ore = "default:dirt",
  85. wherein = {"default:stone"},
  86. clust_scarcity = 16 * 16 * 16,
  87. clust_size = 5,
  88. y_max = 31000,
  89. y_min = -31,
  90. noise_threshold = 0.0,
  91. noise_params = {
  92. offset = 0.5,
  93. scale = 0.2,
  94. spread = {x = 5, y = 5, z = 5},
  95. seed = 17676,
  96. octaves = 1,
  97. persist = 0.0
  98. },
  99. })
  100. -- Gravel
  101. minetest.register_ore({
  102. ore_type = "blob",
  103. ore = "default:gravel",
  104. wherein = {"default:stone"},
  105. clust_scarcity = 16 * 16 * 16,
  106. clust_size = 5,
  107. y_max = 31000,
  108. y_min = -31000,
  109. noise_threshold = 0.0,
  110. noise_params = {
  111. offset = 0.5,
  112. scale = 0.2,
  113. spread = {x = 5, y = 5, z = 5},
  114. seed = 766,
  115. octaves = 1,
  116. persist = 0.0
  117. },
  118. })
  119. -- Scatter ores
  120. -- Coal
  121. minetest.register_ore({
  122. ore_type = "scatter",
  123. ore = "default:stone_with_coal",
  124. wherein = "default:stone",
  125. clust_scarcity = 8 * 8 * 8,
  126. clust_num_ores = 9,
  127. clust_size = 3,
  128. y_max = 31000,
  129. y_min = 1025,
  130. })
  131. minetest.register_ore({
  132. ore_type = "scatter",
  133. ore = "default:stone_with_coal",
  134. wherein = "default:stone",
  135. clust_scarcity = 8 * 8 * 8,
  136. clust_num_ores = 8,
  137. clust_size = 3,
  138. y_max = 64,
  139. y_min = -31000,
  140. })
  141. minetest.register_ore({
  142. ore_type = "scatter",
  143. ore = "default:stone_with_coal",
  144. wherein = "default:stone",
  145. clust_scarcity = 24 * 24 * 24,
  146. clust_num_ores = 27,
  147. clust_size = 6,
  148. y_max = 0,
  149. y_min = -31000,
  150. })
  151. -- Iron
  152. minetest.register_ore({
  153. ore_type = "scatter",
  154. ore = "default:stone_with_iron",
  155. wherein = "default:stone",
  156. clust_scarcity = 9 * 9 * 9,
  157. clust_num_ores = 12,
  158. clust_size = 3,
  159. y_max = 31000,
  160. y_min = 1025,
  161. })
  162. minetest.register_ore({
  163. ore_type = "scatter",
  164. ore = "default:stone_with_iron",
  165. wherein = "default:stone",
  166. clust_scarcity = 7 * 7 * 7,
  167. clust_num_ores = 5,
  168. clust_size = 3,
  169. y_max = 0,
  170. y_min = -31000,
  171. })
  172. minetest.register_ore({
  173. ore_type = "scatter",
  174. ore = "default:stone_with_iron",
  175. wherein = "default:stone",
  176. clust_scarcity = 24 * 24 * 24,
  177. clust_num_ores = 27,
  178. clust_size = 6,
  179. y_max = -64,
  180. y_min = -31000,
  181. })
  182. -- Copper
  183. minetest.register_ore({
  184. ore_type = "scatter",
  185. ore = "default:stone_with_copper",
  186. wherein = "default:stone",
  187. clust_scarcity = 9 * 9 * 9,
  188. clust_num_ores = 5,
  189. clust_size = 3,
  190. y_max = 31000,
  191. y_min = 1025,
  192. })
  193. minetest.register_ore({
  194. ore_type = "scatter",
  195. ore = "default:stone_with_copper",
  196. wherein = "default:stone",
  197. clust_scarcity = 12 * 12 * 12,
  198. clust_num_ores = 4,
  199. clust_size = 3,
  200. y_max = -16,
  201. y_min = -63,
  202. })
  203. minetest.register_ore({
  204. ore_type = "scatter",
  205. ore = "default:stone_with_copper",
  206. wherein = "default:stone",
  207. clust_scarcity = 9 * 9 * 9,
  208. clust_num_ores = 5,
  209. clust_size = 3,
  210. y_max = -64,
  211. y_min = -31000,
  212. })
  213. -- Tin
  214. minetest.register_ore({
  215. ore_type = "scatter",
  216. ore = "default:stone_with_tin",
  217. wherein = "default:stone",
  218. clust_scarcity = 10 * 10 * 10,
  219. clust_num_ores = 5,
  220. clust_size = 3,
  221. y_max = 31000,
  222. y_min = 1025,
  223. })
  224. minetest.register_ore({
  225. ore_type = "scatter",
  226. ore = "default:stone_with_tin",
  227. wherein = "default:stone",
  228. clust_scarcity = 13 * 13 * 13,
  229. clust_num_ores = 4,
  230. clust_size = 3,
  231. y_max = -32,
  232. y_min = -127,
  233. })
  234. minetest.register_ore({
  235. ore_type = "scatter",
  236. ore = "default:stone_with_tin",
  237. wherein = "default:stone",
  238. clust_scarcity = 10 * 10 * 10,
  239. clust_num_ores = 5,
  240. clust_size = 3,
  241. y_max = -128,
  242. y_min = -31000,
  243. })
  244. -- Gold
  245. minetest.register_ore({
  246. ore_type = "scatter",
  247. ore = "default:stone_with_gold",
  248. wherein = "default:stone",
  249. clust_scarcity = 13 * 13 * 13,
  250. clust_num_ores = 5,
  251. clust_size = 3,
  252. y_max = 31000,
  253. y_min = 1025,
  254. })
  255. minetest.register_ore({
  256. ore_type = "scatter",
  257. ore = "default:stone_with_gold",
  258. wherein = "default:stone",
  259. clust_scarcity = 15 * 15 * 15,
  260. clust_num_ores = 3,
  261. clust_size = 2,
  262. y_max = -64,
  263. y_min = -255,
  264. })
  265. minetest.register_ore({
  266. ore_type = "scatter",
  267. ore = "default:stone_with_gold",
  268. wherein = "default:stone",
  269. clust_scarcity = 13 * 13 * 13,
  270. clust_num_ores = 5,
  271. clust_size = 3,
  272. y_max = -256,
  273. y_min = -31000,
  274. })
  275. -- Mese crystal
  276. minetest.register_ore({
  277. ore_type = "scatter",
  278. ore = "default:stone_with_mese",
  279. wherein = "default:stone",
  280. clust_scarcity = 14 * 14 * 14,
  281. clust_num_ores = 5,
  282. clust_size = 3,
  283. y_max = 31000,
  284. y_min = 1025,
  285. })
  286. minetest.register_ore({
  287. ore_type = "scatter",
  288. ore = "default:stone_with_mese",
  289. wherein = "default:stone",
  290. clust_scarcity = 18 * 18 * 18,
  291. clust_num_ores = 3,
  292. clust_size = 2,
  293. y_max = -64,
  294. y_min = -255,
  295. })
  296. minetest.register_ore({
  297. ore_type = "scatter",
  298. ore = "default:stone_with_mese",
  299. wherein = "default:stone",
  300. clust_scarcity = 14 * 14 * 14,
  301. clust_num_ores = 5,
  302. clust_size = 3,
  303. y_max = -256,
  304. y_min = -31000,
  305. })
  306. -- Diamond
  307. minetest.register_ore({
  308. ore_type = "scatter",
  309. ore = "default:stone_with_diamond",
  310. wherein = "default:stone",
  311. clust_scarcity = 15 * 15 * 15,
  312. clust_num_ores = 4,
  313. clust_size = 3,
  314. y_max = 31000,
  315. y_min = 1025,
  316. })
  317. minetest.register_ore({
  318. ore_type = "scatter",
  319. ore = "default:stone_with_diamond",
  320. wherein = "default:stone",
  321. clust_scarcity = 17 * 17 * 17,
  322. clust_num_ores = 4,
  323. clust_size = 3,
  324. y_max = -128,
  325. y_min = -255,
  326. })
  327. minetest.register_ore({
  328. ore_type = "scatter",
  329. ore = "default:stone_with_diamond",
  330. wherein = "default:stone",
  331. clust_scarcity = 15 * 15 * 15,
  332. clust_num_ores = 4,
  333. clust_size = 3,
  334. y_max = -256,
  335. y_min = -31000,
  336. })
  337. -- Mese block
  338. minetest.register_ore({
  339. ore_type = "scatter",
  340. ore = "default:mese",
  341. wherein = "default:stone",
  342. clust_scarcity = 36 * 36 * 36,
  343. clust_num_ores = 3,
  344. clust_size = 2,
  345. y_max = 31000,
  346. y_min = 1025,
  347. })
  348. minetest.register_ore({
  349. ore_type = "scatter",
  350. ore = "default:mese",
  351. wherein = "default:stone",
  352. clust_scarcity = 36 * 36 * 36,
  353. clust_num_ores = 3,
  354. clust_size = 2,
  355. y_max = -1024,
  356. y_min = -31000,
  357. })
  358. end
  359. -- All mapgens except mgv6
  360. function default.register_ores()
  361. -- Blob ore
  362. -- These first to avoid other ores in blobs
  363. -- Clay
  364. -- This first to avoid clay in sand blobs
  365. minetest.register_ore({
  366. ore_type = "blob",
  367. ore = "default:clay",
  368. wherein = {"default:sand"},
  369. clust_scarcity = 16 * 16 * 16,
  370. clust_size = 5,
  371. y_max = 0,
  372. y_min = -15,
  373. noise_threshold = 0.0,
  374. noise_params = {
  375. offset = 0.5,
  376. scale = 0.2,
  377. spread = {x = 5, y = 5, z = 5},
  378. seed = -316,
  379. octaves = 1,
  380. persist = 0.0
  381. },
  382. })
  383. -- Silver sand
  384. minetest.register_ore({
  385. ore_type = "blob",
  386. ore = "default:silver_sand",
  387. wherein = {"default:stone"},
  388. clust_scarcity = 16 * 16 * 16,
  389. clust_size = 5,
  390. y_max = 31000,
  391. y_min = -31000,
  392. noise_threshold = 0.0,
  393. noise_params = {
  394. offset = 0.5,
  395. scale = 0.2,
  396. spread = {x = 5, y = 5, z = 5},
  397. seed = 2316,
  398. octaves = 1,
  399. persist = 0.0
  400. },
  401. biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
  402. "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
  403. "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
  404. "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
  405. "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
  406. "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
  407. "rainforest", "rainforest_swamp", "rainforest_ocean", "underground",
  408. "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
  409. })
  410. -- Dirt
  411. minetest.register_ore({
  412. ore_type = "blob",
  413. ore = "default:dirt",
  414. wherein = {"default:stone"},
  415. clust_scarcity = 16 * 16 * 16,
  416. clust_size = 5,
  417. y_max = 31000,
  418. y_min = -31,
  419. noise_threshold = 0.0,
  420. noise_params = {
  421. offset = 0.5,
  422. scale = 0.2,
  423. spread = {x = 5, y = 5, z = 5},
  424. seed = 17676,
  425. octaves = 1,
  426. persist = 0.0
  427. },
  428. biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
  429. "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore",
  430. "rainforest", "rainforest_swamp", "floatland_coniferous_forest"}
  431. })
  432. -- Gravel
  433. minetest.register_ore({
  434. ore_type = "blob",
  435. ore = "default:gravel",
  436. wherein = {"default:stone"},
  437. clust_scarcity = 16 * 16 * 16,
  438. clust_size = 5,
  439. y_max = 31000,
  440. y_min = -31000,
  441. noise_threshold = 0.0,
  442. noise_params = {
  443. offset = 0.5,
  444. scale = 0.2,
  445. spread = {x = 5, y = 5, z = 5},
  446. seed = 766,
  447. octaves = 1,
  448. persist = 0.0
  449. },
  450. biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean",
  451. "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean",
  452. "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest",
  453. "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest",
  454. "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert",
  455. "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean",
  456. "rainforest", "rainforest_swamp", "rainforest_ocean", "underground",
  457. "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
  458. })
  459. -- Scatter ores
  460. -- Coal
  461. minetest.register_ore({
  462. ore_type = "scatter",
  463. ore = "default:stone_with_coal",
  464. wherein = "default:stone",
  465. clust_scarcity = 8 * 8 * 8,
  466. clust_num_ores = 9,
  467. clust_size = 3,
  468. y_max = 31000,
  469. y_min = 1025,
  470. })
  471. minetest.register_ore({
  472. ore_type = "scatter",
  473. ore = "default:stone_with_coal",
  474. wherein = "default:stone",
  475. clust_scarcity = 8 * 8 * 8,
  476. clust_num_ores = 8,
  477. clust_size = 3,
  478. y_max = 64,
  479. y_min = -127,
  480. })
  481. minetest.register_ore({
  482. ore_type = "scatter",
  483. ore = "default:stone_with_coal",
  484. wherein = "default:stone",
  485. clust_scarcity = 12 * 12 * 12,
  486. clust_num_ores = 30,
  487. clust_size = 5,
  488. y_max = -128,
  489. y_min = -31000,
  490. })
  491. -- Iron
  492. minetest.register_ore({
  493. ore_type = "scatter",
  494. ore = "default:stone_with_iron",
  495. wherein = "default:stone",
  496. clust_scarcity = 9 * 9 * 9,
  497. clust_num_ores = 12,
  498. clust_size = 3,
  499. y_max = 31000,
  500. y_min = 1025,
  501. })
  502. minetest.register_ore({
  503. ore_type = "scatter",
  504. ore = "default:stone_with_iron",
  505. wherein = "default:stone",
  506. clust_scarcity = 7 * 7 * 7,
  507. clust_num_ores = 5,
  508. clust_size = 3,
  509. y_max = -64,
  510. y_min = -127,
  511. })
  512. minetest.register_ore({
  513. ore_type = "scatter",
  514. ore = "default:stone_with_iron",
  515. wherein = "default:stone",
  516. clust_scarcity = 12 * 12 * 12,
  517. clust_num_ores = 29,
  518. clust_size = 5,
  519. y_max = -128,
  520. y_min = -31000,
  521. })
  522. -- Tin
  523. minetest.register_ore({
  524. ore_type = "scatter",
  525. ore = "default:stone_with_tin",
  526. wherein = "default:stone",
  527. clust_scarcity = 10 * 10 * 10,
  528. clust_num_ores = 5,
  529. clust_size = 3,
  530. y_max = 31000,
  531. y_min = 1025,
  532. })
  533. minetest.register_ore({
  534. ore_type = "scatter",
  535. ore = "default:stone_with_tin",
  536. wherein = "default:stone",
  537. clust_scarcity = 13 * 13 * 13,
  538. clust_num_ores = 4,
  539. clust_size = 3,
  540. y_max = -128,
  541. y_min = -255,
  542. })
  543. minetest.register_ore({
  544. ore_type = "scatter",
  545. ore = "default:stone_with_tin",
  546. wherein = "default:stone",
  547. clust_scarcity = 10 * 10 * 10,
  548. clust_num_ores = 5,
  549. clust_size = 3,
  550. y_max = -256,
  551. y_min = -31000,
  552. })
  553. -- Copper
  554. minetest.register_ore({
  555. ore_type = "scatter",
  556. ore = "default:stone_with_copper",
  557. wherein = "default:stone",
  558. clust_scarcity = 9 * 9 * 9,
  559. clust_num_ores = 5,
  560. clust_size = 3,
  561. y_max = 31000,
  562. y_min = 1025,
  563. })
  564. minetest.register_ore({
  565. ore_type = "scatter",
  566. ore = "default:stone_with_copper",
  567. wherein = "default:stone",
  568. clust_scarcity = 12 * 12 * 12,
  569. clust_num_ores = 4,
  570. clust_size = 3,
  571. y_max = -128,
  572. y_min = -255,
  573. })
  574. minetest.register_ore({
  575. ore_type = "scatter",
  576. ore = "default:stone_with_copper",
  577. wherein = "default:stone",
  578. clust_scarcity = 9 * 9 * 9,
  579. clust_num_ores = 5,
  580. clust_size = 3,
  581. y_max = -256,
  582. y_min = -31000,
  583. })
  584. -- Gold
  585. minetest.register_ore({
  586. ore_type = "scatter",
  587. ore = "default:stone_with_gold",
  588. wherein = "default:stone",
  589. clust_scarcity = 13 * 13 * 13,
  590. clust_num_ores = 5,
  591. clust_size = 3,
  592. y_max = 31000,
  593. y_min = 1025,
  594. })
  595. minetest.register_ore({
  596. ore_type = "scatter",
  597. ore = "default:stone_with_gold",
  598. wherein = "default:stone",
  599. clust_scarcity = 15 * 15 * 15,
  600. clust_num_ores = 3,
  601. clust_size = 2,
  602. y_max = -256,
  603. y_min = -511,
  604. })
  605. minetest.register_ore({
  606. ore_type = "scatter",
  607. ore = "default:stone_with_gold",
  608. wherein = "default:stone",
  609. clust_scarcity = 13 * 13 * 13,
  610. clust_num_ores = 5,
  611. clust_size = 3,
  612. y_max = -512,
  613. y_min = -31000,
  614. })
  615. -- Mese crystal
  616. minetest.register_ore({
  617. ore_type = "scatter",
  618. ore = "default:stone_with_mese",
  619. wherein = "default:stone",
  620. clust_scarcity = 14 * 14 * 14,
  621. clust_num_ores = 5,
  622. clust_size = 3,
  623. y_max = 31000,
  624. y_min = 1025,
  625. })
  626. minetest.register_ore({
  627. ore_type = "scatter",
  628. ore = "default:stone_with_mese",
  629. wherein = "default:stone",
  630. clust_scarcity = 18 * 18 * 18,
  631. clust_num_ores = 3,
  632. clust_size = 2,
  633. y_max = -512,
  634. y_min = -1023,
  635. })
  636. minetest.register_ore({
  637. ore_type = "scatter",
  638. ore = "default:stone_with_mese",
  639. wherein = "default:stone",
  640. clust_scarcity = 14 * 14 * 14,
  641. clust_num_ores = 5,
  642. clust_size = 3,
  643. y_max = -1024,
  644. y_min = -31000,
  645. })
  646. -- Diamond
  647. minetest.register_ore({
  648. ore_type = "scatter",
  649. ore = "default:stone_with_diamond",
  650. wherein = "default:stone",
  651. clust_scarcity = 15 * 15 * 15,
  652. clust_num_ores = 4,
  653. clust_size = 3,
  654. y_max = 31000,
  655. y_min = 1025,
  656. })
  657. minetest.register_ore({
  658. ore_type = "scatter",
  659. ore = "default:stone_with_diamond",
  660. wherein = "default:stone",
  661. clust_scarcity = 17 * 17 * 17,
  662. clust_num_ores = 4,
  663. clust_size = 3,
  664. y_max = -1024,
  665. y_min = -2047,
  666. })
  667. minetest.register_ore({
  668. ore_type = "scatter",
  669. ore = "default:stone_with_diamond",
  670. wherein = "default:stone",
  671. clust_scarcity = 15 * 15 * 15,
  672. clust_num_ores = 4,
  673. clust_size = 3,
  674. y_max = -2048,
  675. y_min = -31000,
  676. })
  677. -- Mese block
  678. minetest.register_ore({
  679. ore_type = "scatter",
  680. ore = "default:mese",
  681. wherein = "default:stone",
  682. clust_scarcity = 36 * 36 * 36,
  683. clust_num_ores = 3,
  684. clust_size = 2,
  685. y_max = 31000,
  686. y_min = 1025,
  687. })
  688. minetest.register_ore({
  689. ore_type = "scatter",
  690. ore = "default:mese",
  691. wherein = "default:stone",
  692. clust_scarcity = 36 * 36 * 36,
  693. clust_num_ores = 3,
  694. clust_size = 2,
  695. y_max = -2048,
  696. y_min = -4095,
  697. })
  698. minetest.register_ore({
  699. ore_type = "scatter",
  700. ore = "default:mese",
  701. wherein = "default:stone",
  702. clust_scarcity = 28 * 28 * 28,
  703. clust_num_ores = 5,
  704. clust_size = 3,
  705. y_max = -4096,
  706. y_min = -31000,
  707. })
  708. end
  709. --
  710. -- Register biomes
  711. --
  712. -- All mapgens except mgv6
  713. function default.register_biomes(upper_limit)
  714. -- Icesheet
  715. minetest.register_biome({
  716. name = "icesheet",
  717. node_dust = "default:snowblock",
  718. node_top = "default:snowblock",
  719. depth_top = 1,
  720. node_filler = "default:snowblock",
  721. depth_filler = 3,
  722. node_stone = "default:cave_ice",
  723. node_water_top = "default:ice",
  724. depth_water_top = 10,
  725. --node_water = "",
  726. node_river_water = "default:ice",
  727. node_riverbed = "default:gravel",
  728. depth_riverbed = 2,
  729. y_max = upper_limit,
  730. y_min = -8,
  731. heat_point = 0,
  732. humidity_point = 73,
  733. })
  734. minetest.register_biome({
  735. name = "icesheet_ocean",
  736. node_dust = "default:snowblock",
  737. node_top = "default:sand",
  738. depth_top = 1,
  739. node_filler = "default:sand",
  740. depth_filler = 3,
  741. --node_stone = "",
  742. node_water_top = "default:ice",
  743. depth_water_top = 10,
  744. --node_water = "",
  745. --node_river_water = "",
  746. y_max = -9,
  747. y_min = -112,
  748. heat_point = 0,
  749. humidity_point = 73,
  750. })
  751. -- Tundra
  752. minetest.register_biome({
  753. name = "tundra",
  754. node_dust = "default:snowblock",
  755. --node_top = ,
  756. --depth_top = ,
  757. --node_filler = ,
  758. --depth_filler = ,
  759. --node_stone = "",
  760. --node_water_top = "",
  761. --depth_water_top = ,
  762. --node_water = "",
  763. --node_river_water = "",
  764. node_riverbed = "default:gravel",
  765. depth_riverbed = 2,
  766. y_max = upper_limit,
  767. y_min = 2,
  768. heat_point = 0,
  769. humidity_point = 40,
  770. })
  771. minetest.register_biome({
  772. name = "tundra_beach",
  773. --node_dust = "",
  774. node_top = "default:gravel",
  775. depth_top = 1,
  776. node_filler = "default:gravel",
  777. depth_filler = 2,
  778. --node_stone = "",
  779. --node_water_top = "",
  780. --depth_water_top = ,
  781. --node_water = "",
  782. --node_river_water = "",
  783. node_riverbed = "default:gravel",
  784. depth_riverbed = 2,
  785. y_max = 1,
  786. y_min = -3,
  787. heat_point = 0,
  788. humidity_point = 40,
  789. })
  790. minetest.register_biome({
  791. name = "tundra_ocean",
  792. --node_dust = "",
  793. node_top = "default:sand",
  794. depth_top = 1,
  795. node_filler = "default:sand",
  796. depth_filler = 3,
  797. --node_stone = "",
  798. --node_water_top = "",
  799. --depth_water_top = ,
  800. --node_water = "",
  801. --node_river_water = "",
  802. node_riverbed = "default:gravel",
  803. depth_riverbed = 2,
  804. y_max = -4,
  805. y_min = -112,
  806. heat_point = 0,
  807. humidity_point = 40,
  808. })
  809. -- Taiga
  810. minetest.register_biome({
  811. name = "taiga",
  812. node_dust = "default:snow",
  813. node_top = "default:dirt_with_snow",
  814. depth_top = 1,
  815. node_filler = "default:dirt",
  816. depth_filler = 3,
  817. --node_stone = "",
  818. --node_water_top = "",
  819. --depth_water_top = ,
  820. --node_water = "",
  821. --node_river_water = "",
  822. node_riverbed = "default:sand",
  823. depth_riverbed = 2,
  824. y_max = upper_limit,
  825. y_min = 2,
  826. heat_point = 25,
  827. humidity_point = 70,
  828. })
  829. minetest.register_biome({
  830. name = "taiga_ocean",
  831. --node_dust = "",
  832. node_top = "default:sand",
  833. depth_top = 1,
  834. node_filler = "default:sand",
  835. depth_filler = 3,
  836. --node_stone = "",
  837. --node_water_top = "",
  838. --depth_water_top = ,
  839. --node_water = "",
  840. --node_river_water = "",
  841. node_riverbed = "default:sand",
  842. depth_riverbed = 2,
  843. y_max = 1,
  844. y_min = -112,
  845. heat_point = 25,
  846. humidity_point = 70,
  847. })
  848. -- Snowy grassland
  849. minetest.register_biome({
  850. name = "snowy_grassland",
  851. node_dust = "default:snow",
  852. node_top = "default:dirt_with_snow",
  853. depth_top = 1,
  854. node_filler = "default:dirt",
  855. depth_filler = 1,
  856. --node_stone = "",
  857. --node_water_top = "",
  858. --depth_water_top = ,
  859. --node_water = "",
  860. --node_river_water = "",
  861. node_riverbed = "default:sand",
  862. depth_riverbed = 2,
  863. y_max = upper_limit,
  864. y_min = 5,
  865. heat_point = 20,
  866. humidity_point = 35,
  867. })
  868. minetest.register_biome({
  869. name = "snowy_grassland_ocean",
  870. --node_dust = "",
  871. node_top = "default:sand",
  872. depth_top = 1,
  873. node_filler = "default:sand",
  874. depth_filler = 3,
  875. --node_stone = "",
  876. --node_water_top = "",
  877. --depth_water_top = ,
  878. --node_water = "",
  879. --node_river_water = "",
  880. node_riverbed = "default:sand",
  881. depth_riverbed = 2,
  882. y_max = 4,
  883. y_min = -112,
  884. heat_point = 20,
  885. humidity_point = 35,
  886. })
  887. -- Grassland
  888. minetest.register_biome({
  889. name = "grassland",
  890. --node_dust = "",
  891. node_top = "default:dirt_with_grass",
  892. depth_top = 1,
  893. node_filler = "default:dirt",
  894. depth_filler = 1,
  895. --node_stone = "",
  896. --node_water_top = "",
  897. --depth_water_top = ,
  898. --node_water = "",
  899. --node_river_water = "",
  900. node_riverbed = "default:sand",
  901. depth_riverbed = 2,
  902. y_max = upper_limit,
  903. y_min = 6,
  904. heat_point = 50,
  905. humidity_point = 35,
  906. })
  907. minetest.register_biome({
  908. name = "grassland_dunes",
  909. --node_dust = "",
  910. node_top = "default:sand",
  911. depth_top = 1,
  912. node_filler = "default:sand",
  913. depth_filler = 2,
  914. --node_stone = "",
  915. --node_water_top = "",
  916. --depth_water_top = ,
  917. --node_water = "",
  918. --node_river_water = "",
  919. node_riverbed = "default:sand",
  920. depth_riverbed = 2,
  921. y_max = 5,
  922. y_min = 4,
  923. heat_point = 50,
  924. humidity_point = 35,
  925. })
  926. minetest.register_biome({
  927. name = "grassland_ocean",
  928. --node_dust = "",
  929. node_top = "default:sand",
  930. depth_top = 1,
  931. node_filler = "default:sand",
  932. depth_filler = 3,
  933. --node_stone = "",
  934. --node_water_top = "",
  935. --depth_water_top = ,
  936. --node_water = "",
  937. --node_river_water = "",
  938. node_riverbed = "default:sand",
  939. depth_riverbed = 2,
  940. y_max = 3,
  941. y_min = -112,
  942. heat_point = 50,
  943. humidity_point = 35,
  944. })
  945. -- Coniferous forest
  946. minetest.register_biome({
  947. name = "coniferous_forest",
  948. --node_dust = "",
  949. node_top = "default:dirt_with_coniferous_litter",
  950. depth_top = 1,
  951. node_filler = "default:dirt",
  952. depth_filler = 3,
  953. --node_stone = "",
  954. --node_water_top = "",
  955. --depth_water_top = ,
  956. --node_water = "",
  957. --node_river_water = "",
  958. node_riverbed = "default:sand",
  959. depth_riverbed = 2,
  960. y_max = upper_limit,
  961. y_min = 6,
  962. heat_point = 45,
  963. humidity_point = 70,
  964. })
  965. minetest.register_biome({
  966. name = "coniferous_forest_dunes",
  967. --node_dust = "",
  968. node_top = "default:sand",
  969. depth_top = 1,
  970. node_filler = "default:sand",
  971. depth_filler = 3,
  972. --node_stone = "",
  973. --node_water_top = "",
  974. --depth_water_top = ,
  975. --node_water = "",
  976. --node_river_water = "",
  977. node_riverbed = "default:sand",
  978. depth_riverbed = 2,
  979. y_max = 5,
  980. y_min = 4,
  981. heat_point = 45,
  982. humidity_point = 70,
  983. })
  984. minetest.register_biome({
  985. name = "coniferous_forest_ocean",
  986. --node_dust = "",
  987. node_top = "default:sand",
  988. depth_top = 1,
  989. node_filler = "default:sand",
  990. depth_filler = 3,
  991. --node_stone = "",
  992. --node_water_top = "",
  993. --depth_water_top = ,
  994. --node_water = "",
  995. --node_river_water = "",
  996. node_riverbed = "default:sand",
  997. depth_riverbed = 2,
  998. y_max = 3,
  999. y_min = -112,
  1000. heat_point = 45,
  1001. humidity_point = 70,
  1002. })
  1003. -- Deciduous forest
  1004. minetest.register_biome({
  1005. name = "deciduous_forest",
  1006. --node_dust = "",
  1007. node_top = "default:dirt_with_grass",
  1008. depth_top = 1,
  1009. node_filler = "default:dirt",
  1010. depth_filler = 3,
  1011. --node_stone = "",
  1012. --node_water_top = "",
  1013. --depth_water_top = ,
  1014. --node_water = "",
  1015. --node_river_water = "",
  1016. node_riverbed = "default:sand",
  1017. depth_riverbed = 2,
  1018. y_max = upper_limit,
  1019. y_min = 1,
  1020. heat_point = 60,
  1021. humidity_point = 68,
  1022. })
  1023. minetest.register_biome({
  1024. name = "deciduous_forest_shore",
  1025. --node_dust = "",
  1026. node_top = "default:dirt",
  1027. depth_top = 1,
  1028. node_filler = "default:dirt",
  1029. depth_filler = 3,
  1030. --node_stone = "",
  1031. --node_water_top = "",
  1032. --depth_water_top = ,
  1033. --node_water = "",
  1034. --node_river_water = "",
  1035. node_riverbed = "default:sand",
  1036. depth_riverbed = 2,
  1037. y_max = 0,
  1038. y_min = -1,
  1039. heat_point = 60,
  1040. humidity_point = 68,
  1041. })
  1042. minetest.register_biome({
  1043. name = "deciduous_forest_ocean",
  1044. --node_dust = "",
  1045. node_top = "default:sand",
  1046. depth_top = 1,
  1047. node_filler = "default:sand",
  1048. depth_filler = 3,
  1049. --node_stone = "",
  1050. --node_water_top = "",
  1051. --depth_water_top = ,
  1052. --node_water = "",
  1053. --node_river_water = "",
  1054. node_riverbed = "default:sand",
  1055. depth_riverbed = 2,
  1056. y_max = -2,
  1057. y_min = -112,
  1058. heat_point = 60,
  1059. humidity_point = 68,
  1060. })
  1061. -- Desert
  1062. minetest.register_biome({
  1063. name = "desert",
  1064. --node_dust = "",
  1065. node_top = "default:desert_sand",
  1066. depth_top = 1,
  1067. node_filler = "default:desert_sand",
  1068. depth_filler = 1,
  1069. node_stone = "default:desert_stone",
  1070. --node_water_top = "",
  1071. --depth_water_top = ,
  1072. --node_water = "",
  1073. --node_river_water = "",
  1074. node_riverbed = "default:sand",
  1075. depth_riverbed = 2,
  1076. y_max = upper_limit,
  1077. y_min = 5,
  1078. heat_point = 92,
  1079. humidity_point = 16,
  1080. })
  1081. minetest.register_biome({
  1082. name = "desert_ocean",
  1083. --node_dust = "",
  1084. node_top = "default:sand",
  1085. depth_top = 1,
  1086. node_filler = "default:sand",
  1087. depth_filler = 3,
  1088. node_stone = "default:desert_stone",
  1089. --node_water_top = "",
  1090. --depth_water_top = ,
  1091. --node_water = "",
  1092. --node_river_water = "",
  1093. node_riverbed = "default:sand",
  1094. depth_riverbed = 2,
  1095. y_max = 4,
  1096. y_min = -112,
  1097. heat_point = 92,
  1098. humidity_point = 16,
  1099. })
  1100. -- Sandstone desert
  1101. minetest.register_biome({
  1102. name = "sandstone_desert",
  1103. --node_dust = "",
  1104. node_top = "default:sand",
  1105. depth_top = 1,
  1106. node_filler = "default:sand",
  1107. depth_filler = 1,
  1108. node_stone = "default:sandstone",
  1109. --node_water_top = "",
  1110. --depth_water_top = ,
  1111. --node_water = "",
  1112. --node_river_water = "",
  1113. node_riverbed = "default:sand",
  1114. depth_riverbed = 2,
  1115. y_max = upper_limit,
  1116. y_min = 5,
  1117. heat_point = 60,
  1118. humidity_point = 0,
  1119. })
  1120. minetest.register_biome({
  1121. name = "sandstone_desert_ocean",
  1122. --node_dust = "",
  1123. node_top = "default:sand",
  1124. depth_top = 1,
  1125. node_filler = "default:sand",
  1126. depth_filler = 3,
  1127. node_stone = "default:sandstone",
  1128. --node_water_top = "",
  1129. --depth_water_top = ,
  1130. --node_water = "",
  1131. --node_river_water = "",
  1132. node_riverbed = "default:sand",
  1133. depth_riverbed = 2,
  1134. y_max = 4,
  1135. y_min = -112,
  1136. heat_point = 60,
  1137. humidity_point = 0,
  1138. })
  1139. -- Cold desert
  1140. minetest.register_biome({
  1141. name = "cold_desert",
  1142. --node_dust = "",
  1143. node_top = "default:silver_sand",
  1144. depth_top = 1,
  1145. node_filler = "default:silver_sand",
  1146. depth_filler = 1,
  1147. --node_stone = "",
  1148. --node_water_top = "",
  1149. --depth_water_top = ,
  1150. --node_water = "",
  1151. --node_river_water = "",
  1152. node_riverbed = "default:sand",
  1153. depth_riverbed = 2,
  1154. y_max = upper_limit,
  1155. y_min = 5,
  1156. heat_point = 40,
  1157. humidity_point = 0,
  1158. })
  1159. minetest.register_biome({
  1160. name = "cold_desert_ocean",
  1161. --node_dust = "",
  1162. node_top = "default:sand",
  1163. depth_top = 1,
  1164. node_filler = "default:sand",
  1165. depth_filler = 3,
  1166. --node_stone = "",
  1167. --node_water_top = "",
  1168. --depth_water_top = ,
  1169. --node_water = "",
  1170. --node_river_water = "",
  1171. node_riverbed = "default:sand",
  1172. depth_riverbed = 2,
  1173. y_max = 4,
  1174. y_min = -112,
  1175. heat_point = 40,
  1176. humidity_point = 0,
  1177. })
  1178. -- Savanna
  1179. minetest.register_biome({
  1180. name = "savanna",
  1181. --node_dust = "",
  1182. node_top = "default:dirt_with_dry_grass",
  1183. depth_top = 1,
  1184. node_filler = "default:dirt",
  1185. depth_filler = 1,
  1186. --node_stone = "",
  1187. --node_water_top = "",
  1188. --depth_water_top = ,
  1189. --node_water = "",
  1190. --node_river_water = "",
  1191. node_riverbed = "default:sand",
  1192. depth_riverbed = 2,
  1193. y_max = upper_limit,
  1194. y_min = 1,
  1195. heat_point = 89,
  1196. humidity_point = 42,
  1197. })
  1198. minetest.register_biome({
  1199. name = "savanna_shore",
  1200. --node_dust = "",
  1201. node_top = "default:dirt",
  1202. depth_top = 1,
  1203. node_filler = "default:dirt",
  1204. depth_filler = 3,
  1205. --node_stone = "",
  1206. --node_water_top = "",
  1207. --depth_water_top = ,
  1208. --node_water = "",
  1209. --node_river_water = "",
  1210. node_riverbed = "default:sand",
  1211. depth_riverbed = 2,
  1212. y_max = 0,
  1213. y_min = -1,
  1214. heat_point = 89,
  1215. humidity_point = 42,
  1216. })
  1217. minetest.register_biome({
  1218. name = "savanna_ocean",
  1219. --node_dust = "",
  1220. node_top = "default:sand",
  1221. depth_top = 1,
  1222. node_filler = "default:sand",
  1223. depth_filler = 3,
  1224. --node_stone = "",
  1225. --node_water_top = "",
  1226. --depth_water_top = ,
  1227. --node_water = "",
  1228. --node_river_water = "",
  1229. node_riverbed = "default:sand",
  1230. depth_riverbed = 2,
  1231. y_max = -2,
  1232. y_min = -112,
  1233. heat_point = 89,
  1234. humidity_point = 42,
  1235. })
  1236. -- Rainforest
  1237. minetest.register_biome({
  1238. name = "rainforest",
  1239. --node_dust = "",
  1240. node_top = "default:dirt_with_rainforest_litter",
  1241. depth_top = 1,
  1242. node_filler = "default:dirt",
  1243. depth_filler = 3,
  1244. --node_stone = "",
  1245. --node_water_top = "",
  1246. --depth_water_top = ,
  1247. --node_water = "",
  1248. --node_river_water = "",
  1249. node_riverbed = "default:sand",
  1250. depth_riverbed = 2,
  1251. y_max = upper_limit,
  1252. y_min = 1,
  1253. heat_point = 86,
  1254. humidity_point = 65,
  1255. })
  1256. minetest.register_biome({
  1257. name = "rainforest_swamp",
  1258. --node_dust = "",
  1259. node_top = "default:dirt",
  1260. depth_top = 1,
  1261. node_filler = "default:dirt",
  1262. depth_filler = 3,
  1263. --node_stone = "",
  1264. --node_water_top = "",
  1265. --depth_water_top = ,
  1266. --node_water = "",
  1267. --node_river_water = "",
  1268. node_riverbed = "default:sand",
  1269. depth_riverbed = 2,
  1270. y_max = 0,
  1271. y_min = -1,
  1272. heat_point = 86,
  1273. humidity_point = 65,
  1274. })
  1275. minetest.register_biome({
  1276. name = "rainforest_ocean",
  1277. --node_dust = "",
  1278. node_top = "default:sand",
  1279. depth_top = 1,
  1280. node_filler = "default:sand",
  1281. depth_filler = 3,
  1282. --node_stone = "",
  1283. --node_water_top = "",
  1284. --depth_water_top = ,
  1285. --node_water = "",
  1286. --node_river_water = "",
  1287. node_riverbed = "default:sand",
  1288. depth_riverbed = 2,
  1289. y_max = -2,
  1290. y_min = -112,
  1291. heat_point = 86,
  1292. humidity_point = 65,
  1293. })
  1294. -- Underground
  1295. minetest.register_biome({
  1296. name = "underground",
  1297. --node_dust = "",
  1298. --node_top = "",
  1299. --depth_top = ,
  1300. --node_filler = "",
  1301. --depth_filler = ,
  1302. --node_stone = "",
  1303. --node_water_top = "",
  1304. --depth_water_top = ,
  1305. --node_water = "",
  1306. --node_river_water = "",
  1307. y_max = -113,
  1308. y_min = -31000,
  1309. heat_point = 50,
  1310. humidity_point = 50,
  1311. })
  1312. end
  1313. -- Biomes for floatlands
  1314. -- TODO Temporary simple biomes to be replaced by special floatland biomes later.
  1315. function default.register_floatland_biomes(floatland_level, shadow_limit)
  1316. minetest.register_biome({
  1317. name = "floatland_grassland",
  1318. --node_dust = "",
  1319. node_top = "default:dirt_with_grass",
  1320. depth_top = 1,
  1321. node_filler = "default:dirt",
  1322. depth_filler = 1,
  1323. --node_stone = "",
  1324. --node_water_top = "",
  1325. --depth_water_top = ,
  1326. --node_water = "",
  1327. --node_river_water = "",
  1328. --node_riverbed = "",
  1329. --depth_riverbed = ,
  1330. y_max = 31000,
  1331. y_min = floatland_level + 2,
  1332. heat_point = 50,
  1333. humidity_point = 25,
  1334. })
  1335. minetest.register_biome({
  1336. name = "floatland_coniferous_forest",
  1337. --node_dust = "",
  1338. node_top = "default:dirt_with_coniferous_litter",
  1339. depth_top = 1,
  1340. node_filler = "default:dirt",
  1341. depth_filler = 3,
  1342. --node_stone = "",
  1343. --node_water_top = "",
  1344. --depth_water_top = ,
  1345. --node_water = "",
  1346. --node_river_water = "",
  1347. --node_riverbed = "",
  1348. --depth_riverbed = ,
  1349. y_max = 31000,
  1350. y_min = floatland_level + 2,
  1351. heat_point = 50,
  1352. humidity_point = 75,
  1353. })
  1354. minetest.register_biome({
  1355. name = "floatland_ocean",
  1356. --node_dust = "",
  1357. node_top = "default:sand",
  1358. depth_top = 1,
  1359. node_filler = "default:sand",
  1360. depth_filler = 3,
  1361. --node_stone = "",
  1362. --node_water_top = "",
  1363. --depth_water_top = ,
  1364. --node_water = "",
  1365. --node_river_water = "",
  1366. --node_riverbed = "",
  1367. --depth_riverbed = ,
  1368. y_max = floatland_level + 1,
  1369. y_min = shadow_limit,
  1370. heat_point = 50,
  1371. humidity_point = 50,
  1372. })
  1373. end
  1374. --
  1375. -- Register decorations
  1376. --
  1377. -- Mgv6
  1378. function default.register_mgv6_decorations()
  1379. -- Papyrus
  1380. minetest.register_decoration({
  1381. name = "default:papyrus",
  1382. deco_type = "simple",
  1383. place_on = {"default:dirt_with_grass"},
  1384. sidelen = 16,
  1385. noise_params = {
  1386. offset = -0.3,
  1387. scale = 0.7,
  1388. spread = {x = 100, y = 100, z = 100},
  1389. seed = 354,
  1390. octaves = 3,
  1391. persist = 0.7
  1392. },
  1393. y_max = 1,
  1394. y_min = 1,
  1395. decoration = "default:papyrus",
  1396. height = 2,
  1397. height_max = 4,
  1398. spawn_by = "default:water_source",
  1399. num_spawn_by = 1,
  1400. })
  1401. -- Cacti
  1402. minetest.register_decoration({
  1403. name = "default:cactus",
  1404. deco_type = "simple",
  1405. place_on = {"default:desert_sand"},
  1406. sidelen = 16,
  1407. noise_params = {
  1408. offset = -0.012,
  1409. scale = 0.024,
  1410. spread = {x = 100, y = 100, z = 100},
  1411. seed = 230,
  1412. octaves = 3,
  1413. persist = 0.6
  1414. },
  1415. y_max = 30,
  1416. y_min = 1,
  1417. decoration = "default:cactus",
  1418. height = 3,
  1419. height_max = 4,
  1420. })
  1421. -- Long grasses
  1422. for length = 1, 5 do
  1423. minetest.register_decoration({
  1424. name = "default:grass_"..length,
  1425. deco_type = "simple",
  1426. place_on = {"default:dirt_with_grass"},
  1427. sidelen = 16,
  1428. noise_params = {
  1429. offset = 0,
  1430. scale = 0.007,
  1431. spread = {x = 100, y = 100, z = 100},
  1432. seed = 329,
  1433. octaves = 3,
  1434. persist = 0.6
  1435. },
  1436. y_max = 30,
  1437. y_min = 1,
  1438. decoration = "default:grass_"..length,
  1439. })
  1440. end
  1441. -- Dry shrubs
  1442. minetest.register_decoration({
  1443. name = "default:dry_shrub",
  1444. deco_type = "simple",
  1445. place_on = {"default:desert_sand", "default:dirt_with_snow"},
  1446. sidelen = 16,
  1447. noise_params = {
  1448. offset = 0,
  1449. scale = 0.035,
  1450. spread = {x = 100, y = 100, z = 100},
  1451. seed = 329,
  1452. octaves = 3,
  1453. persist = 0.6
  1454. },
  1455. y_max = 30,
  1456. y_min = 1,
  1457. decoration = "default:dry_shrub",
  1458. param2 = 4,
  1459. })
  1460. end
  1461. -- All mapgens except mgv6
  1462. local function register_grass_decoration(offset, scale, length)
  1463. minetest.register_decoration({
  1464. name = "default:grass_" .. length,
  1465. deco_type = "simple",
  1466. place_on = {"default:dirt_with_grass"},
  1467. sidelen = 16,
  1468. noise_params = {
  1469. offset = offset,
  1470. scale = scale,
  1471. spread = {x = 200, y = 200, z = 200},
  1472. seed = 329,
  1473. octaves = 3,
  1474. persist = 0.6
  1475. },
  1476. biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
  1477. y_max = 31000,
  1478. y_min = 1,
  1479. decoration = "default:grass_" .. length,
  1480. })
  1481. end
  1482. local function register_dry_grass_decoration(offset, scale, length)
  1483. minetest.register_decoration({
  1484. name = "default:dry_grass_" .. length,
  1485. deco_type = "simple",
  1486. place_on = {"default:dirt_with_dry_grass"},
  1487. sidelen = 16,
  1488. noise_params = {
  1489. offset = offset,
  1490. scale = scale,
  1491. spread = {x = 200, y = 200, z = 200},
  1492. seed = 329,
  1493. octaves = 3,
  1494. persist = 0.6
  1495. },
  1496. biomes = {"savanna"},
  1497. y_max = 31000,
  1498. y_min = 1,
  1499. decoration = "default:dry_grass_" .. length,
  1500. })
  1501. end
  1502. local function register_fern_decoration(seed, length)
  1503. minetest.register_decoration({
  1504. name = "default:fern_" .. length,
  1505. deco_type = "simple",
  1506. place_on = {"default:dirt_with_coniferous_litter"},
  1507. sidelen = 16,
  1508. noise_params = {
  1509. offset = 0,
  1510. scale = 0.2,
  1511. spread = {x = 100, y = 100, z = 100},
  1512. seed = seed,
  1513. octaves = 3,
  1514. persist = 0.7
  1515. },
  1516. biomes = {"coniferous_forest", "floatland_coniferous_forest"},
  1517. y_max = 31000,
  1518. y_min = 6,
  1519. decoration = "default:fern_" .. length,
  1520. })
  1521. end
  1522. function default.register_decorations()
  1523. -- Apple tree and log
  1524. minetest.register_decoration({
  1525. name = "default:apple_tree",
  1526. deco_type = "schematic",
  1527. place_on = {"default:dirt_with_grass"},
  1528. sidelen = 16,
  1529. noise_params = {
  1530. offset = 0.036,
  1531. scale = 0.022,
  1532. spread = {x = 250, y = 250, z = 250},
  1533. seed = 2,
  1534. octaves = 3,
  1535. persist = 0.66
  1536. },
  1537. biomes = {"deciduous_forest"},
  1538. y_max = 31000,
  1539. y_min = 1,
  1540. schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts",
  1541. flags = "place_center_x, place_center_z",
  1542. rotation = "random",
  1543. })
  1544. minetest.register_decoration({
  1545. name = "default:apple_log",
  1546. deco_type = "schematic",
  1547. place_on = {"default:dirt_with_grass"},
  1548. sidelen = 16,
  1549. noise_params = {
  1550. offset = 0.0018,
  1551. scale = 0.0011,
  1552. spread = {x = 250, y = 250, z = 250},
  1553. seed = 2,
  1554. octaves = 3,
  1555. persist = 0.66
  1556. },
  1557. biomes = {"deciduous_forest"},
  1558. y_max = 31000,
  1559. y_min = 1,
  1560. schematic = minetest.get_modpath("default") .. "/schematics/apple_log.mts",
  1561. flags = "place_center_x",
  1562. rotation = "random",
  1563. })
  1564. -- Emergent jungle tree
  1565. -- Due to 32 node height, altitude is limited and prescence depends on chunksize
  1566. local chunksize = tonumber(minetest.get_mapgen_setting("chunksize"))
  1567. if chunksize >= 5 then
  1568. minetest.register_decoration({
  1569. name = "default:emergent_jungle_tree",
  1570. deco_type = "schematic",
  1571. place_on = {"default:dirt_with_rainforest_litter"},
  1572. sidelen = 80,
  1573. noise_params = {
  1574. offset = 0.0,
  1575. scale = 0.0025,
  1576. spread = {x = 250, y = 250, z = 250},
  1577. seed = 2685,
  1578. octaves = 3,
  1579. persist = 0.7
  1580. },
  1581. biomes = {"rainforest"},
  1582. y_max = 32,
  1583. y_min = 1,
  1584. schematic = minetest.get_modpath("default") ..
  1585. "/schematics/emergent_jungle_tree.mts",
  1586. flags = "place_center_x, place_center_z",
  1587. rotation = "random",
  1588. place_offset_y = -4,
  1589. })
  1590. end
  1591. -- Jungle tree and log
  1592. minetest.register_decoration({
  1593. name = "default:jungle_tree",
  1594. deco_type = "schematic",
  1595. place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
  1596. sidelen = 80,
  1597. fill_ratio = 0.1,
  1598. biomes = {"rainforest", "rainforest_swamp"},
  1599. y_max = 31000,
  1600. y_min = -1,
  1601. schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
  1602. flags = "place_center_x, place_center_z",
  1603. rotation = "random",
  1604. })
  1605. minetest.register_decoration({
  1606. name = "default:jungle_log",
  1607. deco_type = "schematic",
  1608. place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
  1609. sidelen = 80,
  1610. fill_ratio = 0.005,
  1611. biomes = {"rainforest", "rainforest_swamp"},
  1612. y_max = 31000,
  1613. y_min = 1,
  1614. schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
  1615. flags = "place_center_x",
  1616. rotation = "random",
  1617. })
  1618. -- Taiga and temperate coniferous forest pine tree, small pine tree and log
  1619. minetest.register_decoration({
  1620. name = "default:pine_tree",
  1621. deco_type = "schematic",
  1622. place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
  1623. sidelen = 16,
  1624. noise_params = {
  1625. offset = 0.010,
  1626. scale = 0.048,
  1627. spread = {x = 250, y = 250, z = 250},
  1628. seed = 2,
  1629. octaves = 3,
  1630. persist = 0.66
  1631. },
  1632. biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
  1633. y_max = 31000,
  1634. y_min = 2,
  1635. schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
  1636. flags = "place_center_x, place_center_z",
  1637. })
  1638. minetest.register_decoration({
  1639. name = "default:small_pine_tree",
  1640. deco_type = "schematic",
  1641. place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
  1642. sidelen = 16,
  1643. noise_params = {
  1644. offset = 0.010,
  1645. scale = -0.048,
  1646. spread = {x = 250, y = 250, z = 250},
  1647. seed = 2,
  1648. octaves = 3,
  1649. persist = 0.66
  1650. },
  1651. biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
  1652. y_max = 31000,
  1653. y_min = 2,
  1654. schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
  1655. flags = "place_center_x, place_center_z",
  1656. })
  1657. minetest.register_decoration({
  1658. name = "default:pine_log",
  1659. deco_type = "schematic",
  1660. place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"},
  1661. sidelen = 80,
  1662. fill_ratio = 0.0018,
  1663. biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
  1664. y_max = 31000,
  1665. y_min = 1,
  1666. schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
  1667. flags = "place_center_x",
  1668. rotation = "random",
  1669. })
  1670. -- Acacia tree and log
  1671. minetest.register_decoration({
  1672. name = "default:acacia_tree",
  1673. deco_type = "schematic",
  1674. place_on = {"default:dirt_with_dry_grass"},
  1675. sidelen = 16,
  1676. noise_params = {
  1677. offset = 0,
  1678. scale = 0.002,
  1679. spread = {x = 250, y = 250, z = 250},
  1680. seed = 2,
  1681. octaves = 3,
  1682. persist = 0.66
  1683. },
  1684. biomes = {"savanna"},
  1685. y_max = 31000,
  1686. y_min = 1,
  1687. schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts",
  1688. flags = "place_center_x, place_center_z",
  1689. rotation = "random",
  1690. })
  1691. minetest.register_decoration({
  1692. name = "default:acacia_log",
  1693. deco_type = "schematic",
  1694. place_on = {"default:dirt_with_dry_grass"},
  1695. sidelen = 16,
  1696. noise_params = {
  1697. offset = 0,
  1698. scale = 0.001,
  1699. spread = {x = 250, y = 250, z = 250},
  1700. seed = 2,
  1701. octaves = 3,
  1702. persist = 0.66
  1703. },
  1704. biomes = {"savanna"},
  1705. y_max = 31000,
  1706. y_min = 1,
  1707. schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts",
  1708. flags = "place_center_x",
  1709. rotation = "random",
  1710. })
  1711. -- Aspen tree and log
  1712. minetest.register_decoration({
  1713. name = "default:aspen_tree",
  1714. deco_type = "schematic",
  1715. place_on = {"default:dirt_with_grass"},
  1716. sidelen = 16,
  1717. noise_params = {
  1718. offset = 0.0,
  1719. scale = -0.015,
  1720. spread = {x = 250, y = 250, z = 250},
  1721. seed = 2,
  1722. octaves = 3,
  1723. persist = 0.66
  1724. },
  1725. biomes = {"deciduous_forest"},
  1726. y_max = 31000,
  1727. y_min = 1,
  1728. schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts",
  1729. flags = "place_center_x, place_center_z",
  1730. })
  1731. minetest.register_decoration({
  1732. name = "default:aspen_log",
  1733. deco_type = "schematic",
  1734. place_on = {"default:dirt_with_grass"},
  1735. sidelen = 16,
  1736. noise_params = {
  1737. offset = 0.0,
  1738. scale = -0.0008,
  1739. spread = {x = 250, y = 250, z = 250},
  1740. seed = 2,
  1741. octaves = 3,
  1742. persist = 0.66
  1743. },
  1744. biomes = {"deciduous_forest"},
  1745. y_max = 31000,
  1746. y_min = 1,
  1747. schematic = minetest.get_modpath("default") .. "/schematics/aspen_log.mts",
  1748. flags = "place_center_x",
  1749. rotation = "random",
  1750. })
  1751. -- Large cactus
  1752. minetest.register_decoration({
  1753. name = "default:large_cactus",
  1754. deco_type = "schematic",
  1755. place_on = {"default:desert_sand"},
  1756. sidelen = 16,
  1757. noise_params = {
  1758. offset = -0.0003,
  1759. scale = 0.0009,
  1760. spread = {x = 200, y = 200, z = 200},
  1761. seed = 230,
  1762. octaves = 3,
  1763. persist = 0.6
  1764. },
  1765. biomes = {"desert"},
  1766. y_max = 31000,
  1767. y_min = 5,
  1768. schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts",
  1769. flags = "place_center_x",
  1770. rotation = "random",
  1771. })
  1772. -- Cactus
  1773. minetest.register_decoration({
  1774. name = "default:cactus",
  1775. deco_type = "simple",
  1776. place_on = {"default:desert_sand"},
  1777. sidelen = 16,
  1778. noise_params = {
  1779. offset = -0.0003,
  1780. scale = 0.0009,
  1781. spread = {x = 200, y = 200, z = 200},
  1782. seed = 230,
  1783. octaves = 3,
  1784. persist = 0.6
  1785. },
  1786. biomes = {"desert"},
  1787. y_max = 31000,
  1788. y_min = 5,
  1789. decoration = "default:cactus",
  1790. height = 2,
  1791. height_max = 5,
  1792. })
  1793. -- Papyrus
  1794. minetest.register_decoration({
  1795. name = "default:papyrus",
  1796. deco_type = "schematic",
  1797. place_on = {"default:dirt"},
  1798. sidelen = 16,
  1799. noise_params = {
  1800. offset = -0.3,
  1801. scale = 0.7,
  1802. spread = {x = 200, y = 200, z = 200},
  1803. seed = 354,
  1804. octaves = 3,
  1805. persist = 0.7
  1806. },
  1807. biomes = {"savanna_shore"},
  1808. y_max = 0,
  1809. y_min = 0,
  1810. schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
  1811. })
  1812. -- Bush
  1813. minetest.register_decoration({
  1814. name = "default:bush",
  1815. deco_type = "schematic",
  1816. place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
  1817. sidelen = 16,
  1818. noise_params = {
  1819. offset = -0.004,
  1820. scale = 0.01,
  1821. spread = {x = 100, y = 100, z = 100},
  1822. seed = 137,
  1823. octaves = 3,
  1824. persist = 0.7,
  1825. },
  1826. biomes = {"snowy_grassland", "grassland", "deciduous_forest",
  1827. "floatland_grassland"},
  1828. y_max = 31000,
  1829. y_min = 1,
  1830. schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
  1831. flags = "place_center_x, place_center_z",
  1832. })
  1833. -- Acacia bush
  1834. minetest.register_decoration({
  1835. name = "default:acacia_bush",
  1836. deco_type = "schematic",
  1837. place_on = {"default:dirt_with_dry_grass"},
  1838. sidelen = 16,
  1839. noise_params = {
  1840. offset = -0.004,
  1841. scale = 0.01,
  1842. spread = {x = 100, y = 100, z = 100},
  1843. seed = 90155,
  1844. octaves = 3,
  1845. persist = 0.7,
  1846. },
  1847. biomes = {"savanna"},
  1848. y_max = 31000,
  1849. y_min = 1,
  1850. schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts",
  1851. flags = "place_center_x, place_center_z",
  1852. })
  1853. -- Grasses
  1854. register_grass_decoration(-0.03, 0.09, 5)
  1855. register_grass_decoration(-0.015, 0.075, 4)
  1856. register_grass_decoration(0, 0.06, 3)
  1857. register_grass_decoration(0.015, 0.045, 2)
  1858. register_grass_decoration(0.03, 0.03, 1)
  1859. -- Dry grasses
  1860. register_dry_grass_decoration(0.01, 0.05, 5)
  1861. register_dry_grass_decoration(0.03, 0.03, 4)
  1862. register_dry_grass_decoration(0.05, 0.01, 3)
  1863. register_dry_grass_decoration(0.07, -0.01, 2)
  1864. register_dry_grass_decoration(0.09, -0.03, 1)
  1865. -- Ferns
  1866. register_fern_decoration(14936, 3)
  1867. register_fern_decoration(801, 2)
  1868. register_fern_decoration(5, 1)
  1869. -- Junglegrass
  1870. minetest.register_decoration({
  1871. name = "default:junglegrass",
  1872. deco_type = "simple",
  1873. place_on = {"default:dirt_with_rainforest_litter"},
  1874. sidelen = 80,
  1875. fill_ratio = 0.1,
  1876. biomes = {"rainforest"},
  1877. y_max = 31000,
  1878. y_min = 1,
  1879. decoration = "default:junglegrass",
  1880. })
  1881. -- Dry shrub
  1882. minetest.register_decoration({
  1883. name = "default:dry_shrub",
  1884. deco_type = "simple",
  1885. place_on = {"default:desert_sand",
  1886. "default:sand", "default:silver_sand"},
  1887. sidelen = 16,
  1888. noise_params = {
  1889. offset = 0,
  1890. scale = 0.02,
  1891. spread = {x = 200, y = 200, z = 200},
  1892. seed = 329,
  1893. octaves = 3,
  1894. persist = 0.6
  1895. },
  1896. biomes = {"desert", "sandstone_desert", "cold_desert"},
  1897. y_max = 31000,
  1898. y_min = 2,
  1899. decoration = "default:dry_shrub",
  1900. param2 = 4,
  1901. })
  1902. -- Marram grass
  1903. minetest.register_decoration({
  1904. name = "default:marram_grass",
  1905. deco_type = "simple",
  1906. place_on = {"default:sand"},
  1907. sidelen = 4,
  1908. noise_params = {
  1909. offset = -0.4,
  1910. scale = 3.0,
  1911. spread = {x = 16, y = 16, z = 16},
  1912. seed = 513337,
  1913. octaves = 1,
  1914. persist = 0.5,
  1915. flags = "absvalue"
  1916. },
  1917. biomes = {"coniferous_forest_dunes", "grassland_dunes"},
  1918. y_max = 5,
  1919. y_min = 4,
  1920. decoration = {
  1921. "default:marram_grass_1",
  1922. "default:marram_grass_2",
  1923. "default:marram_grass_3",
  1924. },
  1925. })
  1926. -- Coral reef
  1927. minetest.register_decoration({
  1928. name = "default:corals",
  1929. deco_type = "schematic",
  1930. place_on = {"default:sand"},
  1931. noise_params = {
  1932. offset = -0.15,
  1933. scale = 0.1,
  1934. spread = {x = 100, y = 100, z = 100},
  1935. seed = 7013,
  1936. octaves = 3,
  1937. persist = 1,
  1938. },
  1939. biomes = {
  1940. "desert_ocean",
  1941. "savanna_ocean",
  1942. "rainforest_ocean",
  1943. },
  1944. y_max = -2,
  1945. y_min = -8,
  1946. schematic = minetest.get_modpath("default") .. "/schematics/corals.mts",
  1947. flags = "place_center_x, place_center_z",
  1948. rotation = "random",
  1949. })
  1950. -- Kelp
  1951. minetest.register_decoration({
  1952. name = "default:kelp",
  1953. deco_type = "simple",
  1954. place_on = {"default:sand"},
  1955. place_offset_y = -1,
  1956. sidelen = 16,
  1957. noise_params = {
  1958. offset = -0.04,
  1959. scale = 0.1,
  1960. spread = {x = 200, y = 200, z = 200},
  1961. seed = 87112,
  1962. octaves = 3,
  1963. persist = 0.7
  1964. },
  1965. biomes = {
  1966. "taiga_ocean",
  1967. "snowy_grassland_ocean",
  1968. "grassland_ocean",
  1969. "coniferous_forest_ocean",
  1970. "deciduous_forest_ocean",
  1971. "sandstone_desert_ocean",
  1972. "cold_desert_ocean"},
  1973. y_max = -5,
  1974. y_min = -10,
  1975. flags = "force_placement",
  1976. decoration = "default:sand_with_kelp",
  1977. param2 = 48,
  1978. param2_max = 96,
  1979. })
  1980. end
  1981. --
  1982. -- Detect mapgen, flags and parameters to select functions
  1983. --
  1984. -- Get setting or default
  1985. local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or
  1986. "mountains, ridges, nofloatlands, caverns"
  1987. local captures_float = string.match(mgv7_spflags, "floatlands")
  1988. local captures_nofloat = string.match(mgv7_spflags, "nofloatlands")
  1989. -- Get setting or default
  1990. -- Make global for mods to use to register floatland biomes
  1991. default.mgv7_floatland_level =
  1992. minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
  1993. default.mgv7_shadow_limit =
  1994. minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
  1995. minetest.clear_registered_biomes()
  1996. minetest.clear_registered_ores()
  1997. minetest.clear_registered_decorations()
  1998. local mg_name = minetest.get_mapgen_setting("mg_name")
  1999. if mg_name == "v6" then
  2000. default.register_mgv6_ores()
  2001. default.register_mgv6_decorations()
  2002. -- Need to check for 'nofloatlands' because that contains
  2003. -- 'floatlands' which makes the second condition true.
  2004. elseif mg_name == "v7" and
  2005. captures_float == "floatlands" and
  2006. captures_nofloat ~= "nofloatlands" then
  2007. -- Mgv7 with floatlands and floatland biomes
  2008. default.register_biomes(default.mgv7_shadow_limit - 1)
  2009. default.register_floatland_biomes(
  2010. default.mgv7_floatland_level, default.mgv7_shadow_limit)
  2011. default.register_ores()
  2012. default.register_decorations()
  2013. else
  2014. default.register_biomes(31000)
  2015. default.register_ores()
  2016. default.register_decorations()
  2017. end