aboutsummaryrefslogtreecommitdiff
path: root/map.lua
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-06-05 09:57:04 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-06-05 09:57:04 +0200
commita35cf885066b717d17a143a5ef01658616ed2331 (patch)
tree5ed5a7c9d3bc98016725de1d9029331a5a5e9349 /map.lua
downloadskycraft-a35cf885066b717d17a143a5ef01658616ed2331.tar.xz
Initial Commit
Diffstat (limited to 'map.lua')
-rw-r--r--map.lua77
1 files changed, 77 insertions, 0 deletions
diff --git a/map.lua b/map.lua
new file mode 100644
index 0000000..946f1ca
--- /dev/null
+++ b/map.lua
@@ -0,0 +1,77 @@
+skycraft.ores = skycraft.random:new()
+skycraft.ores:add_choice("mcl_core:cobble", 1000)
+skycraft.ores:add_choice("mcl_core:stone", 100)
+skycraft.ores:add_choice("mcl_core:stone_with_coal", 25)
+skycraft.ores:add_choice("mcl_core:stone_with_iron", 10)
+skycraft.ores:add_choice("mcl_core:stone_with_gold", 5)
+skycraft.ores:add_choice("mcl_core:stone_with_lapis", 5)
+skycraft.ores:add_choice("mcl_core:stone_with_redstone", 5)
+skycraft.ores:add_choice("mcl_core:stone_with_diamond", 1)
+skycraft.ores:calc_csum()
+
+minetest.register_abm({
+ nodenames = {"mcl_core:dirt_with_grass"},
+ interval = 300,
+ chance = 100,
+ action = function(pos, node)
+ pos.y = pos.y + 1
+ local light = minetest.get_node_light(pos) or 0
+ if minetest.get_node(pos).name == "air" and light > 12 and not minetest.find_node_near(pos, 2, {"group:flora"}) then
+ local flowers = {"mcl_flowers:blue_orchid", "mcl_flowers:azure_bluet", "mcl_flowers:allium", "mcl_flowers:tulip_white", "mcl_flowers:tulip_red", "mcl_flowers:tulip_pink", "mcl_flowers:tulip_orange", "mcl_flowers:oxeye_daisy", "mcl_flowers:dandelion", "mcl_flowers:poppy", "mcl_flowers:fern", "mcl_flowers:tallgrass", "mcl_flowers:double_tallgrass"}
+ minetest.set_node(pos, {name = flowers[math.random(#flowers)]})
+ end
+ end
+})
+
+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 then--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
+ for k, v in pairs(minetest.registered_abms) do
+ if v.label == "Lava cooling" then
+ local old_func = v.action
+ v.action = function(pos, node, active_object_count, active_object_count_wider)
+ old_func(pos, node, active_object_count, active_object_count_wider)
+ if minetest.get_node(pos).name == "mcl_core:cobble" then
+ minetest.set_node(pos, {name = skycraft.ores:choose()})
+ end
+ end
+ break
+ end
+ end
+end)