212 lines
4.5 KiB
Lua
212 lines
4.5 KiB
Lua
-- Clear stuff
|
|
|
|
minetest.clear_registered_biomes()
|
|
minetest.clear_registered_ores()
|
|
minetest.clear_registered_decorations()
|
|
|
|
|
|
-- Set mapgen settings
|
|
|
|
minetest.set_mapgen_setting("mg_name", "v7", true)
|
|
minetest.set_mapgen_setting("water_level", -15, true)
|
|
minetest.set_mapgen_setting("mg_flags", "caves,nodungeons,light,nodecorations", true)
|
|
|
|
|
|
-- Register biome
|
|
|
|
minetest.register_biome({
|
|
name = "moon",
|
|
--node_dust = "",
|
|
node_top = "moonrealm:dust",
|
|
depth_top = 1,
|
|
node_filler = "moonrealm:dust",
|
|
depth_filler = 2,
|
|
node_stone = "moonrealm:stone",
|
|
--node_water_top = "",
|
|
--depth_water_top = ,
|
|
node_water = "moonrealm:dust",
|
|
--node_river_water = "",
|
|
--node_riverbed = "",
|
|
--depth_riverbed = ,
|
|
y_min = -31000,
|
|
y_max = 31000,
|
|
heat_point = 50,
|
|
humidity_point = 50,
|
|
})
|
|
|
|
|
|
-- Register ores
|
|
|
|
-- Iron
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:ironore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 7 * 7 * 7,
|
|
clust_num_ores = 5,
|
|
clust_size = 3,
|
|
y_min = -31000,
|
|
y_max = 0,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:ironore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 24 * 24 * 24,
|
|
clust_num_ores = 27,
|
|
clust_size = 6,
|
|
y_min = -31000,
|
|
y_max = -64,
|
|
})
|
|
|
|
-- Copper
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:copperore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 12 * 12 * 12,
|
|
clust_num_ores = 4,
|
|
clust_size = 3,
|
|
y_min = -63,
|
|
y_max = -16,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:copperore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 9 * 9 * 9,
|
|
clust_num_ores = 5,
|
|
clust_size = 3,
|
|
y_min = -31000,
|
|
y_max = -64,
|
|
})
|
|
|
|
-- Gold
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:goldore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 15 * 15 * 15,
|
|
clust_num_ores = 3,
|
|
clust_size = 2,
|
|
y_min = -255,
|
|
y_max = -64,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:goldore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 13 * 13 * 13,
|
|
clust_num_ores = 5,
|
|
clust_size = 3,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
-- Mese block
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "default:mese",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 18 * 18 * 18,
|
|
clust_num_ores = 3,
|
|
clust_size = 2,
|
|
y_min = -255,
|
|
y_max = -64,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "default:mese",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 14 * 14 * 14,
|
|
clust_num_ores = 5,
|
|
clust_size = 3,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
-- Diamond
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:diamondore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 17 * 17 * 17,
|
|
clust_num_ores = 4,
|
|
clust_size = 3,
|
|
y_min = -255,
|
|
y_max = -128,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:diamondore",
|
|
wherein = "moonrealm:stone",
|
|
clust_scarcity = 15 * 15 * 15,
|
|
clust_num_ores = 4,
|
|
clust_size = 3,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
-- Water ice
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "moonrealm:waterice",
|
|
wherein = "moonrealm:dust",
|
|
clust_scarcity = 13 * 13 * 13,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = -31000,
|
|
y_max = 0,
|
|
})
|
|
|
|
|
|
-- Localise data buffer
|
|
|
|
local dbuf = {}
|
|
|
|
|
|
-- On generated function
|
|
-- Convert air nodes to mod vacuum nodes
|
|
|
|
minetest.register_on_generated(function(minp, maxp, seed)
|
|
local x0 = minp.x
|
|
local y0 = minp.y
|
|
local z0 = minp.z
|
|
local x1 = maxp.x
|
|
local y1 = maxp.y
|
|
local z1 = maxp.z
|
|
|
|
local c_air = minetest.CONTENT_AIR
|
|
local c_vacuum = minetest.get_content_id("moonrealm:vacuum")
|
|
|
|
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
|
local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax}
|
|
local data = vm:get_data(dbuf)
|
|
|
|
for z = z0, z1 do
|
|
for y = y0 - 1, y1 + 1 do
|
|
local vi = area:index(x0, y, z)
|
|
for x = x0, x1 do
|
|
if data[vi] == c_air then
|
|
data[vi] = c_vacuum
|
|
end
|
|
vi = vi + 1
|
|
end
|
|
end
|
|
end
|
|
|
|
vm:set_data(data)
|
|
vm:write_to_map(data)
|
|
end)
|