+-- All mapgens except mgv6 and singlenode
+
+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(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 = 5,
+ y_max = 31000,
+ decoration = "default:dry_grass_"..length,
+ })
+end
+
+function default.register_decorations()
+ minetest.clear_registered_decorations()
+
+ -- Apple tree
+
+ 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 = 6,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts",
+ flags = "place_center_x, place_center_z",
+ })
+
+ -- Jungle tree
+
+ 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",
+ })
+
+ -- 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.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,
+ scale = 0.003,
+ 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 = {"desert"},
+ y_min = 2,
+ 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 = 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(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",
+ })