mapgen.lua 52 KB

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