mapgen.lua 51 KB

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