Default / flowers: New biomes. Limit dirt blobs. Add corals, bushes

Biomes:
Add 'sandstone desert', 'cold desert', 'snowy grassland'.
Rename 'glacier' biome to 'icesheet' biome.
Rename non-swamp 'swamp' biomes to 'shore' biomes.
Remove 'sandstone grassland' biome.
Rename 'stone grassland' biome to 'grassland' biome.
Edit biome points for improved similarity to Whittaker classification.
Change 'tundra' to bare stone with snowblocks.
Make dirt 'swamp' / 'shore' less deep.

Ores:
Make dirt blob ore biome-specific, limit to dirt biomes.

Decorations:
Make mushroom noise spread match that of appletrees as originally intended,
to have mushrooms spawn in darker thicker forest areas.
Add coral reefs in warm oceans.
Add bushes and acacia bushes.
Jungletrees in deeper water for larger swamps.

Register flower mod decorations in singlenode mapgen for use by
minetest.generate_registered_decorations, as in default/mapgen.lua.
This commit is contained in:
paramat 2016-12-01 03:15:15 +00:00
parent 0413cb67b8
commit 42afe679a7
5 changed files with 311 additions and 173 deletions

@ -43,6 +43,7 @@ minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebr
--
function default.register_ores()
minetest.clear_registered_ores()
-- Blob ores
-- These first to avoid other ores in blobs
@ -109,6 +110,8 @@ function default.register_ores()
octaves = 1,
persist = 0.0
},
biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
"deciduous_forest", "savanna", "rainforest"}
})
-- Gravel
@ -379,10 +382,10 @@ end
function default.register_biomes()
minetest.clear_registered_biomes()
-- Permanent ice
-- Icesheet
minetest.register_biome({
name = "glacier",
name = "icesheet",
node_dust = "default:snowblock",
node_top = "default:snowblock",
depth_top = 1,
@ -398,36 +401,36 @@ function default.register_biomes()
y_min = -8,
y_max = 31000,
heat_point = 0,
humidity_point = 50,
humidity_point = 73,
})
minetest.register_biome({
name = "glacier_ocean",
name = "icesheet_ocean",
node_dust = "default:snowblock",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
node_water_top = "default:ice",
depth_water_top = 10,
--node_water = "",
--node_river_water = "",
y_min = -112,
y_max = -9,
heat_point = 0,
humidity_point = 50,
humidity_point = 73,
})
-- Cold
-- Tundra
minetest.register_biome({
name = "tundra",
--node_dust = "",
node_top = "default:dirt_with_snow",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
node_dust = "default:snowblock",
--node_top = ,
--depth_top = ,
--node_filler = ,
--depth_filler = ,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
@ -437,8 +440,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 2,
y_max = 31000,
heat_point = 15,
humidity_point = 35,
heat_point = 0,
humidity_point = 40,
})
minetest.register_biome({
@ -457,8 +460,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -3,
y_max = 1,
heat_point = 15,
humidity_point = 35,
heat_point = 0,
humidity_point = 40,
})
minetest.register_biome({
@ -477,10 +480,11 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -112,
y_max = -4,
heat_point = 15,
humidity_point = 35,
heat_point = 0,
humidity_point = 40,
})
-- Taiga
minetest.register_biome({
name = "taiga",
@ -498,8 +502,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 2,
y_max = 31000,
heat_point = 15,
humidity_point = 65,
heat_point = 25,
humidity_point = 70,
})
minetest.register_biome({
@ -518,16 +522,16 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -112,
y_max = 1,
heat_point = 15,
humidity_point = 65,
heat_point = 25,
humidity_point = 70,
})
-- Temperate
-- Snowy grassland
minetest.register_biome({
name = "stone_grassland",
--node_dust = "",
node_top = "default:dirt_with_grass",
name = "snowy_grassland",
node_dust = "default:snow",
node_top = "default:dirt_with_snow",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
@ -538,34 +542,14 @@ function default.register_biomes()
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 6,
y_max = 31000,
heat_point = 40,
humidity_point = 35,
})
minetest.register_biome({
name = "stone_grassland_dunes",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 2,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 5,
y_max = 5,
heat_point = 40,
y_max = 31000,
heat_point = 20,
humidity_point = 35,
})
minetest.register_biome({
name = "stone_grassland_ocean",
name = "snowy_grassland_ocean",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
@ -580,10 +564,73 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 40,
heat_point = 20,
humidity_point = 35,
})
-- Grassland
minetest.register_biome({
name = "grassland",
--node_dust = "",
node_top = "default:dirt_with_grass",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 6,
y_max = 31000,
heat_point = 50,
humidity_point = 35,
})
minetest.register_biome({
name = "grassland_dunes",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 2,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 5,
y_max = 5,
heat_point = 50,
humidity_point = 35,
})
minetest.register_biome({
name = "grassland_ocean",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 50,
humidity_point = 35,
})
-- Coniferous forest
minetest.register_biome({
name = "coniferous_forest",
@ -601,8 +648,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 6,
y_max = 31000,
heat_point = 40,
humidity_point = 65,
heat_point = 45,
humidity_point = 70,
})
minetest.register_biome({
@ -621,8 +668,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 5,
y_max = 5,
heat_point = 40,
humidity_point = 65,
heat_point = 45,
humidity_point = 70,
})
minetest.register_biome({
@ -641,71 +688,11 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 40,
humidity_point = 65,
})
minetest.register_biome({
name = "sandstone_grassland",
--node_dust = "",
node_top = "default:dirt_with_grass",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
node_stone = "default:sandstone",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 6,
y_max = 31000,
heat_point = 60,
humidity_point = 35,
})
minetest.register_biome({
name = "sandstone_grassland_dunes",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 2,
node_stone = "default:sandstone",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 5,
y_max = 5,
heat_point = 60,
humidity_point = 35,
})
minetest.register_biome({
name = "sandstone_grassland_ocean",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
node_stone = "default:sandstone",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 60,
humidity_point = 35,
heat_point = 45,
humidity_point = 70,
})
-- Deciduous forest
minetest.register_biome({
name = "deciduous_forest",
@ -724,11 +711,11 @@ function default.register_biomes()
y_min = 1,
y_max = 31000,
heat_point = 60,
humidity_point = 65,
humidity_point = 68,
})
minetest.register_biome({
name = "deciduous_forest_swamp",
name = "deciduous_forest_shore",
--node_dust = "",
node_top = "default:dirt",
depth_top = 1,
@ -741,10 +728,10 @@ function default.register_biomes()
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -3,
y_min = -1,
y_max = 0,
heat_point = 60,
humidity_point = 65,
humidity_point = 68,
})
minetest.register_biome({
@ -762,12 +749,12 @@ function default.register_biomes()
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = -4,
y_max = -2,
heat_point = 60,
humidity_point = 65,
humidity_point = 68,
})
-- Hot
-- Desert
minetest.register_biome({
name = "desert",
@ -785,8 +772,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 5,
y_max = 31000,
heat_point = 85,
humidity_point = 20,
heat_point = 92,
humidity_point = 16,
})
minetest.register_biome({
@ -805,10 +792,95 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 85,
humidity_point = 20,
heat_point = 92,
humidity_point = 16,
})
-- Sandstone desert
minetest.register_biome({
name = "sandstone_desert",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 0,
node_stone = "default:sandstone",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 5,
y_max = 31000,
heat_point = 60,
humidity_point = 0,
})
minetest.register_biome({
name = "sandstone_desert_ocean",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
node_stone = "default:sandstone",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 60,
humidity_point = 0,
})
-- Cold desert
minetest.register_biome({
name = "cold_desert",
--node_dust = "",
node_top = "default:silver_sand",
depth_top = 1,
node_filler = "default:silver_sand",
depth_filler = 1,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 5,
y_max = 31000,
heat_point = 40,
humidity_point = 0,
})
minetest.register_biome({
name = "cold_desert_ocean",
--node_dust = "",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = 4,
heat_point = 40,
humidity_point = 0,
})
-- Savanna
minetest.register_biome({
name = "savanna",
@ -826,12 +898,12 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 1,
y_max = 31000,
heat_point = 85,
humidity_point = 50,
heat_point = 89,
humidity_point = 42,
})
minetest.register_biome({
name = "savanna_swamp",
name = "savanna_shore",
--node_dust = "",
node_top = "default:dirt",
depth_top = 1,
@ -844,10 +916,10 @@ function default.register_biomes()
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -3,
y_min = -1,
y_max = 0,
heat_point = 85,
humidity_point = 50,
heat_point = 89,
humidity_point = 42,
})
minetest.register_biome({
@ -865,11 +937,12 @@ function default.register_biomes()
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = -4,
heat_point = 85,
humidity_point = 50,
y_max = -2,
heat_point = 89,
humidity_point = 42,
})
-- Rainforest
minetest.register_biome({
name = "rainforest",
@ -887,8 +960,8 @@ function default.register_biomes()
depth_riverbed = 2,
y_min = 1,
y_max = 31000,
heat_point = 85,
humidity_point = 80,
heat_point = 86,
humidity_point = 65,
})
minetest.register_biome({
@ -905,10 +978,10 @@ function default.register_biomes()
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -3,
y_min = -1,
y_max = 0,
heat_point = 85,
humidity_point = 80,
heat_point = 86,
humidity_point = 65,
})
minetest.register_biome({
@ -926,9 +999,9 @@ function default.register_biomes()
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -112,
y_max = -4,
heat_point = 85,
humidity_point = 80,
y_max = -2,
heat_point = 86,
humidity_point = 65,
})
-- Underground
@ -1047,7 +1120,8 @@ function default.register_mgv6_decorations()
})
end
-- All mapgens except mgv6 and singlenode
-- All mapgens except mgv6
local function register_grass_decoration(offset, scale, length)
minetest.register_decoration({
@ -1062,13 +1136,11 @@ local function register_grass_decoration(offset, scale, length)
octaves = 3,
persist = 0.6
},
biomes = {"stone_grassland", "sandstone_grassland",
"deciduous_forest", "coniferous_forest",
"stone_grassland_dunes", "sandstone_grassland_dunes",
"coniferous_forest_dunes"},
biomes = {"grassland", "grassland_dunes", "deciduous_forest",
"coniferous_forest", "coniferous_forest_dunes"},
y_min = 1,
y_max = 31000,
decoration = "default:grass_"..length,
decoration = "default:grass_" .. length,
})
end
@ -1088,10 +1160,11 @@ local function register_dry_grass_decoration(offset, scale, length)
biomes = {"savanna"},
y_min = 1,
y_max = 31000,
decoration = "default:dry_grass_"..length,
decoration = "default:dry_grass_" .. length,
})
end
function default.register_decorations()
minetest.clear_registered_decorations()
@ -1112,7 +1185,7 @@ function default.register_decorations()
biomes = {"deciduous_forest"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts",
schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts",
flags = "place_center_x, place_center_z",
})
@ -1157,9 +1230,9 @@ function default.register_decorations()
sidelen = 80,
fill_ratio = 0.1,
biomes = {"rainforest", "rainforest_swamp"},
y_min = 0,
y_min = -1,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/jungle_tree.mts",
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
@ -1207,7 +1280,7 @@ function default.register_decorations()
biomes = {"taiga", "coniferous_forest"},
y_min = 2,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts",
schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
flags = "place_center_x, place_center_z",
})
@ -1261,7 +1334,7 @@ function default.register_decorations()
biomes = {"savanna"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts",
schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
@ -1313,7 +1386,7 @@ function default.register_decorations()
biomes = {"deciduous_forest"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts",
flags = "place_center_x, place_center_z",
})
@ -1349,6 +1422,7 @@ function default.register_decorations()
flags = "place_center_x",
rotation = "random",
})
-- Large cactus
minetest.register_decoration({
@ -1366,7 +1440,7 @@ function default.register_decorations()
biomes = {"desert"},
y_min = 5,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/large_cactus.mts",
schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts",
flags = "place_center_x",
rotation = "random",
})
@ -1407,10 +1481,52 @@ function default.register_decorations()
octaves = 3,
persist = 0.7
},
biomes = {"savanna_swamp"},
biomes = {"savanna_shore"},
y_min = 0,
y_max = 0,
schematic = minetest.get_modpath("default").."/schematics/papyrus.mts",
schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
})
-- Bush
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
sidelen = 16,
noise_params = {
offset = -0.004,
scale = 0.01,
spread = {x = 100, y = 100, z = 100},
seed = 137,
octaves = 3,
persist = 0.7,
},
biomes = {"snowy_grassland", "grassland", "deciduous_forest"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
flags = "place_center_x, place_center_z",
})
-- Acacia bush
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = -0.004,
scale = 0.01,
spread = {x = 100, y = 100, z = 100},
seed = 90155,
octaves = 3,
persist = 0.7,
},
biomes = {"savanna"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts",
flags = "place_center_x, place_center_z",
})
-- Grasses
@ -1446,7 +1562,8 @@ function default.register_decorations()
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:desert_sand", "default:dirt_with_snow"},
place_on = {"default:desert_sand",
"default:sand", "default:silver_sand"},
sidelen = 16,
noise_params = {
offset = 0,
@ -1456,11 +1573,36 @@ function default.register_decorations()
octaves = 3,
persist = 0.6
},
biomes = {"desert", "tundra"},
biomes = {"desert", "sandstone_desert", "cold_desert"},
y_min = 2,
y_max = 31000,
decoration = "default:dry_shrub",
})
-- Coral reef
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:sand"},
noise_params = {
offset = -0.1,
scale = 0.1,
spread = {x = 200, y = 200, z = 200},
seed = 7013,
octaves = 3,
persist = 1,
},
biomes = {
"desert_ocean",
"savanna_ocean",
"rainforest_ocean",
},
y_min = -8,
y_max = -2,
schematic = minetest.get_modpath("default") .. "/schematics/corals.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -94,8 +94,7 @@ local function register_flower(seed, name)
octaves = 3,
persist = 0.6
},
biomes = {"stone_grassland", "sandstone_grassland",
"deciduous_forest", "coniferous_forest"},
biomes = {"grassland", "deciduous_forest", "coniferous_forest"},
y_min = 1,
y_max = 31000,
decoration = "flowers:"..name,
@ -110,7 +109,7 @@ local function register_mushroom(name)
noise_params = {
offset = 0,
scale = 0.006,
spread = {x = 200, y = 200, z = 200},
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
@ -135,10 +134,10 @@ local function register_waterlily()
octaves = 3,
persist = 0.7
},
biomes = {"rainforest_swamp", "savanna_swamp", "deciduous_forest_swamp"},
biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"},
y_min = 0,
y_max = 0,
schematic = minetest.get_modpath("flowers").."/schematics/waterlily.mts",
schematic = minetest.get_modpath("flowers") .. "/schematics/waterlily.mts",
rotation = "random",
})
end
@ -162,12 +161,9 @@ end
-- Detect mapgen to select functions
--
-- Mods using singlenode mapgen can call these functions to enable
-- the use of minetest.generate_ores or minetest.generate_decorations
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" then
flowers.register_mgv6_decorations()
elseif mg_name ~= "singlenode" then
else
flowers.register_decorations()
end