Repixture/mods/rp_default/mapgen_ores.lua

613 lines
16 KiB
Lua

--[[ ORES ]]
local mg_name = minetest.get_mapgen_setting("mg_name")
-- Graphite ore
default.register_ore( -- Common above sea level mainly
{
ore_type = "scatter",
ore = "rp_default:stone_with_graphite",
wherein = "rp_default:stone",
clust_scarcity = 9*9*9,
clust_num_ores = 8,
clust_size = 8,
y_min = -8,
y_max = 32,
})
default.register_ore( -- Slight scattering deeper down
{
ore_type = "scatter",
ore = "rp_default:stone_with_graphite",
wherein = "rp_default:stone",
clust_scarcity = 13*13*13,
clust_num_ores = 6,
clust_size = 8,
y_min = default.GLOBAL_Y_MIN,
y_max = -32,
})
-- Coal ore
default.register_ore( -- Even distribution
{
ore_type = "scatter",
ore = "rp_default:stone_with_coal",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 8,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = 32,
})
default.register_ore( -- Dense sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_coal",
wherein = "rp_default:stone",
clust_scarcity = 7*7*7,
clust_num_ores = 10,
clust_size = 8,
y_min = -40,
y_max = -32,
})
default.register_ore( -- Deep ore sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_coal",
wherein = "rp_default:stone",
clust_scarcity = 6*6*6,
clust_num_ores = 26,
clust_size = 12,
y_min = -130,
y_max = -120,
})
-- Iron ore
default.register_ore( -- Even distribution
{
ore_type = "scatter",
ore = "rp_default:stone_with_iron",
wherein = "rp_default:stone",
clust_scarcity = 12*12*12,
clust_num_ores = 4,
clust_size = 3,
y_min = default.GLOBAL_Y_MIN,
y_max = -8,
})
default.register_ore( -- Dense sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_iron",
wherein = "rp_default:stone",
clust_scarcity = 8*8*8,
clust_num_ores = 20,
clust_size = 12,
y_min = -32,
y_max = -24,
})
default.register_ore( -- Dense sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_iron",
wherein = "rp_default:stone",
clust_scarcity = 7*7*7,
clust_num_ores = 17,
clust_size = 6,
y_min = -80,
y_max = -60,
})
-- Tin ore
default.register_ore( -- Even distribution
{
ore_type = "scatter",
ore = "rp_default:stone_with_tin",
wherein = "rp_default:stone",
clust_scarcity = 14*14*14,
clust_num_ores = 8,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = -100,
})
default.register_ore( -- Dense sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_tin",
wherein = "rp_default:stone",
clust_scarcity = 7*7*7,
clust_num_ores = 10,
clust_size = 6,
y_min = -150,
y_max = -140,
})
-- Copper ore
default.register_ore( -- Begin sheet
{
ore_type = "scatter",
ore = "rp_default:stone_with_copper",
wherein = "rp_default:stone",
clust_scarcity = 6*6*6,
clust_num_ores = 12,
clust_size = 5,
y_min = -90,
y_max = -80,
})
default.register_ore( -- Rare even distribution
{
ore_type = "scatter",
ore = "rp_default:stone_with_copper",
wherein = "rp_default:stone",
clust_scarcity = 13*13*13,
clust_num_ores = 10,
clust_size = 5,
y_min = default.GLOBAL_Y_MIN,
y_max = -90,
})
default.register_ore( -- Large clusters
{
ore_type = "scatter",
ore = "rp_default:stone_with_copper",
wherein = "rp_default:stone",
clust_scarcity = 8*8*8,
clust_num_ores = 22,
clust_size = 10,
y_min = -230,
y_max = -180,
})
-- Small gravel blobs
default.register_ore({
ore_type = "blob",
ore = "rp_default:gravel",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 33,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 58943,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
-- Small sand blobs
default.register_ore({
ore_type = "blob",
ore = "rp_default:sand",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 40,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 38943,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
-- Dirt, Dry Dirt and Swamp Dirt blobs.
-- These get generated depending on the biome.
-- The following code is to generate the list
-- of biomes that include either dirt, dry dirt or swamp dirt.
-- Returns a list of biomes that use the specified nodename
-- as its dirt blob, by using the data from
-- default.get_biome_info.
-- * nodename: A name of the node (a dirt node)
local get_dirt_biomes = function(nodename)
local biomes = default.get_core_biomes()
local out_biomes = {}
for b=1, #biomes do
local biome_info = default.get_biome_info(biomes[b])
-- Add biome to list iff it uses the specified node as dirt blob
if biome_info.dirt_blob ~= nil and biome_info.dirt_blob == nodename then
table.insert(out_biomes, biomes[b])
end
end
return out_biomes
end
local dirt_biomes = get_dirt_biomes("rp_default:dirt")
local dry_dirt_biomes = get_dirt_biomes("rp_default:dry_dirt")
local swamp_dirt_biomes = get_dirt_biomes("rp_default:swamp_dirt")
minetest.log("verbose", "[rp_default] List of builtin biomes with Dirt blobs: "..dump(dirt_biomes))
minetest.log("verbose", "[rp_default] List of builtin biomes with Dry Dirt blobs: "..dump(dry_dirt_biomes))
minetest.log("verbose", "[rp_default] List of builtin biomes with Swamp Dirt blobs: "..dump(swamp_dirt_biomes))
local np_dirtlike = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 98943,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
}
default.register_ore({
ore_type = "blob",
ore = "rp_default:dirt",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 33,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
biomes = dirt_biomes,
noise_params = np_dirtlike,
})
default.register_ore({
ore_type = "blob",
ore = "rp_default:dry_dirt",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 33,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
biomes = dry_dirt_biomes,
noise_params = np_dirtlike,
})
default.register_ore({
ore_type = "blob",
ore = "rp_default:swamp_dirt",
wherein = "rp_default:stone",
clust_scarcity = 10*10*10,
clust_num_ores = 33,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
biomes = swamp_dirt_biomes,
noise_params = np_dirtlike,
})
-- Liquid "ores"
local function spring_ore_np(seed)
return {
offset = 0,
scale = 1,
spread = {x=250, y=250, z=250},
seed = seed or 12345,
octaves = 3,
persist = 0.6,
lacunarity = 2,
flags = "defaults",
}
end
-- Water
default.register_ore( -- Springs
{
ore_type = "blob",
ore = "rp_default:water_source",
wherein = "rp_default:dirt_with_grass",
biomes = {"Grassland", "Dense Grassland"},
clust_scarcity = 26*26*26,
clust_num_ores = 1,
clust_size = 1,
y_min = 20,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(),
})
default.register_ore( -- Pools
{
ore_type = "blob",
ore = "rp_default:water_source",
wherein = "rp_default:dirt_with_grass",
biomes = {"Wilderness"},
clust_scarcity = 32*32*32,
clust_num_ores = 20,
clust_size = 6,
y_min = 10,
y_max = 30,
noise_params = spring_ore_np(),
})
if mg_name ~= "v6" then
-- Swamp Water
default.register_ore( -- Swamp (big springs)
{
ore_type = "blob",
ore = "rp_default:swamp_water_source",
wherein = {"rp_default:dirt_with_swamp_grass", "rp_default:swamp_dirt"},
biomes = {"Mixed Swamp", "Mixed Swamp Highland", "Papyrus Swamp", "Swamp Forest", "Swamp Forest Highland", "Swamp Meadow", "Swamp Meadow Highland"},
clust_scarcity = 7*7*7,
clust_num_ores = 10,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(13943),
})
default.register_ore( -- Swamp (medium springs)
{
ore_type = "blob",
ore = "rp_default:swamp_water_source",
wherein = {"rp_default:dirt_with_swamp_grass", "rp_default:swamp_dirt"},
biomes = {"Mixed Swamp", "Mixed Swamp Highland", "Papyrus Swamp", "Swamp Forest", "Swamp Forest Highland", "Swamp Meadow", "Swamp Meadow Highland"},
clust_scarcity = 5*5*5,
clust_num_ores = 8,
clust_size = 2,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(49494),
})
default.register_ore( -- Swamp (small springs)
{
ore_type = "blob",
ore = "rp_default:swamp_water_source",
wherein = {"rp_default:dirt_with_swamp_grass", "rp_default:swamp_dirt"},
biomes = {"Mixed Swamp", "Mixed Swamp Highland", "Papyrus Swamp", "Swamp Forest", "Swamp Forest Highland", "Swamp Meadow", "Swamp Meadow Highland"},
clust_scarcity = 6*6*6,
clust_num_ores = 1,
clust_size = 1,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(59330),
})
default.register_ore( -- Marsh
{
ore_type = "blob",
ore = "rp_default:swamp_water_source",
wherein = {"rp_default:dirt_with_grass", "rp_default:dirt"},
biomes = {"Marsh"},
clust_scarcity = 8*8*8,
clust_num_ores = 10,
clust_size = 6,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(),
})
-- Gravelly surface
default.register_ore(
{
ore_type = "blob",
ore = "rp_default:gravel",
wherein = "rp_default:dry_dirt",
biomes = {"Rocky Dryland"},
clust_scarcity = 8*8*8,
clust_size = 8,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
octaves = 1,
scale = 1,
offset = 0,
spread = { x = 100, y = 100, z = 100 },
lacunarity = 2.0,
persistence = 0.5,
seed = 43400,
},
})
default.register_ore(
{
ore_type = "blob",
ore = "rp_default:stone",
wherein = "rp_default:dry_dirt",
biomes = {"Rocky Dryland"},
clust_scarcity = 8*8*8,
clust_size = 7,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
octaves = 1,
scale = 1,
offset = 0,
spread = { x = 100, y = 100, z = 100 },
lacunarity = 2.0,
persistence = 0.5,
seed = 13940,
},
})
-- Landscape "ores"
default.register_ore( -- Dry Swamp (dirt with grass)
{
ore_type = "blob",
ore = "rp_default:dirt_with_grass",
wherein = {"rp_default:dirt_with_swamp_grass"},
biomes = {"Dry Swamp", "Dry Swamp Highland"},
clust_scarcity = 3*3*3,
clust_num_ores = 10,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(13943),
})
default.register_ore( -- Dry Swamp (dirt)
{
ore_type = "blob",
ore = "rp_default:dirt",
wherein = {"rp_default:swamp_dirt"},
biomes = {"Dry Swamp", "Dry Swamp Beach", "Dry Swamp Highland"},
clust_scarcity = 3*3*3,
clust_num_ores = 10,
clust_size = 4,
y_min = default.GLOBAL_Y_MIN,
y_max = default.GLOBAL_Y_MAX,
noise_params = spring_ore_np(13943),
})
default.register_ore(
{
ore_type = "scatter",
ore = "rp_default:dirt_with_dry_grass",
wherein = "rp_default:dry_dirt",
biomes = {"Savannic Wasteland"},
clust_scarcity = 6*6*6,
clust_size = 6,
clust_num_ores = 40,
y_min = 2,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
octaves = 1,
scale = 1,
offset = 0.1,
spread = { x = 100, y = 100, z = 100 },
lacunarity = 2.0,
persistence = 0.5,
seed = 12449,
},
})
default.register_ore(
{
ore_type = "blob",
ore = "rp_default:dirt_with_dry_grass",
wherein = "rp_default:dry_dirt",
biomes = {"Savannic Wasteland"},
clust_scarcity = 7*7*7,
clust_size = 4,
y_min = 2,
y_max = default.GLOBAL_Y_MAX,
noise_params = {
octaves = 2,
scale = 1,
offset = 0.2,
spread = { x = 100, y = 100, z = 100 },
lacunarity = 2.0,
persistence = 0.5,
seed = 12450,
},
})
default.register_ore(
{
ore_type = "scatter",
ore = "rp_default:stone_with_sulfur",
wherein = "rp_default:stone",
biomes = { "Rocky Dryland", "Wooded Dryland"},
clust_scarcity = 9*9*9,
clust_num_ores = 1,
clust_size = 1,
y_min = -8,
y_max = 32,
})
-- Underwater ground variations
default.register_ore({
ore_type = "blob",
ore = "rp_default:gravel",
wherein = {"rp_default:sand"},
clust_scarcity = 10*10*10,
clust_num_ores = 33,
clust_size = 4,
y_min = default.UNDERGROUND_Y_MAX+1,
y_max = 0,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 39393,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
default.register_ore({
ore_type = "blob",
ore = "rp_default:swamp_dirt",
wherein = {"rp_default:dirt"},
biomes = { "Mixed Swamp Underwater", "Papyrus Swamp Underwater", "Swamp Forest Underwater", "Swamp Meadow Underwater", "Dry Swamp Underwater" },
clust_scarcity = 8*8*8,
clust_num_ores = 40,
clust_size = 5,
y_min = -30,
y_max = 0,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 39393,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
default.register_ore({
ore_type = "blob",
ore = "rp_default:sand",
wherein = "rp_default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 40,
clust_size = 4,
y_min = default.UNDERGROUND_Y_MAX+1,
y_max = 0,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 40440,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
default.register_ore({
ore_type = "blob",
ore = "rp_default:dirt",
wherein = "rp_default:sand",
clust_scarcity = 15*15*15,
clust_num_ores = 40,
clust_size = 4,
y_min = default.UNDERGROUND_Y_MAX+1,
y_max = -3,
noise_params = {
offset = 0,
scale = 1,
spread = {x=150, y=150, z=150},
seed = 40440,
octaves = 3,
persist = 0.5,
lacunarity = 2,
flags = "defaults",
},
})
end