From 84de5f0f40b6b16988b39ccf6e26f2403c00dfb7 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 29 Jul 2015 02:19:49 +0100 Subject: [PATCH] Add biomes for mgv5 and mgv7 --- mods/default/mapgen.lua | 799 ++++++++++++++++++++++++++++++---------- mods/flowers/mapgen.lua | 88 ++++- 2 files changed, 679 insertions(+), 208 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 354b27a6..660e0a12 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2,7 +2,6 @@ -- Aliases for map generator outputs -- - minetest.register_alias("mapgen_stone", "default:stone") minetest.register_alias("mapgen_dirt", "default:dirt") minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") @@ -19,6 +18,8 @@ minetest.register_alias("mapgen_snow", "default:snow") minetest.register_alias("mapgen_ice", "default:ice") minetest.register_alias("mapgen_sandstone", "default:sandstone") +-- Flora + minetest.register_alias("mapgen_tree", "default:tree") minetest.register_alias("mapgen_leaves", "default:leaves") minetest.register_alias("mapgen_apple", "default:apple") @@ -28,6 +29,8 @@ minetest.register_alias("mapgen_junglegrass", "default:junglegrass") minetest.register_alias("mapgen_pinetree", "default:pinetree") minetest.register_alias("mapgen_pine_needles", "default:pine_needles") +-- Dungeons + minetest.register_alias("mapgen_cobble", "default:cobble") minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") minetest.register_alias("mapgen_mossycobble", "default:mossycobble") @@ -39,10 +42,13 @@ minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebr -- Register ores -- - +-- All mapgens except singlenode -- Blob ore first to avoid other ores inside blobs function default.register_ores() + + -- Clay + minetest.register_ore({ ore_type = "blob", ore = "default:clay", @@ -62,6 +68,8 @@ function default.register_ores() }, }) + -- Sand + minetest.register_ore({ ore_type = "blob", ore = "default:sand", @@ -81,6 +89,8 @@ function default.register_ores() }, }) + -- Dirt + minetest.register_ore({ ore_type = "blob", ore = "default:dirt", @@ -100,6 +110,8 @@ function default.register_ores() }, }) + -- Gravel + minetest.register_ore({ ore_type = "blob", ore = "default:gravel", @@ -119,6 +131,8 @@ function default.register_ores() }, }) + -- Coal + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_coal", @@ -141,6 +155,8 @@ function default.register_ores() y_max = 0, }) + -- Iron + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_iron", @@ -185,6 +201,8 @@ function default.register_ores() y_max = -64, }) + --Mese + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_mese", @@ -218,6 +236,8 @@ function default.register_ores() y_max = -1024, }) + -- Gold + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_gold", @@ -240,6 +260,8 @@ function default.register_ores() y_max = -256, }) + -- Diamond + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_diamond", @@ -262,6 +284,8 @@ function default.register_ores() y_max = -256, }) + -- Copper + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_copper", @@ -290,29 +314,68 @@ end -- Register biomes -- +-- All mapgens except mgv6 and singlenode function default.register_biomes() minetest.clear_registered_biomes() + -- Permanent ice + minetest.register_biome({ - name = "default:grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", + name = "glacier", + node_dust = "default:snowblock", + node_top = "default:snowblock", depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , + node_filler = "default:snowblock", + depth_filler = 3, + node_stone = "default:ice", + node_water_top = "default:ice", + depth_water_top = 8, --node_water = "", - y_min = 5, + y_min = -6, y_max = 31000, - heat_point = 50, + heat_point = -5, humidity_point = 50, }) minetest.register_biome({ - name = "default:grassland_ocean", + name = "glacier_ocean", + node_dust = "default:snowblock", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = -112, + y_max = -7, + heat_point = -5, + humidity_point = 50, + }) + + -- Cold + + minetest.register_biome({ + name = "tundra", + node_dust = "default:snow", + node_top = "default:dirt_with_snow", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 0, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 2, + y_max = 31000, + heat_point = 20, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "tundra_ocean", --node_dust = "", node_top = "default:sand", depth_top = 1, @@ -322,8 +385,322 @@ function default.register_biomes() --node_water_top = "", --depth_water_top = , --node_water = "", - y_min = -31000, + y_min = -112, + y_max = 1, + heat_point = 20, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "taiga", + node_dust = "default:snow", + node_top = "default:snowblock", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 2, + y_max = 31000, + heat_point = 20, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "taiga_ocean", + --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 = "", + y_min = -112, + y_max = 1, + heat_point = 20, + humidity_point = 70, + }) + + -- Cool + + minetest.register_biome({ + name = "stone_grassland", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 0, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 6, + y_max = 31000, + heat_point = 45, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "stone_grassland_ocean", + --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 = "", + y_min = -112, + y_max = 5, + heat_point = 45, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "coniferous_forest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 6, + y_max = 31000, + heat_point = 45, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "coniferous_forest_ocean", + --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 = "", + y_min = -112, + y_max = 5, + heat_point = 45, + humidity_point = 70, + }) + + -- Warm + + minetest.register_biome({ + name = "sandstone_grassland", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 0, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 6, + y_max = 31000, + heat_point = 70, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "sandstone_grassland_ocean", + --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 = "", + y_min = -112, + y_max = 5, + heat_point = 70, + humidity_point = 30, + }) + + minetest.register_biome({ + name = "deciduous_forest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 6, + y_max = 31000, + heat_point = 70, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "deciduous_forest_ocean", + --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 = "", + y_min = -112, + y_max = 5, + heat_point = 70, + humidity_point = 70, + }) + + -- Hot + + minetest.register_biome({ + name = "desert", + --node_dust = "", + node_top = "default:desert_sand", + depth_top = 1, + node_filler = "default:desert_sand", + depth_filler = 1, + node_stone = "default:desert_stone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 1, + y_max = 31000, + heat_point = 95, + humidity_point = 10, + }) + + minetest.register_biome({ + name = "desert_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + node_stone = "default:desert_stone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = -112, + y_max = 0, + heat_point = 95, + humidity_point = 10, + }) + + minetest.register_biome({ + name = "savanna", + --node_dust = "", + node_top = "default:dirt_with_dry_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 1, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 5, + y_max = 31000, + heat_point = 95, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "savanna_ocean", + --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 = "", + y_min = -112, y_max = 4, + heat_point = 95, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "rainforest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 1, + y_max = 31000, + heat_point = 95, + humidity_point = 90, + }) + + minetest.register_biome({ + name = "rainforest_swamp", + --node_dust = "", + node_top = "default:dirt", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = 0, + y_max = 0, + heat_point = 95, + humidity_point = 90, + }) + + minetest.register_biome({ + name = "rainforest_ocean", + --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 = "", + y_min = -112, + y_max = -1, + heat_point = 95, + humidity_point = 90, + }) + + -- Underground + + minetest.register_biome({ + name = "underground", + --node_dust = "", + --node_top = "", + depth_top = 0, + --node_filler = "", + depth_filler = -4, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + y_min = -31000, + y_max = -113, heat_point = 50, humidity_point = 50, }) @@ -331,11 +708,13 @@ end -- --- Register mgv6 decorations +-- Register decorations -- +-- Mgv6 function default.register_mgv6_decorations() + minetest.clear_registered_decorations() -- Papyrus @@ -381,7 +760,7 @@ function default.register_mgv6_decorations() height_max = 4, }) - -- Grasses + -- Long grasses for length = 1, 5 do minetest.register_decoration({ @@ -422,214 +801,245 @@ function default.register_mgv6_decorations() }) end +-- All mapgens except mgv6 and singlenode --- --- Register decorations --- +local function register_grass_decoration(offset, scale, length) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:sand"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = scale, + spread = {x=200, y=200, z=200}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = { + "stone_grassland", "stone_grassland_ocean", + "sandstone_grassland", "sandstone_grassland_ocean", + "deciduous_forest", "deciduous_forest_ocean", + "coniferous_forest", "coniferous_forest_ocean", + }, + y_min = 5, + y_max = 31000, + decoration = "default:grass_"..length, + }) +end +local function register_dry_grass_decoration(length) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0.04, + scale = 0.02, + spread = {x=200, y=200, z=200}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = {"savanna"}, + y_min = 5, + y_max = 31000, + decoration = "default:dry_grass_"..length, + }) +end function default.register_decorations() + minetest.clear_registered_decorations() - -- Flowers + -- Apple tree minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 436, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "flowers:rose", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 19822, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = 33, - y_max = 31000, - decoration = "flowers:tulip", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 1220999, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "flowers:dandelion_yellow", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 36662, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "flowers:geranium", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 1133, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "flowers:viola", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 73133, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "flowers:dandelion_white", - }) - - -- Grasses - - minetest.register_decoration({ - deco_type = "simple", + deco_type = "schematic", place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { offset = 0.04, - scale = 0.04, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, + scale = 0.02, + spread = {x=250, y=250, z=250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"deciduous_forest"}, + y_min = 6, y_max = 31000, - decoration = "default:grass_1", + schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts", + flags = "place_center_x, place_center_z", }) - + + -- Jungle tree + minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + deco_type = "schematic", + place_on = {"default:dirt_with_grass", "default:dirt"}, + sidelen = 80, + fill_ratio = 0.09, + biomes = {"rainforest", "rainforest_swamp"}, + y_min = 0, + y_max = 31000, + schematic = minetest.get_modpath("default").."/schematics/jungle_tree.mts", + flags = "place_center_x, place_center_z", + }) + + -- Taiga and temperate forest pine tree + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:snowblock", "default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = 0.02, - scale = 0.06, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, + offset = 0.04, + scale = 0.02, + spread = {x=250, y=250, z=250}, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = {"taiga", "coniferous_forest"}, + y_min = 2, + y_max = 31000, + schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts", + flags = "place_center_x, place_center_z", + }) + + -- Acacia tree + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_dry_grass"}, + sidelen = 80, + noise_params = { + offset = 0.001, + scale = 0.0015, + spread = {x=250, y=250, z=250}, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = {"savanna"}, + y_min = 6, + y_max = 31000, + schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + + -- Large cactus + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:desert_sand"}, + sidelen = 80, + noise_params = { + offset = -0.0005, + scale = 0.0015, + spread = {x=200, y=200, z=200}, + seed = 230, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"desert"}, + y_min = 2, y_max = 31000, - decoration = "default:grass_2", + schematic = minetest.get_modpath("default").."/schematics/large_cactus.mts", + flags = "place_center_x", + rotation = "random", }) - + + -- Cactus + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:desert_sand"}, + sidelen = 80, + noise_params = { + offset = -0.0005, + scale = 0.0015, + spread = {x=200, y=200, z=200}, + seed = 230, + octaves = 3, + persist = 0.6 + }, + biomes = {"desert"}, + y_min = 2, + y_max = 31000, + decoration = "default:cactus", + height = 2, + height_max = 5, + }) + + -- Papyrus + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + noise_params = { + offset = -0.3, + scale = 0.7, + spread = {x=200, y=200, z=200}, + seed = 354, + octaves = 3, + persist = 0.7 + }, + biomes = {"savanna_ocean", "desert_ocean"}, + y_min = 0, + y_max = 0, + schematic = minetest.get_modpath("default").."/schematics/papyrus.mts", + }) + + -- Grasses + + register_grass_decoration(-0.03, 0.09, 5) + register_grass_decoration(-0.015, 0.075, 4) + register_grass_decoration(0, 0.06, 3) + register_grass_decoration(0.015, 0.045, 2) + register_grass_decoration(0.03, 0.03, 1) + + -- Dry grasses + + register_dry_grass_decoration(5) + register_dry_grass_decoration(4) + register_dry_grass_decoration(3) + register_dry_grass_decoration(2) + register_dry_grass_decoration(1) + + -- Junglegrass + minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass"}, + sidelen = 80, + fill_ratio = 0.1, + biomes = {"rainforest"}, + y_min = 1, + y_max = 31000, + decoration = "default:junglegrass", + }) + + -- Dry shrub + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:desert_sand", "default:dirt_with_snow"}, sidelen = 16, noise_params = { offset = 0, - scale = 0.08, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, + scale = 0.02, + spread = {x=200, y=200, z=200}, + seed = 329, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"desert", "tundra"}, + y_min = 2, y_max = 31000, - decoration = "default:grass_3", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.02, - scale = 0.10, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "default:grass_4", - }) - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.04, - scale = 0.12, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, - octaves = 3, - persist = 0.6 - }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "default:grass_5", + decoration = "default:dry_shrub", }) end @@ -638,9 +1048,8 @@ end -- Generate nyan cats -- +-- All mapgens except singlenode --- facedir: 0/1/2/3 (head node facedir value) --- length: length of rainbow tail function default.make_nyancat(pos, facedir, length) local tailvec = {x = 0, y = 0, z = 0} if facedir == 0 then @@ -652,7 +1061,6 @@ function default.make_nyancat(pos, facedir, length) elseif facedir == 3 then tailvec.x = -1 else - --print("default.make_nyancat(): Invalid facedir: "+dump(facedir)) facedir = 0 tailvec.z = 1 end @@ -665,7 +1073,6 @@ function default.make_nyancat(pos, facedir, length) end end - function default.generate_nyancats(minp, maxp, seed) local height_min = -31000 local height_max = -32 @@ -693,7 +1100,6 @@ 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 @@ -708,4 +1114,3 @@ elseif mg_params.mgname ~= "singlenode" then default.register_decorations() minetest.register_on_generated(default.generate_nyancats) end - diff --git a/mods/flowers/mapgen.lua b/mods/flowers/mapgen.lua index 151c8e8f..5efea1fe 100644 --- a/mods/flowers/mapgen.lua +++ b/mods/flowers/mapgen.lua @@ -1,4 +1,6 @@ -local function register_flower(name) +-- Mgv6 + +local function register_mgv6_flower(name) minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass"}, @@ -17,7 +19,7 @@ local function register_flower(name) }) end -local function register_mushroom(name) +local function register_mgv6_mushroom(name) minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass"}, @@ -37,20 +39,84 @@ local function register_mushroom(name) end function flowers.register_mgv6_decorations() - register_flower("rose") - register_flower("tulip") - register_flower("dandelion_yellow") - register_flower("geranium") - register_flower("viola") - register_flower("dandelion_white") + register_mgv6_flower("rose") + register_mgv6_flower("tulip") + register_mgv6_flower("dandelion_yellow") + register_mgv6_flower("geranium") + register_mgv6_flower("viola") + register_mgv6_flower("dandelion_white") + + register_mgv6_mushroom("mushroom_brown") + register_mgv6_mushroom("mushroom_red") +end + +-- All other biome API mapgens (not singlenode) + +local function register_flower(seed, name) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = -0.02, + scale = 0.03, + spread = {x=200, y=200, z=200}, + seed = seed, + octaves = 3, + persist = 0.6 + }, + biomes = { + "stone_grassland", + "sandstone_grassland", + "deciduous_forest", + "coniferous_forest", + }, + y_min = 6, + y_max = 31000, + decoration = "flowers:"..name, + }) +end + +local function register_mushroom(name) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = {x=200, y=200, z=200}, + seed = 7133, + octaves = 3, + persist = 0.6 + }, + biomes = {"deciduous_forest", "coniferous_forest"}, + y_min = 6, + y_max = 31000, + decoration = "flowers:"..name, + }) +end + +function flowers.register_decorations() + register_flower(436, "rose") + register_flower(19822, "tulip") + register_flower(1220999, "dandelion_yellow") + register_flower(36662, "geranium") + register_flower(1133, "viola") + register_flower(73133, "dandelion_white") register_mushroom("mushroom_brown") register_mushroom("mushroom_red") end --- Enable in mapgen v6 only +-- Detect mapgen to select functions -if minetest.get_mapgen_params().mgname == "v6" then +-- Mods using singlenode mapgen can call these functions to enable +-- the use of minetest.generate_ores or minetest.generate_decorations + +local mg_params = minetest.get_mapgen_params() +if mg_params.mgname == "v6" then flowers.register_mgv6_decorations() +elseif mg_params.mgname ~= "singlenode" then + flowers.register_decorations() end -