]> git.lizzy.rs Git - skycraft.git/blob - map.lua
Added offline ranks
[skycraft.git] / map.lua
1 skycraft.ores = skycraft.random:new()
2 skycraft.ores:add_choice("mcl_core:cobble", 1000)
3 skycraft.ores:add_choice("mcl_core:stone", 100)
4 skycraft.ores:add_choice("mcl_core:stone_with_coal", 25)
5 skycraft.ores:add_choice("mcl_core:stone_with_iron", 10)
6 skycraft.ores:add_choice("mcl_core:stone_with_gold", 5)
7 skycraft.ores:add_choice("mcl_core:stone_with_lapis", 5)
8 skycraft.ores:add_choice("mcl_core:stone_with_redstone", 5)
9 skycraft.ores:add_choice("mcl_core:stone_with_diamond", 1)
10 skycraft.ores:calc_csum()
11
12 minetest.register_abm({
13         nodenames = {"mcl_core:dirt_with_grass"},
14         interval = 300,
15         chance = 100,
16         action = function(pos, node)
17                 pos.y = pos.y + 1
18                 local light = minetest.get_node_light(pos) or 0
19                 if minetest.get_node(pos).name == "air" and light > 12 and not minetest.find_node_near(pos, 2, {"group:flora"}) then
20                         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"}
21                         minetest.set_node(pos, {name = flowers[math.random(#flowers)]})
22                 end
23         end
24 })
25
26 minetest.register_on_generated(function(minp, maxp)
27         if maxp.y < 1000 or minp.y > 5000 then return end
28         local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
29         local data = vm:get_data()
30         local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
31         local void_id = minetest.get_content_id("mcl_core:void")
32         local barrier_id = minetest.get_content_id("mcl_core:barrier")
33         for x = minp.x, maxp.x do
34                 for z = minp.z, maxp.z do
35                         local barrier = (math.mod(x, 62) == 0 or math.mod(z, 62) == 0)
36                         local void = (maxp.y < 1500)
37                         if barrier or void then
38                                 for y = minp.y, maxp.y do
39                                         local p_pos = area:index(x, y, z)
40                                         data[p_pos] = barrier and barrier_id or void_id
41                                 end
42                         end
43                 end
44         end
45         if maxp.y > 5000 then--or minp.y < 1000 then
46                 for x = minp.x, maxp.x do
47                         for z = minp.z, maxp.z do
48                                 local y = (maxp.y > 5000) and 1000 or 5000
49                                 local p_pos = area:index(x, y, z)
50                                 data[p_pos] = barrier_id
51                         end
52                 end
53         end
54         vm:set_data(data)
55         vm:calc_lighting()
56         vm:update_liquids()
57         vm:write_to_map()
58 end)
59
60 minetest.register_on_mods_loaded(function()
61         function mcl_worlds.is_in_void(pos)
62                 local res = minetest.get_node(vector.floor(pos)).name == "mcl_core:void"
63                 return res, res
64         end
65         for k, v in pairs(minetest.registered_abms) do
66                 if v.label == "Lava cooling" then
67                         local old_func = v.action
68                         v.action = function(pos, node, active_object_count, active_object_count_wider)
69                                 old_func(pos, node, active_object_count, active_object_count_wider)
70                                 if minetest.get_node(pos).name == "mcl_core:cobble" then
71                                         minetest.set_node(pos, {name = skycraft.ores:choose()})
72                                 end
73                         end
74                         break
75                 end
76         end
77 end)