redsky_asteroids.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. if otherworlds.settings.redsky_asteroids.enable then
  2. -- Approximate realm limits
  3. local YMIN = otherworlds.settings.redsky_asteroids.YMIN or 6000
  4. local YMAX = otherworlds.settings.redsky_asteroids.YMAX or 7000
  5. -- Register on_generated function for this layer
  6. minetest.register_on_generated(otherworlds.asteroids.create_on_generated(YMIN, YMAX, {
  7. c_air = minetest.get_content_id("air"),
  8. c_obsidian = minetest.get_content_id("default:obsidian"),
  9. c_stone = minetest.get_content_id("asteroid:redstone"),
  10. c_cobble = minetest.get_content_id("air"),
  11. c_gravel = minetest.get_content_id("asteroid:redgravel"),
  12. c_dust = minetest.get_content_id("asteroid:reddust"),
  13. c_ironore = minetest.get_content_id("asteroid:ironore"),
  14. c_copperore = minetest.get_content_id("asteroid:copperore"),
  15. c_goldore = minetest.get_content_id("asteroid:goldore"),
  16. c_diamondore = minetest.get_content_id("asteroid:diamondore"),
  17. c_meseore = minetest.get_content_id("asteroid:meseore"),
  18. c_waterice = minetest.get_content_id("default:ice"),
  19. c_atmos = minetest.get_content_id("asteroid:atmos"),
  20. c_snowblock = minetest.get_content_id("default:snowblock"),
  21. }))
  22. -- Deco code for grass and crystal
  23. local TOPDECO = 200 -- how often surface decoration appears on top of asteroid cobble
  24. local crystal = {
  25. "crystals:ghost_crystal_1", "crystals:ghost_crystal_2",
  26. "crystals:red_crystal_1", "crystals:red_crystal_2",
  27. "crystals:rose_quartz_1", "crystals:rose_quartz_2",
  28. }
  29. -- Add surface decoration
  30. minetest.register_on_generated(function(minp, maxp)
  31. if minp.y < YMIN or maxp.y > YMAX then
  32. return
  33. end
  34. local bpos, ran
  35. local coal = minetest.find_nodes_in_area_under_air(minp, maxp,
  36. {"asteroid:redgravel"})
  37. for n = 1, #coal do
  38. bpos = {x = coal[n].x, y = coal[n].y + 1, z = coal[n].z }
  39. ran = math.random(TOPDECO)
  40. if ran == TOPDECO then -- crystals
  41. minetest.swap_node(bpos, {name = crystal[ math.random(1, #crystal) ] })
  42. end
  43. end
  44. end)
  45. end