summaryrefslogtreecommitdiff
path: root/bedrock/mapgen.lua
diff options
context:
space:
mode:
Diffstat (limited to 'bedrock/mapgen.lua')
-rw-r--r--bedrock/mapgen.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/bedrock/mapgen.lua b/bedrock/mapgen.lua
new file mode 100644
index 0000000..995bfb0
--- /dev/null
+++ b/bedrock/mapgen.lua
@@ -0,0 +1,33 @@
+
+local bedrock_depth = tonumber(minetest.setting_get("bedrock_depth")) or -30912
+local bedrock_height = tonumber(minetest.setting_get("bedrock_height")) or 5
+
+minetest.register_on_generated(function(minp, maxp)
+ if minp.y > bedrock_depth + bedrock_height or maxp.y < bedrock_depth then
+ return
+ end
+
+ local vm, mine, maxe = minetest.get_mapgen_object("voxelmanip")
+ local area = VoxelArea:new({MinEdge=mine, MaxEdge=maxe})
+ local data = vm:get_data()
+
+ local random = math.random
+
+ local c_bedrock = minetest.get_content_id("bedrock:bedrock")
+
+ local highest = math.min(bedrock_depth + bedrock_height, maxe.y)
+ local lowest = math.max(bedrock_depth, mine.y)
+
+ for y = lowest, highest do
+ for x = mine.x, maxe.x do
+ for z = mine.z, maxe.z do
+ if random(0, y - bedrock_depth) == 0 then
+ data[area:index(x, y, z)] = c_bedrock
+ end
+ end
+ end
+ end
+ vm:set_data(data)
+ vm:write_to_map()
+end)
+