+local function register_dry_grass_decoration(offset, scale, length)
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:dirt_with_dry_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = offset,
+ scale = scale,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"savanna"},
+ y_min = 1,
+ y_max = 31000,
+ decoration = "default:dry_grass_"..length,
+ })
+end
+
+function default.register_decorations()
+ minetest.clear_registered_decorations()
+
+ -- Apple tree and log
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.04,
+ scale = 0.02,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts",
+ flags = "place_center_x, place_center_z",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.002,
+ scale = 0.001,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = {
+ size = { x = 3, y = 3, z = 1},
+ data = {
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "default:tree", param2 = 12, prob = 191 },
+ { name = "default:tree", param2 = 12 },
+ { name = "default:tree", param2 = 12, prob = 127 },
+ { name = "air", prob = 0 },
+ { name = "flowers:mushroom_brown", prob = 63 },
+ { name = "air", prob = 0 },
+ },
+ },
+ flags = "place_center_x",
+ rotation = "random",
+ })
+
+ -- Jungle tree and log
+
+ minetest.register_decoration({
+ 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",
+ rotation = "random",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass", "default:dirt"},
+ sidelen = 80,
+ fill_ratio = 0.01,
+ biomes = {"rainforest", "rainforest_swamp"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = {
+ size = { x = 3, y = 3, z = 1},
+ data = {
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "default:jungletree", param2 = 12, prob = 191 },
+ { name = "default:jungletree", param2 = 12 },
+ { name = "default:jungletree", param2 = 12, prob = 127 },
+ { name = "air", prob = 0 },
+ { name = "flowers:mushroom_brown", prob = 127 },
+ { name = "air", prob = 0 },
+ },
+ },
+ flags = "place_center_x",
+ rotation = "random",
+ })
+
+ -- Taiga and temperate coniferous forest pine tree and log
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ 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",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
+ sidelen = 80,
+ fill_ratio = 0.003,
+ biomes = {"taiga", "coniferous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = {
+ size = { x = 3, y = 3, z = 1},
+ data = {
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "default:pine_tree", param2 = 12, prob = 191 },
+ { name = "default:pine_tree", param2 = 12 },
+ { name = "default:pine_tree", param2 = 12, prob = 127 },
+ { name = "air", prob = 0 },
+ { name = "flowers:mushroom_red", prob = 63 },
+ { name = "air", prob = 0 },
+ },
+ },
+ flags = "place_center_x",
+ rotation = "random",
+ })
+
+ -- Acacia tree and log
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_dry_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0,
+ scale = 0.002,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"savanna"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts",
+ flags = "place_center_x, place_center_z",
+ rotation = "random",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_dry_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0,
+ scale = 0.001,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"savanna"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = {
+ size = { x = 3, y = 2, z = 1},
+ data = {
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "default:acacia_tree", param2 = 12, prob = 191 },
+ { name = "default:acacia_tree", param2 = 12 },
+ { name = "default:acacia_tree", param2 = 12, prob = 127 },
+ },
+ },
+ flags = "place_center_x",
+ rotation = "random",
+ })
+
+ -- Aspen tree and log
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.0,
+ scale = -0.03,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
+ flags = "place_center_x, place_center_z",
+ rotation = "random",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.0,
+ scale = -0.0015,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = {
+ size = { x = 3, y = 3, z = 1},
+ data = {
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "air", prob = 0 },
+ { name = "default:aspen_tree", param2 = 12 },
+ { name = "default:aspen_tree", param2 = 12 },
+ { name = "default:aspen_tree", param2 = 12, prob = 127 },
+ { name = "flowers:mushroom_red", prob = 63 },
+ { name = "flowers:mushroom_brown", prob = 63 },
+ { name = "air", prob = 0 },
+ },
+ },
+ flags = "place_center_x",
+ rotation = "random",
+ })
+ -- Large cactus
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:desert_sand"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.0003,
+ scale = 0.0009,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 230,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"desert"},
+ y_min = 5,
+ y_max = 31000,
+ 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 = 16,
+ noise_params = {
+ offset = -0.0003,
+ scale = 0.0009,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 230,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"desert"},
+ y_min = 5,
+ y_max = 31000,
+ decoration = "default:cactus",
+ height = 2,
+ height_max = 5,
+ })
+
+ -- Papyrus
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt"},
+ 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_swamp"},
+ 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(0.01, 0.05, 5)
+ register_dry_grass_decoration(0.03, 0.03, 4)
+ register_dry_grass_decoration(0.05, 0.01, 3)
+ register_dry_grass_decoration(0.07, -0.01, 2)
+ register_dry_grass_decoration(0.09, -0.03, 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.02,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"desert", "tundra"},
+ y_min = 2,
+ y_max = 31000,
+ decoration = "default:dry_shrub",
+ })
+end
+
+
+--
+-- Generate nyan cats
+--
+
+-- All mapgens except singlenode
+