diff --git a/game_api.txt b/game_api.txt index 90594e8f..97ee3caa 100644 --- a/game_api.txt +++ b/game_api.txt @@ -918,6 +918,9 @@ Trees * `default.grow_acacia_bush(pos)` * Grows an acaia bush at pos + + * `default.grow_pine_bush(pos)` + * Grows a pine bush at pos Carts ----- diff --git a/mods/default/README.txt b/mods/default/README.txt index 87e0d31c..e3efdd20 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -79,11 +79,13 @@ paramat (CC BY-SA 3.0): default_acacia_leaves_simple.png default_acacia_sapling.png default_acacia_bush_sapling.png + default_pine_bush_sapling.png default_acacia_tree.png default_acacia_tree_top.png default_acacia_wood.png default_acacia_bush_stem.png default_bush_stem.png + default_pine_bush_stem.png default_junglewood.png default_jungletree_top.png default_sandstone_brick.png diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index c0f2252f..b8651c0c 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -49,6 +49,13 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "default:pine_wood", + recipe = { + {"default:pine_bush_stem"}, + } +}) + minetest.register_craft({ output = 'default:stick 4', recipe = { @@ -953,6 +960,12 @@ minetest.register_craft({ burntime = 4, }) +minetest.register_craft({ + type = "fuel", + recipe = "default:pine_bush_sapling", + burntime = 2, +}) + minetest.register_craft({ type = "fuel", recipe = "default:aspen_sapling", @@ -1058,6 +1071,12 @@ minetest.register_craft({ burntime = 8, }) +minetest.register_craft({ + type = "fuel", + recipe = "default:pine_bush_stem", + burntime = 6, +}) + minetest.register_craft({ type = "fuel", recipe = "default:junglegrass", diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index fdbe4a83..f0da5d5a 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -1946,7 +1946,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:bush", deco_type = "schematic", - place_on = {"default:dirt_with_grass", "default:dirt_with_snow"}, + place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { offset = -0.004, @@ -1956,7 +1956,7 @@ function default.register_decorations() octaves = 3, persist = 0.7, }, - biomes = {"snowy_grassland", "grassland", "deciduous_forest", + biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, y_max = 31000, y_min = 1, @@ -1986,6 +1986,28 @@ function default.register_decorations() flags = "place_center_x, place_center_z", }) + -- Pine bush + + minetest.register_decoration({ + name = "default:pine_bush", + deco_type = "schematic", + place_on = {"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 = {"taiga", "snowy_grassland"}, + y_max = 31000, + y_min = 4, + schematic = minetest.get_modpath("default") .. "/schematics/pine_bush.mts", + flags = "place_center_x, place_center_z", + }) + -- Grasses register_grass_decoration(-0.03, 0.09, 5) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 13a4c0bf..4f427f43 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -162,6 +162,9 @@ default:bush_sapling default:acacia_bush_stem default:acacia_bush_leaves default:acacia_bush_sapling +default:pine_bush_stem +default:pine_bush_needles +default:pine_bush_sapling default:sand_with_kelp @@ -1681,6 +1684,77 @@ minetest.register_node("default:acacia_bush_sapling", { end, }) +minetest.register_node("default:pine_bush_stem", { + description = "Pine Bush Stem", + drawtype = "plantlike", + visual_scale = 1.41, + tiles = {"default_pine_bush_stem.png"}, + inventory_image = "default_pine_bush_stem.png", + wield_image = "default_pine_bush_stem.png", + paramtype = "light", + sunlight_propagates = true, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + selection_box = { + type = "fixed", + fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16}, + }, +}) + +minetest.register_node("default:pine_bush_needles", { + description = "Pine Bush Needles", + drawtype = "allfaces_optional", + waving = 1, + tiles = {"default_pine_needles.png"}, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1}, + drop = { + max_items = 1, + items = { + {items = {"default:pine_bush_sapling"}, rarity = 5}, + {items = {"default:pine_bush_needles"}} + } + }, + sounds = default.node_sound_leaves_defaults(), + + after_place_node = default.after_place_leaves, +}) + +minetest.register_node("default:pine_bush_sapling", { + description = "Pine Bush Sapling", + drawtype = "plantlike", + tiles = {"default_pine_bush_sapling.png"}, + inventory_image = "default_pine_bush_sapling.png", + wield_image = "default_pine_bush_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + on_timer = default.grow_sapling, + selection_box = { + type = "fixed", + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2, + attached_node = 1, sapling = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(300, 1500)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:pine_bush_sapling", + -- minp, maxp to be checked, relative to sapling pos + {x = -1, y = 0, z = -1}, + {x = 1, y = 1, z = 1}, + -- maximum interval of interior volume check + 2) + + return itemstack + end, +}) + minetest.register_node("default:sand_with_kelp", { description = "Kelp", drawtype = "plantlike_rooted", @@ -2532,3 +2606,9 @@ default.register_leafdecay({ leaves = {"default:acacia_bush_leaves"}, radius = 1, }) + +default.register_leafdecay({ + trunks = {"default:pine_bush_stem"}, + leaves = {"default:pine_bush_needles"}, + radius = 1, +}) diff --git a/mods/default/schematics/pine_bush.mts b/mods/default/schematics/pine_bush.mts new file mode 100644 index 00000000..fbc6e177 Binary files /dev/null and b/mods/default/schematics/pine_bush.mts differ diff --git a/mods/default/textures/default_pine_bush_sapling.png b/mods/default/textures/default_pine_bush_sapling.png new file mode 100644 index 00000000..fadeff87 Binary files /dev/null and b/mods/default/textures/default_pine_bush_sapling.png differ diff --git a/mods/default/textures/default_pine_bush_stem.png b/mods/default/textures/default_pine_bush_stem.png new file mode 100644 index 00000000..e239f812 Binary files /dev/null and b/mods/default/textures/default_pine_bush_stem.png differ diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 7f5556b2..a46ac5ac 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -85,6 +85,10 @@ function default.grow_sapling(pos) minetest.log("action", "An acacia bush sapling grows into a bush at ".. minetest.pos_to_string(pos)) default.grow_acacia_bush(pos) + elseif node.name == "default:pine_bush_sapling" then + minetest.log("action", "A pine bush sapling grows into a bush at ".. + minetest.pos_to_string(pos)) + default.grow_pine_bush(pos) elseif node.name == "default:emergent_jungle_sapling" then minetest.log("action", "An emergent jungle sapling grows into a tree at ".. minetest.pos_to_string(pos)) @@ -483,6 +487,16 @@ function default.grow_acacia_bush(pos) end +-- Pine bush + +function default.grow_pine_bush(pos) + local path = minetest.get_modpath("default") .. + "/schematics/pine_bush.mts" + minetest.place_schematic({x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, + path, "0", nil, false) +end + + -- -- Sapling 'on place' function to check protection of node and resulting tree volume --