mapgen.lua 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. local path = minetest.get_modpath("decorations_sea")
  2. local warm_biomes = {
  3. "desert_ocean",
  4. "sandstone_desert_ocean",
  5. "savanna_shore",
  6. "savanna_ocean",
  7. "rainforest_ocean",
  8. "mesa",
  9. "mesa_ocean",
  10. "jumble",
  11. "jumble_ocean",
  12. "junglee",
  13. "junglee_ocean",
  14. "grove",
  15. "grove_ocean",
  16. "mushroom",
  17. "mushroom_ocean",
  18. "sandstone",
  19. "sandstone_ocean",
  20. "savannah",
  21. "savannah_ocean",
  22. "quicksand",
  23. "fiery",
  24. "fiery_ocean",
  25. "sandclay",
  26. "swamp",
  27. "swamp_ocean",
  28. "desert",
  29. }
  30. local temperate_biomes = {
  31. "grassland",
  32. "deciduous_forest",
  33. "grassland_ocean",
  34. "coniferous_forest_ocean",
  35. "deciduous_forest_shore",
  36. "decidious_forest_ocean",
  37. "cold_desert_ocean",
  38. "sakura",
  39. "sakura_ocean",
  40. "grassy",
  41. "grassy_ocean",
  42. "grayness",
  43. "grayness_ocean",
  44. "grassytwo",
  45. "grassytwo_ocean",
  46. "prairie",
  47. "prairie_ocean",
  48. "plains",
  49. "plains_ocean",
  50. "bamboo",
  51. "clearing",
  52. }
  53. local frozen_biomes = {
  54. "icesheet_ocean",
  55. "tundra_beach",
  56. "tundra_ocean",
  57. "taiga_ocean",
  58. "alpine",
  59. "snowy",
  60. "snowy_grassland_ocean",
  61. "glacier",
  62. "glacier_ocean",
  63. "frost",
  64. "frost_ocean",
  65. }
  66. local corals = {
  67. "blue",
  68. "crimson",
  69. "green",
  70. "orange",
  71. "pink",
  72. "red",
  73. "violet",
  74. "yellow"
  75. }
  76. local function register_coral_decoration(schemname, noisedef, biomes)
  77. minetest.register_decoration( {
  78. deco_type = "schematic",
  79. place_on = "default:sand",
  80. sidelen = 16,
  81. noise_params = noisedef,
  82. biomes = biomes,
  83. y_min = -32,
  84. y_max = -4,
  85. spawn_by = "default:water_source",
  86. num_spawn_by = 1,
  87. flags = "force_placement, all_floors",
  88. schematic = schemname,
  89. rotation = "random",
  90. place_offset_y = 0,
  91. })
  92. end
  93. local function register_tall_grass_decoration(name, hmin, hmax, noisedef, biomes)
  94. minetest.register_decoration({
  95. deco_type = "simple",
  96. place_on = "default:sand",
  97. sidelen = 16,
  98. noise_params = noisedef,
  99. biomes = biomes,
  100. y_min = -32,
  101. y_max = -hmax,
  102. spawn_by = "default:water_source",
  103. num_spawn_by = 1,
  104. flags = "force_placement, all_floors",
  105. decoration = name,
  106. param2 = hmin*16,
  107. param2_max = hmax*16,
  108. place_offset_y = -1,
  109. })
  110. end
  111. local function register_simple_decoration(name, noisedef, biomes)
  112. minetest.register_decoration({
  113. deco_type = "simple",
  114. place_on = "default:sand",
  115. sidelen = 16,
  116. noise_params = noisedef,
  117. biomes = biomes,
  118. y_min = -32,
  119. y_max = -1,
  120. spawn_by = "default:water_source",
  121. num_spawn_by = 1,
  122. flags = "force_placement, all_floors",
  123. decoration = name,
  124. param2 = 16,
  125. place_offset_y = -1,
  126. })
  127. end
  128. local function register_sand_decoration(name, fill_ratio, ymax, biomes)
  129. minetest.register_decoration({
  130. deco_type = "simple",
  131. place_on = "default:sand",
  132. sidelen = 16,
  133. fill_ratio = fill_ratio,
  134. biomes = biomes,
  135. y_min = -32,
  136. y_max = ymax,
  137. spawn_by = "default:water_source",
  138. num_spawn_by = 1,
  139. flags = "force_placement, all_floors",
  140. decoration = name,
  141. place_offset_y = -1,
  142. })
  143. end
  144. local coral_noise = {
  145. offset = -0.0115,
  146. scale = 0.024,
  147. spread = {x = 100, y = 100, z = 100},
  148. seed = 111,
  149. octaves = 5,
  150. persist = 0.6
  151. }
  152. local single_coral_noise = {
  153. offset = 0.01,
  154. scale = 0.024,
  155. spread = {x = 100, y = 100, z = 100},
  156. seed = 111,
  157. octaves = 5,
  158. persist = 0.6
  159. }
  160. local sea_pickle_noise = {
  161. offset = 0.005,
  162. scale = 0.024,
  163. spread = {x = 100, y = 100, z = 100},
  164. seed = 111,
  165. octaves = 5,
  166. persist = 0.6
  167. }
  168. local grass_noise = {
  169. offset = 0.025,
  170. scale = 0.024,
  171. spread = {x = 100, y = 100, z = 100},
  172. seed = 1411,
  173. octaves = 5,
  174. persist = 0.6
  175. }
  176. local sparce_grass_noise = {
  177. offset = 0.015,
  178. scale = 0.024,
  179. spread = {x = 100, y = 100, z = 100},
  180. seed = 1411,
  181. octaves = 5,
  182. persist = 0.6
  183. }
  184. local short_grass_noise = {
  185. offset = 0.075,
  186. scale = 0.024,
  187. spread = {x = 100, y = 100, z = 100},
  188. seed = 25225,
  189. octaves = 5,
  190. persist = 0.6
  191. }
  192. local sand_decorations_list = {
  193. {"decorations_sea:seashell_01_node", 0.01, 1, warm_biomes},
  194. {"decorations_sea:seashell_02_node", 0.01, 1, warm_biomes},
  195. {"decorations_sea:seashell_03_node", 0.01, 1, warm_biomes},
  196. {"decorations_sea:starfish_01_node", 0.005, 1, warm_biomes},
  197. {"decorations_sea:starfish_02_node", 0.005, 1, warm_biomes},
  198. {"decorations_sea:seashell_01_node", 0.002, 1, temperate_biomes},
  199. {"decorations_sea:seashell_02_node", 0.002, 1, temperate_biomes},
  200. {"decorations_sea:seashell_03_node", 0.002, 1, temperate_biomes},
  201. }
  202. local tall_grass_list = {
  203. {"decorations_sea:seagrass_01", 4, 7, sparce_grass_noise, frozen_biomes},
  204. {"decorations_sea:seagrass_01", 3, 4, sparce_grass_noise, frozen_biomes},
  205. {"decorations_sea:seagrass_01", 2, 2, sparce_grass_noise, frozen_biomes},
  206. {"decorations_sea:seagrass_02", 4, 7, grass_noise, warm_biomes},
  207. {"decorations_sea:seagrass_02", 3, 4, grass_noise, warm_biomes},
  208. {"decorations_sea:seagrass_02", 2, 2, grass_noise, warm_biomes},
  209. {"decorations_sea:seagrass_03", 4, 7, grass_noise, temperate_biomes},
  210. {"decorations_sea:seagrass_03", 3, 4, grass_noise, temperate_biomes},
  211. {"decorations_sea:seagrass_03", 2, 2, grass_noise, temperate_biomes},
  212. {"decorations_sea:seagrass_03", 4, 7, grass_noise, warm_biomes},
  213. {"decorations_sea:seagrass_03", 3, 4, grass_noise, warm_biomes},
  214. {"decorations_sea:seagrass_03", 2, 2, grass_noise, warm_biomes},
  215. }
  216. local simple_decoration_list = {
  217. {"decorations_sea:seagrass_01", sparce_grass_noise, frozen_biomes},
  218. {"decorations_sea:seagrass_02", grass_noise, warm_biomes},
  219. {"decorations_sea:seagrass_03", grass_noise, temperate_biomes},
  220. {"decorations_sea:seagrass_03", grass_noise, warm_biomes},
  221. {"decorations_sea:seagrass_04", short_grass_noise},
  222. {"decorations_sea:seagrass_05", short_grass_noise, warm_biomes},
  223. {"decorations_sea:seagrass_06", short_grass_noise, warm_biomes},
  224. {"decorations_sea:coral_plantlike_01", single_coral_noise, warm_biomes},
  225. {"decorations_sea:coral_plantlike_02", single_coral_noise, warm_biomes},
  226. {"decorations_sea:coral_plantlike_03", single_coral_noise, warm_biomes},
  227. {"decorations_sea:coral_plantlike_04", single_coral_noise, warm_biomes},
  228. {"decorations_sea:coral_plantlike_05", single_coral_noise, warm_biomes},
  229. {"decorations_sea:sea_pickle", sea_pickle_noise, warm_biomes},
  230. }
  231. for _,v in pairs(corals) do
  232. for i = 1, 3 do
  233. local schem_path = path .. "/schematics/coral_" .. v .. "_0" .. i .. ".mts"
  234. register_coral_decoration(schem_path, coral_noise, warm_biomes)
  235. end
  236. end
  237. for _,v in pairs(simple_decoration_list) do
  238. register_simple_decoration(v[1], v[2], v[3])
  239. end
  240. for _,v in pairs(tall_grass_list) do
  241. register_tall_grass_decoration(v[1], v[2], v[3], v[4], v[5])
  242. end
  243. for _,v in pairs(sand_decorations_list) do
  244. register_sand_decoration(v[1], v[2], v[3], v[4], v[5])
  245. end