Added all cherry things from Jordach's BFD
- Added cherry trees' biomes - Added cherry wooden plank stairs - Added cherry nodes : sapling, log, wood, etc - Added cherry trees' generation system - Added cherry items' crafts
@@ -711,6 +711,15 @@ minetest.register_craft({ -- Tool repair (combine 2 tools of the same type in th
 | 
			
		||||
	type = "toolrepair", additional_wear = -0.15,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- From BFD:
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'default:cherry_plank 6',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:cherry_log'},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Cooking recipes:
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
 
 | 
			
		||||
@@ -1760,6 +1760,95 @@ minetest.register_node("default:pinewood", {
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- From BFD: Cherry tree
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_tree", {
 | 
			
		||||
	description = "Cherry Log",
 | 
			
		||||
	tiles = {"default_cherry_top.png", "default_cherry_top.png", "default_cherry_tree.png"},
 | 
			
		||||
	is_ground_content = false,
 | 
			
		||||
	groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	drop = "default:cherry_log"
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_log", {
 | 
			
		||||
	description = "Cherry Log",
 | 
			
		||||
	tiles = {"default_cherry_top.png", "default_cherry_top.png", "default_cherry_tree.png"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	is_ground_content = false,
 | 
			
		||||
	groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	on_place = minetest.rotate_node,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_sapling", {
 | 
			
		||||
	description = "Cherry Sapling",
 | 
			
		||||
	waving = 1,
 | 
			
		||||
	visual_scale = 1.0,
 | 
			
		||||
	inventory_image = "default_cherry_sapling.png",
 | 
			
		||||
	wield_image = "default_cherry_sapling.png",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	tiles = {"default_cherry_sapling.png"},
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_blossom_leaves", {
 | 
			
		||||
	description = "Cherry Blossom Leaves",
 | 
			
		||||
	drawtype = "allfaces_optional",
 | 
			
		||||
	visual_scale = 1.3,
 | 
			
		||||
	tiles = {"default_cherry_blossom_leaves.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	waving = 1,
 | 
			
		||||
	is_ground_content = false,
 | 
			
		||||
	groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
 | 
			
		||||
	drop = {
 | 
			
		||||
		max_items = 1,
 | 
			
		||||
		items = {
 | 
			
		||||
			{
 | 
			
		||||
				items = {'default:cherry_sapling'},
 | 
			
		||||
				rarity = 32,
 | 
			
		||||
			},
 | 
			
		||||
			{
 | 
			
		||||
				items = {'default:cherry_blossom_leaves'},
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
		-- place a random grass node
 | 
			
		||||
		local stack = ItemStack("default:cherry_leaves_deco")
 | 
			
		||||
		local ret = minetest.item_place(stack, placer, pointed_thing)
 | 
			
		||||
		return ItemStack("default:cherry_blossom_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_leaves_deco", {
 | 
			
		||||
	description = "Cherry Leaves",
 | 
			
		||||
	drawtype = "allfaces_optional",
 | 
			
		||||
	visual_scale = 1.3,
 | 
			
		||||
	tiles = {"default_cherry_blossom_leaves.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	waving=1,
 | 
			
		||||
	is_ground_content = false,
 | 
			
		||||
	groups = {snappy=3, flammable=2, leaves=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	drop = {'default:cherry_blossom_leaves'},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:cherry_plank", {
 | 
			
		||||
	description = "Cherry Planks",
 | 
			
		||||
	tiles = {"default_wood_cherry_planks.png"},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	groups = {oddly_breakable_by_hand=1, flammable=1, choppy=3, wood=1},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
if minetest.setting_getbool("xray") then
 | 
			
		||||
	-- Nodes to make partially see-through:
 | 
			
		||||
	minetest.override_item("default:stone_with_coal",    {tiles = {"default_mineral_coal.png"}})
 | 
			
		||||
 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 876 B  | 
| 
		 After Width: | Height: | Size: 405 B  | 
							
								
								
									
										
											BIN
										
									
								
								minetestforfun_game/mods/default/textures/default_cherry_top.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 849 B  | 
| 
		 After Width: | Height: | Size: 902 B  | 
| 
		 After Width: | Height: | Size: 810 B  | 
@@ -220,7 +220,7 @@ local function add_snow(data, vi, c_air, c_ignore, c_snow)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function default.grow_pinet_ree(pos)
 | 
			
		||||
function default.grow_pine_tree(pos)
 | 
			
		||||
	local x, y, z = pos.x, pos.y, pos.z
 | 
			
		||||
	local maxy = y + random(9, 13) -- Trunk top
 | 
			
		||||
 | 
			
		||||
@@ -341,3 +341,130 @@ function default.grow_pinet_ree(pos)
 | 
			
		||||
	vm:write_to_map()
 | 
			
		||||
	vm:update_map()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- From BFD:
 | 
			
		||||
 | 
			
		||||
minetest.register_node("default:mg_cherry_sapling", {
 | 
			
		||||
	description = "Impossible to get node.",
 | 
			
		||||
	drawtype = "airlike",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	tiles = {"xfences_space.png"},
 | 
			
		||||
	groups = {not_in_creative_inventory=1},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
local c_mg_cherry_sapling = minetest.get_content_id("default:mg_cherry_sapling")
 | 
			
		||||
 | 
			
		||||
minetest.register_on_generated(function(minp, maxp, seed)
 | 
			
		||||
	local timer = os.clock()
 | 
			
		||||
	local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
 | 
			
		||||
	local data = vm:get_data()
 | 
			
		||||
	local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
 | 
			
		||||
	local trees_grown = 0
 | 
			
		||||
	for z=minp.z, maxp.z, 1 do
 | 
			
		||||
		for y=minp.y, maxp.y, 1 do
 | 
			
		||||
			for x=minp.x, maxp.x, 1 do
 | 
			
		||||
				local p_pos = area:index(x,y,z)
 | 
			
		||||
				local content_id = data[p_pos]
 | 
			
		||||
				if content_id == c_mg_cherry_sapling then
 | 
			
		||||
					mapgen.grow_tree({x=x, y=y, z=z}, false, "default:cherry_tree", "default:cherry_blossom_leaves")
 | 
			
		||||
					trees_grown = trees_grown + 1
 | 
			
		||||
				else
 | 
			
		||||
					-- nope
 | 
			
		||||
				end
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	local geninfo = string.format(" trees grown after: %.2fs", os.clock() - timer)
 | 
			
		||||
	print (trees_grown..geninfo)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
function default.grow_cherry_tree(pos, is_apple_tree, trunk_node, leaves_node)
 | 
			
		||||
	--[[
 | 
			
		||||
		NOTE: Tree-placing code is currently duplicated in the engine
 | 
			
		||||
		and in games that have saplings; both are deprecated but not
 | 
			
		||||
		replaced yet
 | 
			
		||||
	--]]
 | 
			
		||||
 | 
			
		||||
	local x, y, z = pos.x, pos.y, pos.z
 | 
			
		||||
	local height = random(4, 5)
 | 
			
		||||
	local c_tree = minetest.get_content_id(trunk_node)
 | 
			
		||||
	local c_leaves = minetest.get_content_id(leaves_node)
 | 
			
		||||
 | 
			
		||||
	local vm = minetest.get_voxel_manip()
 | 
			
		||||
	local minp, maxp = vm:read_from_map(
 | 
			
		||||
		{x = pos.x - 2, y = pos.y, z = pos.z - 2},
 | 
			
		||||
		{x = pos.x + 2, y = pos.y + height + 1, z = pos.z + 2}
 | 
			
		||||
	)
 | 
			
		||||
	local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
 | 
			
		||||
	local data = vm:get_data()
 | 
			
		||||
 | 
			
		||||
	add_trunk_and_leaves(data, a, pos, c_tree, c_leaves, height, 2, 8, is_apple_tree)
 | 
			
		||||
 | 
			
		||||
	vm:set_data(data)
 | 
			
		||||
	vm:write_to_map()
 | 
			
		||||
	vm:update_map()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_abm({
 | 
			
		||||
	nodenames = {"default:cherry_sapling"},
 | 
			
		||||
	interval = 80,
 | 
			
		||||
	chance = 3,
 | 
			
		||||
	action = function(pos, node)
 | 
			
		||||
		
 | 
			
		||||
		local nu =  minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
 | 
			
		||||
		local is_soil = minetest.get_item_group(nu, "soil")
 | 
			
		||||
		
 | 
			
		||||
		if is_soil == 0 then
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
		minetest.remove_node({x=pos.x, y=pos.y, z=pos.z})
 | 
			
		||||
		default.grow_cherry_tree(pos, false, "default:cherry_tree", "default:cherry_blossom_leaves")
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_biome({
 | 
			
		||||
	name = "cherry_blossom_forest",
 | 
			
		||||
	node_shore_filler = "default:sand",
 | 
			
		||||
	node_top = "default:grass",
 | 
			
		||||
	depth_top = 1,
 | 
			
		||||
	node_filler = "default:dirt",
 | 
			
		||||
	depth_filler = 3,
 | 
			
		||||
	node_dust = "air",
 | 
			
		||||
	node_underwater = "default:gravel",
 | 
			
		||||
	y_min = 1,
 | 
			
		||||
	y_max = 40,
 | 
			
		||||
	heat_point = 50,
 | 
			
		||||
	humidity_point = 55,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_biome({
 | 
			
		||||
	name = "cherry_blossom_forest_floral",
 | 
			
		||||
	node_shore_filler = "default:sand",
 | 
			
		||||
	node_top = "default:grass",
 | 
			
		||||
	depth_top = 1,
 | 
			
		||||
	node_filler = "default:dirt",
 | 
			
		||||
	depth_filler = 3,
 | 
			
		||||
	node_dust = "air",
 | 
			
		||||
	node_underwater = "default:gravel",
 | 
			
		||||
	y_min = 1,
 | 
			
		||||
	y_max = 40,
 | 
			
		||||
	heat_point = 47,
 | 
			
		||||
	humidity_point = 50,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_biome({
 | 
			
		||||
	name = "cherry_blossom_forest_grassy",
 | 
			
		||||
	node_shore_filler = "default:sand",
 | 
			
		||||
	node_top = "default:grass",
 | 
			
		||||
	depth_top = 1,
 | 
			
		||||
	node_filler = "default:dirt",
 | 
			
		||||
	depth_filler = 3,
 | 
			
		||||
	node_dust = "air",
 | 
			
		||||
	node_underwater = "default:gravel",
 | 
			
		||||
	y_min = 1,
 | 
			
		||||
	y_max = 42,
 | 
			
		||||
	heat_point = 55,
 | 
			
		||||
	humidity_point = 55,
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
@@ -350,6 +350,26 @@ minetest.register_craft({
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- From BFD: Cherry planks doors
 | 
			
		||||
 | 
			
		||||
doors.register_door("doors:door_cherry", {
 | 
			
		||||
	description = "Cherry Door",
 | 
			
		||||
	inventory_image = "door_wood_cherry.png",
 | 
			
		||||
	groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1},
 | 
			
		||||
	tiles_bottom = {"door_wood_cherry_b.png", "default_wood_cherry_planks.png"},
 | 
			
		||||
	tiles_top = {"door_wood_cherry_a.png", "default_wood_cherry_planks.png"},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	sunlight = false,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "doors:door_cherry",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:cherry_plank", "default:cherry_plank"},
 | 
			
		||||
		{"default:cherry_plank", "default:cherry_plank"},
 | 
			
		||||
		{"default:cherry_plank", "default:cherry_plank"}
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
----trapdoor----
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								minetestforfun_game/mods/doors/textures/door_trapdoor_cherry.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 724 B  | 
							
								
								
									
										
											BIN
										
									
								
								minetestforfun_game/mods/doors/textures/door_wood_cherry.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 477 B  | 
							
								
								
									
										
											BIN
										
									
								
								minetestforfun_game/mods/doors/textures/door_wood_cherry_a.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 448 B  | 
							
								
								
									
										
											BIN
										
									
								
								minetestforfun_game/mods/doors/textures/door_wood_cherry_b.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 548 B  | 
@@ -309,3 +309,13 @@ stairs.register_stair_and_slab("obsidianbrick", "default:obsidianbrick",
 | 
			
		||||
		"Obsidian Brick Stair",
 | 
			
		||||
		"Obsidian Brick Slab",
 | 
			
		||||
		default.node_sound_stone_defaults())
 | 
			
		||||
 | 
			
		||||
-- From BFD:
 | 
			
		||||
 | 
			
		||||
stairs.register_stair_and_slab("cherry_wood", "default:cherry_plank",
 | 
			
		||||
		{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
		{"default_wood_cherry_planks.png"},
 | 
			
		||||
		"Cherry Plank Stair",
 | 
			
		||||
		"Cherry Plank Slab",
 | 
			
		||||
		"Cherry Plank Corner Stair",
 | 
			
		||||
		default.node_sound_wood_defaults())
 | 
			
		||||
 
 | 
			
		||||