Browse Source

Biomes: Add pine bush to taiga and snowy grassland

Replaces 'bush' in snowy grassland.
TumeniNodes 5 years ago
parent
commit
9318c71659

+ 3 - 0
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
 -----

+ 2 - 0
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

+ 19 - 0
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",

+ 24 - 2
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)

+ 80 - 0
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,
+})

BIN
mods/default/schematics/pine_bush.mts


BIN
mods/default/textures/default_pine_bush_sapling.png


BIN
mods/default/textures/default_pine_bush_stem.png


+ 14 - 0
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
 --