aboutsummaryrefslogtreecommitdiff
path: root/mapgen.lua
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-06-07 10:50:23 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-06-07 10:50:23 +0200
commitcc84f066b001f4ea875b115ace6d533d1bc8b4f3 (patch)
tree250a5cb8833b88229ac9fb18fee898b777cc73ea /mapgen.lua
parent9a684467a7a7ac85e03f06560dbeb1b786c210aa (diff)
downloadskycraft-cc84f066b001f4ea875b115ace6d533d1bc8b4f3.tar.xz
Modularisation
Diffstat (limited to 'mapgen.lua')
-rw-r--r--mapgen.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/mapgen.lua b/mapgen.lua
new file mode 100644
index 0000000..fede7b7
--- /dev/null
+++ b/mapgen.lua
@@ -0,0 +1,40 @@
+minetest.register_on_generated(function(minp, maxp)
+ if maxp.y < 1000 or minp.y > 5000 then return end
+ local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
+ local data = vm:get_data()
+ local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
+ local void_id = minetest.get_content_id("mcl_core:void")
+ local barrier_id = minetest.get_content_id("mcl_core:barrier")
+ for x = minp.x, maxp.x do
+ for z = minp.z, maxp.z do
+ local barrier = (math.mod(x, 62) == 0 or math.mod(z, 62) == 0)
+ local void = (maxp.y < 1500)
+ if barrier or void then
+ for y = minp.y, maxp.y do
+ local p_pos = area:index(x, y, z)
+ data[p_pos] = barrier and barrier_id or void_id
+ end
+ end
+ end
+ end
+ if maxp.y > 5000 or minp.y < 1000 then
+ for x = minp.x, maxp.x do
+ for z = minp.z, maxp.z do
+ local y = (maxp.y > 5000) and 1000 or 5000
+ local p_pos = area:index(x, y, z)
+ data[p_pos] = barrier_id
+ end
+ end
+ end
+ vm:set_data(data)
+ vm:calc_lighting()
+ vm:update_liquids()
+ vm:write_to_map()
+end)
+
+minetest.register_on_mods_loaded(function()
+ function mcl_worlds.is_in_void(pos)
+ local res = minetest.get_node(vector.floor(pos)).name == "mcl_core:void"
+ return res, res
+ end
+end)