forked from mtcontrib/moretrees
		
	Compare commits
	
		
			74 Commits
		
	
	
		
			26f1ec49d2
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d79e4a5843 | |||
| 7d9c4fdf31 | |||
|  | ac3e30ae86 | ||
|  | c15250a03a | ||
| 9560970515 | |||
|  | 458536dbe6 | ||
|  | 2c891e6c25 | ||
|  | 517c9dc516 | ||
|  | 3e424b2797 | ||
|  | 1b6914bc26 | ||
|  | f49b1c42c9 | ||
|  | 670f7f4e61 | ||
|  | 9a6c64d163 | ||
| fdd341ac71 | |||
|  | 5d7c46c4cf | ||
|  | 17f2037218 | ||
| d1ae12c4b1 | |||
|  | b1fe8df038 | ||
|  | b56e22fefd | ||
|  | 288870bc8d | ||
|  | 393840ba49 | ||
|  | 21bdcc360b | ||
|  | 7879bd8192 | ||
|  | 5bc6bdc3d9 | ||
|  | e476b81cf5 | ||
| aaa0ba123b | |||
|  | 8103aaae79 | ||
|  | c4d1dde83c | ||
|  | 87a997ba4a | ||
| 159cd8d506 | |||
|  | cbe846dfde | ||
| bce9f8d1cb | |||
|  | 62cab1b1d9 | ||
| 19d41419a0 | |||
|  | 20770027a6 | ||
|  | 06aaee3187 | ||
| be9bc9dc23 | |||
|  | 8c0a83dacb | ||
|  | 24bb114a11 | ||
| 850e9627c7 | |||
|  | c559ea3aef | ||
|  | 3212fae8cf | ||
|  | ea92403fa3 | ||
|  | dd36f8b63e | ||
|  | dc93bb5f16 | ||
| b2a94399ec | |||
| 7383549476 | |||
| ac9dd5503c | |||
| 5ee036f0f4 | |||
| fab2944277 | |||
|  | e72c539cdc | ||
| c8aaaf20ed | |||
| 93553670d2 | |||
|  | 66fd6724c5 | ||
|  | fa83e1b262 | ||
|  | f94f1bea26 | ||
|  | 09f08b50bc | ||
| f3108af2e3 | |||
|  | d335eceecc | ||
|  | 89bffdecaf | ||
| 114e47966b | |||
|  | 6fd3729669 | ||
|  | 25250e6eea | ||
|  | 9bc0bc1b68 | ||
|  | d097fd6044 | ||
|  | 216acdc6b1 | ||
|  | dde035cb5e | ||
| 157f53def0 | |||
|  | acb534d8d0 | ||
|  | f45ffc09bf | ||
|  | e912fba6c8 | ||
|  | 7161cfbdee | ||
|  | a27af10d2e | ||
|  | e474194daf | 
							
								
								
									
										18
									
								
								.github/workflows/luacheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/luacheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  |  | ||||||
|  | name: luacheck | ||||||
|  |  | ||||||
|  | on: [push, pull_request] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   build: | ||||||
|  |  | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v1 | ||||||
|  |     - name: apt | ||||||
|  |       run: sudo apt-get install -y luarocks | ||||||
|  |     - name: luacheck install | ||||||
|  |       run: luarocks install --local luacheck | ||||||
|  |     - name: luacheck run | ||||||
|  |       run: $HOME/.luarocks/bin/luacheck ./ | ||||||
							
								
								
									
										33
									
								
								.luacheckrc
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								.luacheckrc
									
									
									
									
									
								
							| @@ -1,17 +1,28 @@ | |||||||
| unused_args = false | unused_args = false | ||||||
| allow_defined_top = true | allow_defined_top = true | ||||||
|  |  | ||||||
| read_globals = { | exclude_files = {".luacheckrc"} | ||||||
| 	"DIR_DELIM", |  | ||||||
| 	"minetest", "core", |  | ||||||
| 	"dump", | globals = { | ||||||
| 	"vector", "nodeupdate", | 	"minetest", | ||||||
| 	"VoxelManip", "VoxelArea", | 	"vector", | ||||||
| 	"PseudoRandom", "ItemStack", | 	"VoxelManip", | ||||||
| 	"intllib", | 	"VoxelArea", | ||||||
|  | 	"PseudoRandom", | ||||||
|  | 	"ItemStack", | ||||||
| 	"default", | 	"default", | ||||||
| 	table = { fields = { "copy", "getn" } }, | 	"dump", | ||||||
| 	"biome_lib", | 	"moretrees", | ||||||
| 	"stairs", "stairsplus", | 	"ethereal", | ||||||
| } | } | ||||||
|  |  | ||||||
|  | read_globals = { | ||||||
|  | 	string = {fields = {"split"}}, | ||||||
|  |     table = {fields = {"copy", "getn"}}, | ||||||
|  |  | ||||||
|  | 	"stairsplus", | ||||||
|  | 	"stairs", | ||||||
|  | 	"doors", | ||||||
|  | 	"xcompat", | ||||||
|  | } | ||||||
|   | |||||||
| @@ -8,4 +8,5 @@ jungle trees mod, and big contributions by RealBadAngel. | |||||||
| Brought together into one mod and made L-systems compatible by Vanessa | Brought together into one mod and made L-systems compatible by Vanessa | ||||||
| Ezekowitz. | Ezekowitz. | ||||||
|  |  | ||||||
| Dependencies: <a href="https://forum.minetest.net/viewtopic.php?f=11&t=12999">biome_lib</a> and default | Dependencies: `xcompat`   | ||||||
|  | see mod.conf for more | ||||||
|   | |||||||
							
								
								
									
										261
									
								
								biome_defs.lua
									
									
									
									
									
								
							
							
						
						
									
										261
									
								
								biome_defs.lua
									
									
									
									
									
								
							| @@ -1,304 +1,155 @@ | |||||||
|  |  | ||||||
| moretrees.beech_biome = { | moretrees.beech_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 8, |  | ||||||
| 	seed_diff = 2, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 20, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.palm_biome = { | moretrees.palm_biome = { | ||||||
| 	surface = "default:sand", | 	place_on = xcompat.materials.sand, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 5, |  | ||||||
| 	seed_diff = 330, |  | ||||||
| 	min_elevation = -1, | 	min_elevation = -1, | ||||||
| 	max_elevation = 1, | 	max_elevation = 1, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 15, | 	num_spawn_by = 10, | ||||||
| 	near_nodes_count = 10, |  | ||||||
| 	temp_min = 0.25, |  | ||||||
| 	temp_max = -0.15, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.date_palm_biome = { | moretrees.date_palm_biome = { | ||||||
| 	surface = "default:desert_sand", | 	place_on = xcompat.materials.desert_sand, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 339, |  | ||||||
| 	min_elevation = -1, | 	min_elevation = -1, | ||||||
| 	max_elevation = 10, | 	max_elevation = 10, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 20, | 	num_spawn_by = 100, | ||||||
| 	near_nodes_count = 100, |  | ||||||
| 	near_nodes_vertical = 20, |  | ||||||
| 	temp_min = -0.20, |  | ||||||
| 	humidity_max = 0.20, |  | ||||||
| 	rarity = 10, |  | ||||||
| 	max_count = 30, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.date_palm_biome_2 = { | moretrees.date_palm_biome_2 = { | ||||||
| 	surface = "default:desert_sand", | 	place_on = xcompat.materials.desert_sand, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 340, |  | ||||||
| 	min_elevation = 11, | 	min_elevation = 11, | ||||||
| 	max_elevation = 30, | 	max_elevation = 30, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 1, | 	num_spawn_by = 1, | ||||||
| 	near_nodes_count = 1, |  | ||||||
| 	near_nodes_vertical = 30, |  | ||||||
| 	temp_min = -0.20, |  | ||||||
| 	humidity_max = 0.20, |  | ||||||
| 	rarity = 10, |  | ||||||
| 	max_count = 30, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.apple_tree_biome = { | moretrees.apple_tree_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 331, |  | ||||||
| 	min_elevation = 1, | 	min_elevation = 1, | ||||||
| 	max_elevation = 10, | 	max_elevation = 10, | ||||||
| 	temp_min = 0.1, | 	biomes = {"deciduous_forest"}, | ||||||
| 	temp_max = -0.15, | 	fill_ratio = 0.0001, | ||||||
| 	rarity = 75, |  | ||||||
| 	max_count = 5, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.oak_biome = { | moretrees.oak_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 15, |  | ||||||
| 	seed_diff = 332, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 10, | 	max_elevation = 10, | ||||||
| 	temp_min = 0.4, | 	fill_ratio = 0.0003 | ||||||
| 	temp_max = 0.2, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 5, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.sequoia_biome = { | moretrees.sequoia_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 333, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 10, | 	max_elevation = 10, | ||||||
| 	temp_min = 1, | 	fill_ratio = 0.0001, | ||||||
| 	temp_max = -0.4, |  | ||||||
| 	rarity = 90, |  | ||||||
| 	max_count = 5, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.birch_biome = { | moretrees.birch_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 5, |  | ||||||
| 	seed_diff = 334, |  | ||||||
| 	min_elevation = 10, | 	min_elevation = 10, | ||||||
| 	max_elevation = 15, | 	max_elevation = 15, | ||||||
| 	temp_min = 0.9, | 	fill_ratio = 0.001, | ||||||
| 	temp_max = 0.3, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.willow_biome = { | moretrees.willow_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 337, |  | ||||||
| 	min_elevation = -5, | 	min_elevation = -5, | ||||||
| 	max_elevation = 5, | 	max_elevation = 5, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 15, | 	num_spawn_by = 5, | ||||||
| 	near_nodes_count = 5, |  | ||||||
| 	rarity = 75, |  | ||||||
| 	max_count = 5, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.rubber_tree_biome = { | moretrees.rubber_tree_biome = { | ||||||
| 	surface = { | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 		"default:dirt_with_grass", |  | ||||||
| 		"default:sand", |  | ||||||
| 	}, |  | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 338, |  | ||||||
| 	min_elevation = -5, | 	min_elevation = -5, | ||||||
| 	max_elevation = 5, | 	max_elevation = 5, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 15, | 	num_spawn_by = 10, | ||||||
| 	near_nodes_count = 10, |  | ||||||
| 	temp_min = -0.15, |  | ||||||
| 	rarity = 75, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.jungletree_biome = { | moretrees.jungletree_biome = { | ||||||
| 	surface = { | 	place_on = { | ||||||
| 		"default:dirt", | 		xcompat.materials.dirt, | ||||||
| 		"default:dirt_with_grass", | 		xcompat.materials.dirt_with_grass, | ||||||
| 		"woodsoils:dirt_with_leaves_1", | 		"woodsoils:dirt_with_leaves_1", | ||||||
| 		"woodsoils:grass_with_leaves_1", | 		"woodsoils:grass_with_leaves_1", | ||||||
| 		"woodsoils:grass_with_leaves_2" | 		"woodsoils:grass_with_leaves_2", | ||||||
|  | 		"default:dirt_with_rainforest_litter", | ||||||
| 	}, | 	}, | ||||||
| 	avoid_nodes = {"moretrees:jungletree_trunk"}, |  | ||||||
| 	max_count = 12, |  | ||||||
| 	avoid_radius = 3, |  | ||||||
| 	rarity = 85, |  | ||||||
| 	seed_diff = 329, |  | ||||||
| 	min_elevation = 1, | 	min_elevation = 1, | ||||||
| 	near_nodes = {"default:jungletree"}, | 	spawn_by = minetest.get_modpath("default") and {"default:jungletree"} or nil, | ||||||
| 	near_nodes_size = 6, | 	num_spawn_by = minetest.get_modpath("default") and 1 or nil, | ||||||
| 	near_nodes_vertical = 2, | 	biomes = {"rainforest", "rainforest_swamp"}, | ||||||
| 	near_nodes_count = 1, |  | ||||||
| 	plantlife_limit = -0.9, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.spruce_biome = { | moretrees.spruce_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 335, |  | ||||||
| 	min_elevation = 20, | 	min_elevation = 20, | ||||||
| 	temp_min = 0.9, |  | ||||||
| 	temp_max = 0.7, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 5, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.cedar_biome = { | moretrees.cedar_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, | 	min_elevation = 0,  --Added to solve an issue where cedar trees would sometimes spawn deep underground | ||||||
| 	avoid_radius = 10, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	seed_diff = 336, | 	num_spawn_by = 5, | ||||||
| 	near_nodes = {"default:water_source"}, |  | ||||||
| 	near_nodes_size = 15, |  | ||||||
| 	near_nodes_count = 5, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| -- Poplar requires a lot of water. | -- Poplar requires a lot of water. | ||||||
| moretrees.poplar_biome = { | moretrees.poplar_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 6, |  | ||||||
| 	seed_diff = 341, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 50, | 	max_elevation = 50, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 15, | 	num_spawn_by = 1, | ||||||
| 	near_nodes_vertical = 5, |  | ||||||
| 	near_nodes_count = 1, |  | ||||||
| 	humidity_min = -0.7, |  | ||||||
| 	humidity_max = -1, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 15, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| -- The humidity requirement it quite restrictive (apparently). |  | ||||||
| -- Spawn an occasional poplar elsewhere. | -- Spawn an occasional poplar elsewhere. | ||||||
| moretrees.poplar_biome_2 = { | moretrees.poplar_biome_2 = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 6, |  | ||||||
| 	seed_diff = 341, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 50, | 	max_elevation = 50, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 15, | 	num_spawn_by = 10, | ||||||
| 	near_nodes_vertical = 4, |  | ||||||
| 	near_nodes_count = 10, |  | ||||||
| 	humidity_min = 0.1, |  | ||||||
| 	humidity_max = -0.6, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 1, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| -- Subterranean lakes provide enough water for poplars to grow | -- Subterranean lakes provide enough water for poplars to grow | ||||||
| moretrees.poplar_biome_3 = { | moretrees.poplar_biome_3 = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 6, |  | ||||||
| 	seed_diff = 342, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 50, | 	max_elevation = 50, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 1, | 	num_spawn_by = 1, | ||||||
| 	near_nodes_vertical = 25, |  | ||||||
| 	near_nodes_count = 1, |  | ||||||
| 	humidity_min = -0.5, |  | ||||||
| 	humidity_max = -1, |  | ||||||
| 	rarity = 0, |  | ||||||
| 	max_count = 30, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.poplar_small_biome = { | moretrees.poplar_small_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 4, |  | ||||||
| 	seed_diff = 343, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 50, | 	max_elevation = 50, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 10, | 	num_spawn_by = 1, | ||||||
| 	near_nodes_vertical = 5, |  | ||||||
| 	near_nodes_count = 1, |  | ||||||
| 	humidity_min = -0.7, |  | ||||||
| 	humidity_max = -1, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.poplar_small_biome_2 = { | moretrees.poplar_small_biome_2 = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 4, |  | ||||||
| 	seed_diff = 343, |  | ||||||
| 	min_elevation = 0, | 	min_elevation = 0, | ||||||
| 	max_elevation = 50, | 	max_elevation = 50, | ||||||
| 	near_nodes = {"default:water_source"}, | 	spawn_by = {xcompat.materials.water_source}, | ||||||
| 	near_nodes_size = 10, | 	num_spawn_by = 5, | ||||||
| 	near_nodes_vertical = 4, |  | ||||||
| 	near_nodes_count = 5, |  | ||||||
| 	humidity_min = 0.1, |  | ||||||
| 	humidity_max = -0.6, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 3, |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| moretrees.fir_biome = { | moretrees.fir_biome = { | ||||||
| 	surface = "default:dirt_with_grass", | 	place_on = xcompat.materials.dirt_with_grass, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 359, |  | ||||||
| 	min_elevation = 25, | 	min_elevation = 25, | ||||||
| 	temp_min = 0.9, |  | ||||||
| 	temp_max = 0.3, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.fir_biome_snow = { | moretrees.fir_biome_snow = { | ||||||
| 	surface = {"snow:dirt_with_snow", "snow:snow"}, | 	place_on = {"snow:dirt_with_snow", "snow:snow"}, | ||||||
| 	below_nodes = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow"}, | 	below_nodes = {xcompat.materials.dirt, xcompat.materials.dirt_with_grass, "snow:dirt_with_snow"}, | ||||||
| 	avoid_nodes = moretrees.avoidnodes, |  | ||||||
| 	avoid_radius = 10, |  | ||||||
| 	seed_diff = 359, |  | ||||||
| 	rarity = 50, |  | ||||||
| 	max_count = 10, |  | ||||||
| 	check_air = false, |  | ||||||
| 	delete_above = true, |  | ||||||
| 	spawn_replace_node = true |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										104
									
								
								cocos_palm.lua
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								cocos_palm.lua
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| local S = moretrees.intllib |  | ||||||
|  |  | ||||||
| -- © 2016, Rogier <rogier777@gmail.com> | -- © 2016, Rogier <rogier777@gmail.com> | ||||||
|  | -- Translation support | ||||||
|  | local S = minetest.get_translator("moretrees") | ||||||
|  |  | ||||||
| -- Some constants | -- Some constants | ||||||
|  |  | ||||||
| @@ -23,12 +23,16 @@ end | |||||||
| ftrunk.drop = "moretrees:palm_trunk" | ftrunk.drop = "moretrees:palm_trunk" | ||||||
| gftrunk.drop = "moretrees:palm_trunk" | gftrunk.drop = "moretrees:palm_trunk" | ||||||
| ftrunk.after_destruct = function(pos, oldnode) | ftrunk.after_destruct = function(pos, oldnode) | ||||||
| 	local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, {"group:moretrees_coconut"}) | 	local coconuts = minetest.find_nodes_in_area( | ||||||
|  | 		{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 		{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 		{"group:moretrees_coconut"} | ||||||
|  | 	) | ||||||
| 	for _,coconutpos in pairs(coconuts) do | 	for _,coconutpos in pairs(coconuts) do | ||||||
| 		-- minetest.dig_node(coconutpos) does not cause nearby coconuts to be dropped :-( ... | 		-- minetest.dig_node(coconutpos) does not cause nearby coconuts to be dropped :-( ... | ||||||
| 		--minetest.dig_node(coconutpos) | 		--minetest.dig_node(coconutpos) | ||||||
| 		local items = minetest.get_node_drops(minetest.get_node(coconutpos).name) | 		local items = minetest.get_node_drops(minetest.get_node(coconutpos).name) | ||||||
| 		minetest.swap_node(coconutpos, biome_lib.air) | 		minetest.swap_node(coconutpos, {name = "air"}) | ||||||
| 		for _, itemname in pairs(items) do | 		for _, itemname in pairs(items) do | ||||||
| 			minetest.add_item(coconutpos, itemname) | 			minetest.add_item(coconutpos, itemname) | ||||||
| 		end | 		end | ||||||
| @@ -46,7 +50,11 @@ local coconut_regrow_abm_spec = { | |||||||
| 	interval = moretrees.coconut_flower_interval, | 	interval = moretrees.coconut_flower_interval, | ||||||
| 	chance = moretrees.coconut_flower_chance, | 	chance = moretrees.coconut_flower_chance, | ||||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||||
| 		local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "group:moretrees_coconut") | 		local coconuts = minetest.find_nodes_in_area( | ||||||
|  | 			{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 			{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 			"group:moretrees_coconut" | ||||||
|  | 		) | ||||||
| 		-- Expected growth interval increases exponentially with number of coconuts already hanging. | 		-- Expected growth interval increases exponentially with number of coconuts already hanging. | ||||||
| 		-- Also: if more coconuts are hanging, the chance of picking an empty spot decreases as well... | 		-- Also: if more coconuts are hanging, the chance of picking an empty spot decreases as well... | ||||||
| 		if math.random(2^#coconuts) <= 2 then | 		if math.random(2^#coconuts) <= 2 then | ||||||
| @@ -72,19 +80,25 @@ end | |||||||
| --  ABM converts the trunk to a regular fruit trunk, and spawns some coconuts) | --  ABM converts the trunk to a regular fruit trunk, and spawns some coconuts) | ||||||
| minetest.register_abm({ | minetest.register_abm({ | ||||||
| 	nodenames = { "moretrees:palm_fruit_trunk_gen" }, | 	nodenames = { "moretrees:palm_fruit_trunk_gen" }, | ||||||
| 	interval = 1, | 	interval = 6, | ||||||
| 	chance = 1, | 	chance = 1, | ||||||
|  | 	min_y = -16, | ||||||
|  | 	max_y = 48, | ||||||
|  | 	label = "converts palm trunk to a regular fruit trunk, and spawns some coconuts", | ||||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||||
| 		minetest.swap_node(pos, {name="moretrees:palm_fruit_trunk"}) | 		minetest.swap_node(pos, {name="moretrees:palm_fruit_trunk"}) | ||||||
| 		local poslist = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air") | 		local poslist = minetest.find_nodes_in_area( | ||||||
|  | 			{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 			{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 			"air" | ||||||
|  | 		) | ||||||
| 		local genlist = {} | 		local genlist = {} | ||||||
| 		for k,v in pairs(poslist) do | 		for k,v in pairs(poslist) do | ||||||
| 			genlist[k] = {x = math.random(100), pos = v} | 			genlist[k] = {x = math.random(100), pos = v} | ||||||
| 		end | 		end | ||||||
| 		table.sort(genlist, function(a, b) return a.x < b.x; end) | 		table.sort(genlist, function(a, b) return a.x < b.x; end) | ||||||
| 		local gen |  | ||||||
| 		local count = 0 | 		local count = 0 | ||||||
| 		for _,gen in pairs(genlist) do | 		for _, gen in pairs(genlist) do | ||||||
| 			minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"}) | 			minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"}) | ||||||
| 			count = count + 1 | 			count = count + 1 | ||||||
| 			if count == 4 then | 			if count == 4 then | ||||||
| @@ -109,13 +123,14 @@ local coconut_growfn = function(pos, elapsed) | |||||||
| 		-- Drop coconuts (i.e. remove them), so that new coconuts can grow. | 		-- Drop coconuts (i.e. remove them), so that new coconuts can grow. | ||||||
| 		-- Coconuts will drop as items with a small chance | 		-- Coconuts will drop as items with a small chance | ||||||
| 		if math.random(coconut_drop_ichance) == 1 then | 		if math.random(coconut_drop_ichance) == 1 then | ||||||
| 			if moretrees.coconut_item_drop_ichance > 0 and math.random(moretrees.coconut_item_drop_ichance) == 1 then | 			if moretrees.coconut_item_drop_ichance > 0 | ||||||
|  | 				and math.random(moretrees.coconut_item_drop_ichance) == 1 then | ||||||
| 				local items = minetest.get_node_drops(minetest.get_node(pos).name) | 				local items = minetest.get_node_drops(minetest.get_node(pos).name) | ||||||
| 				for _, itemname in pairs(items) do | 				for _, itemname in pairs(items) do | ||||||
| 					minetest.add_item(pos, itemname) | 					minetest.add_item(pos, itemname) | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
| 			minetest.swap_node(pos, biome_lib.air) | 			minetest.swap_node(pos, {name = "air"}) | ||||||
| 		end | 		end | ||||||
| 	else | 	else | ||||||
| 		-- Grow coconuts to the next stage | 		-- Grow coconuts to the next stage | ||||||
| @@ -162,10 +177,11 @@ for _,suffix in ipairs({"_0", "_1", "_2", "_3", ""}) do | |||||||
| 		paramtype = "light", | 		paramtype = "light", | ||||||
| 		sunlight_propagates = true, | 		sunlight_propagates = true, | ||||||
| 		walkable = false, | 		walkable = false, | ||||||
|  | 		is_ground_content = false, | ||||||
| 		groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_coconut=coco_group }, | 		groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_coconut=coco_group }, | ||||||
| 		inventory_image = tile.."^[transformR180", | 		inventory_image = tile.."^[transformR180", | ||||||
| 		wield_image = tile.."^[transformR180", | 		wield_image = tile.."^[transformR180", | ||||||
| 		sounds = default.node_sound_defaults(), | 		sounds = xcompat.sounds.node_sound_default(), | ||||||
| 		drop = drop, | 		drop = drop, | ||||||
| 		selection_box = { | 		selection_box = { | ||||||
| 			type = "fixed", | 			type = "fixed", | ||||||
| @@ -190,55 +206,95 @@ if moretrees.coconuts_convert_existing_palms then | |||||||
| 			local leaves | 			local leaves | ||||||
| 			local coconuts | 			local coconuts | ||||||
| 			-- One regular trunk must be adjacent to  the coconut | 			-- One regular trunk must be adjacent to  the coconut | ||||||
| 			trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 				{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 				"moretrees:palm_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks ~= 1 then | 			if #trunks ~= 1 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			local tpos = trunks[1] | 			local tpos = trunks[1] | ||||||
| 			-- 1 or 2 other trunks must be one level below to the trunk being converted. | 			-- 1 or 2 other trunks must be one level below to the trunk being converted. | ||||||
| 			trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-1, z=tpos.z+1}, "moretrees:palm_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y-1, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y-1, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks < 1 or #trunks > 2 then | 			if #trunks < 1 or #trunks > 2 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- 1 or 2 other trunks must be two levels below to the trunk being converted. | 			-- 1 or 2 other trunks must be two levels below to the trunk being converted. | ||||||
| 			trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-2, z=tpos.z+1}, "moretrees:palm_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y-2, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks < 1 or #trunks > 2 then | 			if #trunks < 1 or #trunks > 2 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- 1 or 2 trunks must at the level of the trunk being converted. | 			-- 1 or 2 trunks must at the level of the trunk being converted. | ||||||
| 			cvtrunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_trunk") | 			cvtrunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_trunk" | ||||||
|  | 			) | ||||||
| 			if #cvtrunks < 1 or #cvtrunks > 2 then | 			if #cvtrunks < 1 or #cvtrunks > 2 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- No trunks may be one level above the trunk being converted. | 			-- No trunks may be one level above the trunk being converted. | ||||||
| 			trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks ~= 0 then | 			if #trunks ~= 0 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- Leaves must be one level above the trunk being converted. | 			-- Leaves must be one level above the trunk being converted. | ||||||
| 			leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_leaves") | 			leaves = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_leaves" | ||||||
|  | 			) | ||||||
| 			if #leaves == 0 then | 			if #leaves == 0 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- Leaves must be two levels above the trunk being converted. | 			-- Leaves must be two levels above the trunk being converted. | ||||||
| 			leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+2, z=tpos.z+1}, "moretrees:palm_leaves") | 			leaves = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y+2, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y+2, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_leaves" | ||||||
|  | 			) | ||||||
| 			if #leaves == 0 then | 			if #leaves == 0 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- No cocos fruit trunk may already be adjacent to the coconut | 			-- No cocos fruit trunk may already be adjacent to the coconut | ||||||
| 			trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_fruit_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 				{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 				"moretrees:palm_fruit_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks ~= 0 then | 			if #trunks ~= 0 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- No cocos fruit trunk may be adjacent to or below the trunk being converted. | 			-- No cocos fruit trunk may be adjacent to or below the trunk being converted. | ||||||
| 			trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_fruit_trunk") | 			trunks = minetest.find_nodes_in_area( | ||||||
|  | 				{x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, | ||||||
|  | 				{x=tpos.x+1, y=tpos.y, z=tpos.z+1}, | ||||||
|  | 				"moretrees:palm_fruit_trunk" | ||||||
|  | 			) | ||||||
| 			if #trunks ~= 0 then | 			if #trunks ~= 0 then | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| 			-- Convert trunk and all coconuts nearby. Maybe convert 2 trunks, just in case... | 			-- Convert trunk and all coconuts nearby. Maybe convert 2 trunks, just in case... | ||||||
| 			for _, tpos in pairs(cvtrunks) do | 			for _, tpos_1 in pairs(cvtrunks) do | ||||||
| 				minetest.swap_node(tpos, {name = "moretrees:palm_fruit_trunk"}) | 				minetest.swap_node(tpos_1, {name = "moretrees:palm_fruit_trunk"}) | ||||||
| 				coconuts = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:coconut") | 				coconuts = minetest.find_nodes_in_area( | ||||||
|  | 					{x=tpos_1.x-1, y=tpos_1.y, z=tpos_1.z-1}, | ||||||
|  | 					{x=tpos_1.x+1, y=tpos_1.y, z=tpos_1.z+1}, | ||||||
|  | 					"moretrees:coconut" | ||||||
|  | 				) | ||||||
| 				for _, coconutpos in pairs(coconuts) do | 				for _, coconutpos in pairs(coconuts) do | ||||||
| 					minetest.swap_node(coconutpos, {name = "moretrees:coconut_3"}) | 					minetest.swap_node(coconutpos, {name = "moretrees:coconut_3"}) | ||||||
| 				end | 				end | ||||||
|   | |||||||
							
								
								
									
										61
									
								
								crafts.lua
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								crafts.lua
									
									
									
									
									
								
							| @@ -1,8 +1,9 @@ | |||||||
| local S = moretrees.intllib | local S = minetest.get_translator("moretrees") | ||||||
|  |  | ||||||
| for i in ipairs(moretrees.treelist) do | for i in ipairs(moretrees.treelist) do | ||||||
| 	local treename = moretrees.treelist[i][1] | 	local treename = moretrees.treelist[i][1] | ||||||
|  |  | ||||||
|  | 	if moretrees.enable_planks then | ||||||
| 		minetest.register_craft({ | 		minetest.register_craft({ | ||||||
| 			type = "shapeless", | 			type = "shapeless", | ||||||
| 			output = "moretrees:"..treename.."_planks 4", | 			output = "moretrees:"..treename.."_planks 4", | ||||||
| @@ -10,6 +11,7 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 				"moretrees:"..treename.."_trunk" | 				"moretrees:"..treename.."_trunk" | ||||||
| 			} | 			} | ||||||
| 		}) | 		}) | ||||||
|  | 	end | ||||||
|  |  | ||||||
| 	minetest.register_craft({ | 	minetest.register_craft({ | ||||||
| 		type = "fuel", | 		type = "fuel", | ||||||
| @@ -38,7 +40,8 @@ minetest.register_craftitem("moretrees:coconut_milk", { | |||||||
| 	description = S("Coconut Milk"), | 	description = S("Coconut Milk"), | ||||||
| 	inventory_image = "moretrees_coconut_milk_inv.png", | 	inventory_image = "moretrees_coconut_milk_inv.png", | ||||||
| 	wield_image = "moretrees_coconut_milk.png", | 	wield_image = "moretrees_coconut_milk.png", | ||||||
| 	on_use = minetest.item_eat(2), | 	on_use = minetest.item_eat(2, "vessels:drinking_glass"), | ||||||
|  | 	groups = {vessel = 1}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_craftitem("moretrees:raw_coconut", { | minetest.register_craftitem("moretrees:raw_coconut", { | ||||||
| @@ -117,11 +120,63 @@ for i in ipairs(moretrees.cutting_tools) do | |||||||
| 		}, | 		}, | ||||||
| 		replacements = { | 		replacements = { | ||||||
| 			{ "moretrees:coconut", "moretrees:raw_coconut" }, | 			{ "moretrees:coconut", "moretrees:raw_coconut" }, | ||||||
| 			{ tool, tool } |  | ||||||
| 		} | 		} | ||||||
| 	}) | 	}) | ||||||
| end | end | ||||||
|  |  | ||||||
|  | -- give tool back with wear preserved | ||||||
|  | minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) | ||||||
|  | 	if (itemstack:get_name() == "moretrees:coconut_milk") then | ||||||
|  | 		for i, j in pairs(old_craft_grid) do | ||||||
|  | 			-- find tool used to do the craft | ||||||
|  | 			local ocg_name = j:get_name() | ||||||
|  | 			if ((ocg_name ~= "") and (ocg_name ~= "moretrees:coconut") and (ocg_name ~= "vessels:drinking_glass")) then | ||||||
|  | 				-- abort if using cutting board | ||||||
|  | 				if minetest.get_item_group(ocg_name, "food_cutting_board") == 1 then | ||||||
|  | 					return | ||||||
|  | 				end | ||||||
|  | 				-- create a new tool and set wear | ||||||
|  | 				local t = ItemStack(ocg_name) | ||||||
|  | 				local w = j:get_wear() | ||||||
|  | 				-- works if tool used is an axe | ||||||
|  | 				local uses = j:get_tool_capabilities().groupcaps.choppy.uses or 0 | ||||||
|  | 				if (w == 0 and uses ~= 0) then | ||||||
|  | 					-- tool has never been used | ||||||
|  | 					-- use tool once | ||||||
|  | 					t:set_wear(65535/(9*(uses - 1))) | ||||||
|  | 				else | ||||||
|  | 					-- set wear back | ||||||
|  | 					t:set_wear(w) | ||||||
|  | 					-- use tool once | ||||||
|  | 					if (uses ~= 0) then | ||||||
|  | 						t:add_wear(65535/(9*(uses - 1))) | ||||||
|  | 					end | ||||||
|  | 				end | ||||||
|  | 				-- add to craft inventory | ||||||
|  | 				craft_inv:add_item("craft", t) | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end) | ||||||
|  |  | ||||||
|  | -- coconut milk using food_cutting_board from farming redo | ||||||
|  | if minetest.registered_items["farming:cutting_board"] then | ||||||
|  | 	minetest.register_craft({ | ||||||
|  | 		type = "shapeless", | ||||||
|  | 		output = "moretrees:coconut_milk", | ||||||
|  | 		recipe = { | ||||||
|  | 			"moretrees:coconut", | ||||||
|  | 			"vessels:drinking_glass", | ||||||
|  | 			"group:food_cutting_board", | ||||||
|  | 		}, | ||||||
|  | 		replacements = { | ||||||
|  | 			{ "moretrees:coconut", "moretrees:raw_coconut" }, | ||||||
|  | 			{ "group:food_cutting_board", "farming:cutting_board" }, | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
| minetest.register_craft({ | minetest.register_craft({ | ||||||
| 	type = "shapeless", | 	type = "shapeless", | ||||||
| 	output = "moretrees:date_nut_snack", | 	output = "moretrees:date_nut_snack", | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ | |||||||
|  |  | ||||||
| -- © 2016, Rogier <rogier777@gmail.com> | -- © 2016, Rogier <rogier777@gmail.com> | ||||||
|  |  | ||||||
| local S = moretrees.intllib | local S = minetest.get_translator("moretrees") | ||||||
|  |  | ||||||
| -- Some constants | -- Some constants | ||||||
|  |  | ||||||
| @@ -44,11 +44,15 @@ for k,v in pairs(trunk.tiles) do | |||||||
| end | end | ||||||
| ftrunk.drop = "moretrees:date_palm_trunk" | ftrunk.drop = "moretrees:date_palm_trunk" | ||||||
| ftrunk.after_destruct = function(pos, oldnode) | ftrunk.after_destruct = function(pos, oldnode) | ||||||
| 	local dates = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, {"group:moretrees_dates"}) | 	local dates = minetest.find_nodes_in_area( | ||||||
|  | 		{x=pos.x-2, y=pos.y, z=pos.z-2}, | ||||||
|  | 		{x=pos.x+2, y=pos.y, z=pos.z+2}, | ||||||
|  | 		{"group:moretrees_dates"} | ||||||
|  | 	) | ||||||
| 	for _,datespos in pairs(dates) do | 	for _,datespos in pairs(dates) do | ||||||
| 		-- minetest.dig_node(datespos) does not cause nearby dates to be dropped :-( ... | 		-- minetest.dig_node(datespos) does not cause nearby dates to be dropped :-( ... | ||||||
| 		local items = minetest.get_node_drops(minetest.get_node(datespos).name) | 		local items = minetest.get_node_drops(minetest.get_node(datespos).name) | ||||||
| 		minetest.swap_node(datespos, biome_lib.air) | 		minetest.swap_node(datespos, {name = "air"}) | ||||||
| 		for _, itemname in pairs(items) do | 		for _, itemname in pairs(items) do | ||||||
| 			minetest.add_item(datespos, itemname) | 			minetest.add_item(datespos, itemname) | ||||||
| 		end | 		end | ||||||
| @@ -79,7 +83,10 @@ local date_regrow_abm_spec = { | |||||||
| 	interval = moretrees.dates_flower_interval, | 	interval = moretrees.dates_flower_interval, | ||||||
| 	chance = moretrees.dates_flower_chance, | 	chance = moretrees.dates_flower_chance, | ||||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||||
| 		local dates = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, "group:moretrees_dates") | 		local dates = minetest.find_nodes_in_area( | ||||||
|  | 			{x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, | ||||||
|  | 			"group:moretrees_dates" | ||||||
|  | 		) | ||||||
|  |  | ||||||
| 		-- New blossom interval increases exponentially with number of dates already hanging | 		-- New blossom interval increases exponentially with number of dates already hanging | ||||||
| 		-- In addition: if more dates are hanging, the chance of picking an empty spot decreases as well... | 		-- In addition: if more dates are hanging, the chance of picking an empty spot decreases as well... | ||||||
| @@ -120,8 +127,11 @@ minetest.register_abm({ | |||||||
| 			type = "m" | 			type = "m" | ||||||
| 			minetest.swap_node(pos, {name="moretrees:date_palm_mfruit_trunk"}) | 			minetest.swap_node(pos, {name="moretrees:date_palm_mfruit_trunk"}) | ||||||
| 		end | 		end | ||||||
| 		local dates1 = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air") | 		local dates1 = minetest.find_nodes_in_area( | ||||||
| 		local genpos | 			{x=pos.x-1, y=pos.y, z=pos.z-1}, | ||||||
|  | 			{x=pos.x+1, y=pos.y, z=pos.z+1}, | ||||||
|  | 			"air" | ||||||
|  | 		) | ||||||
| 		for _,genpos in pairs(dates1) do | 		for _,genpos in pairs(dates1) do | ||||||
| 			if math.random(100) <= 20 then | 			if math.random(100) <= 20 then | ||||||
| 				if type == "m" then | 				if type == "m" then | ||||||
| @@ -131,7 +141,11 @@ minetest.register_abm({ | |||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
| 		local dates2 = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, "air") | 		local dates2 = minetest.find_nodes_in_area( | ||||||
|  | 			{x=pos.x-2, y=pos.y, z=pos.z-2}, | ||||||
|  | 			{x=pos.x+2, y=pos.y, z=pos.z+2}, | ||||||
|  | 			"air" | ||||||
|  | 		) | ||||||
| 		for _,genpos in pairs(dates2) do | 		for _,genpos in pairs(dates2) do | ||||||
| 			if math.random(100) <= 5 then | 			if math.random(100) <= 5 then | ||||||
| 				if type == "m" then | 				if type == "m" then | ||||||
| @@ -195,7 +209,7 @@ local function find_fruit_trunks_near(ftpos, sect) | |||||||
| 	local r = moretrees.dates_pollination_distance + 2 * math.sqrt(2) | 	local r = moretrees.dates_pollination_distance + 2 * math.sqrt(2) | ||||||
| 	local sect_hr = math.floor(r / 3 + 0.9999) | 	local sect_hr = math.floor(r / 3 + 0.9999) | ||||||
| 	local sect_vr = math.floor(r / 2 + 0.9999) | 	local sect_vr = math.floor(r / 2 + 0.9999) | ||||||
| 	local t0us = core.get_us_time() | 	local t0us = minetest.get_us_time() | ||||||
| 	local t0s = os.time() | 	local t0s = os.time() | ||||||
|  |  | ||||||
| 	-- Compute elapsed time since last search. | 	-- Compute elapsed time since last search. | ||||||
| @@ -217,7 +231,8 @@ local function find_fruit_trunks_near(ftpos, sect) | |||||||
| 	-- Skip the search if it is consuming too much CPU time | 	-- Skip the search if it is consuming too much CPU time | ||||||
| 	if sect_search_stats.count > 0 and moretrees.dates_blossom_search_iload > 0 | 	if sect_search_stats.count > 0 and moretrees.dates_blossom_search_iload > 0 | ||||||
| 			and sect_search_stats.sum / sect_search_stats.count > moretrees.dates_blossom_search_time_treshold | 			and sect_search_stats.sum / sect_search_stats.count > moretrees.dates_blossom_search_time_treshold | ||||||
| 			and t0us - sect_search_stats.last_us < moretrees.dates_blossom_search_iload * (sect_search_stats.sum / sect_search_stats.count) then | 			and t0us - sect_search_stats.last_us < moretrees.dates_blossom_search_iload | ||||||
|  | 			* (sect_search_stats.sum / sect_search_stats.count) then | ||||||
| 		sect_search_stats.skip = sect_search_stats.skip + 1 | 		sect_search_stats.skip = sect_search_stats.skip + 1 | ||||||
| 		return nil | 		return nil | ||||||
| 	end | 	end | ||||||
| @@ -266,7 +281,7 @@ local function find_fruit_trunks_near(ftpos, sect) | |||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	-- Update search statistics | 	-- Update search statistics | ||||||
| 	local t1us = core.get_us_time() | 	local t1us = minetest.get_us_time() | ||||||
| 	if t1us < t0us then | 	if t1us < t0us then | ||||||
| 		-- Wraparound. Assume the search lasted less than 2^32 microseconds (~71 min) | 		-- Wraparound. Assume the search lasted less than 2^32 microseconds (~71 min) | ||||||
| 		-- (so no need to apply another correction) | 		-- (so no need to apply another correction) | ||||||
| @@ -306,7 +321,7 @@ minetest.register_chatcommand("dates_stats", { | |||||||
| 	params = "|chat|log|reset", | 	params = "|chat|log|reset", | ||||||
| 	privs = { server = true }, | 	privs = { server = true }, | ||||||
| 	func = function(name, param) | 	func = function(name, param) | ||||||
| 		param = string.lower(string.trim(param)) | 		param = string.lower(param:gsub("%s+", "")) | ||||||
| 		if param == "" or param == "chat" then | 		if param == "" or param == "chat" then | ||||||
| 			return dates_print_search_stats(false) | 			return dates_print_search_stats(false) | ||||||
| 		elseif param == "log" then | 		elseif param == "log" then | ||||||
| @@ -470,7 +485,10 @@ local function find_male_blossom_with_ftrunk(fbpos,ftpos) | |||||||
| 		end | 		end | ||||||
| 		-- Else do a new search | 		-- Else do a new search | ||||||
| 		if not mpalms.sect[sect_old] then | 		if not mpalms.sect[sect_old] then | ||||||
| 			mpalms.sect[sect_old], fpalms_list, all_mpalms_list = find_fruit_trunks_near(ftpos, {x = (sect_old + 4) % 3 - 1, z = (sect_old + 4) / 3 - 1}) | 			mpalms.sect[sect_old], fpalms_list, all_mpalms_list = find_fruit_trunks_near( | ||||||
|  | 				ftpos, | ||||||
|  | 				{x = (sect_old + 4) % 3 - 1, z = (sect_old + 4) / 3 - 1} | ||||||
|  | 			) | ||||||
| 			cache_changed = true | 			cache_changed = true | ||||||
| 			if sect_old == 0 then | 			if sect_old == 0 then | ||||||
| 				-- Save the results if it is sector 0 | 				-- Save the results if it is sector 0 | ||||||
| @@ -526,7 +544,6 @@ end | |||||||
| local dates_growfn = function(pos, elapsed) | local dates_growfn = function(pos, elapsed) | ||||||
| 	local node = minetest.get_node(pos) | 	local node = minetest.get_node(pos) | ||||||
| 	local delay = moretrees.dates_grow_interval | 	local delay = moretrees.dates_grow_interval | ||||||
| 	local r = moretrees.dates_pollination_distance |  | ||||||
| 	local action | 	local action | ||||||
| 	if not node then | 	if not node then | ||||||
| 		return | 		return | ||||||
| @@ -537,7 +554,7 @@ local dates_growfn = function(pos, elapsed) | |||||||
| 		elseif string.find(node.name, "moretrees:dates_m") then | 		elseif string.find(node.name, "moretrees:dates_m") then | ||||||
| 			minetest.swap_node(pos, {name="moretrees:dates_n"}) | 			minetest.swap_node(pos, {name="moretrees:dates_n"}) | ||||||
| 		else | 		else | ||||||
| 			minetest.swap_node(pos, biome_lib.air) | 			minetest.swap_node(pos, {name = "air"}) | ||||||
| 		end | 		end | ||||||
| 		return | 		return | ||||||
| 	elseif node.name == "moretrees:dates_f0" and math.random(100) <= 100 * dates_regrow_prob then | 	elseif node.name == "moretrees:dates_f0" and math.random(100) <= 100 * dates_regrow_prob then | ||||||
| @@ -577,7 +594,7 @@ local dates_growfn = function(pos, elapsed) | |||||||
| 	elseif string.match(node.name, "n$") then | 	elseif string.match(node.name, "n$") then | ||||||
| 		-- Remove stems. | 		-- Remove stems. | ||||||
| 		if math.random(stems_drop_ichance) == 1 then | 		if math.random(stems_drop_ichance) == 1 then | ||||||
| 			minetest.swap_node(pos, biome_lib.air) | 			minetest.swap_node(pos, {name = "air"}) | ||||||
| 			return "stemdrop" | 			return "stemdrop" | ||||||
| 		end | 		end | ||||||
| 		action = "nostemdrop" | 		action = "nostemdrop" | ||||||
| @@ -594,15 +611,16 @@ local dates_growfn = function(pos, elapsed) | |||||||
| 	return action | 	return action | ||||||
| end | end | ||||||
|  |  | ||||||
|  | --[[ | ||||||
| -- Alternate growth function for dates. | -- Alternate growth function for dates. | ||||||
| -- It calls the primary growth function, but also measures CPU time consumed. | -- It calls the primary growth function, but also measures CPU time consumed. | ||||||
| -- Use this function to analyze date growing performance. | -- Use this function to analyze date growing performance. | ||||||
| local stat = {} | local stat = {} | ||||||
| stat.count = 0 | stat.count = 0 | ||||||
| local dates_growfn_profiling = function(pos, elapsed) | local dates_growfn_profiling = function(pos, elapsed) | ||||||
| 	local t0 = core.get_us_time() | 	local t0 = minetest.get_us_time() | ||||||
| 	local action = dates_growfn(pos, elapsed) | 	local action = dates_growfn(pos, elapsed) | ||||||
| 	local t1 = core.get_us_time() | 	local t1 = minetest.get_us_time() | ||||||
| 	if t1 < t0 then | 	if t1 < t0 then | ||||||
| 		t1 = t1 + 2^32 | 		t1 = t1 + 2^32 | ||||||
| 	end | 	end | ||||||
| @@ -656,6 +674,7 @@ local dates_growfn_profiling = function(pos, elapsed) | |||||||
| 			"TOTAL", count, sum/count)) | 			"TOTAL", count, sum/count)) | ||||||
| 	end | 	end | ||||||
| end | end | ||||||
|  | --]] | ||||||
|  |  | ||||||
| -- Register dates | -- Register dates | ||||||
|  |  | ||||||
| @@ -704,10 +723,11 @@ for _,suffix in ipairs({"f0", "f1", "f2", "f3", "f4", "m0", "fn", "n"}) do | |||||||
| 		paramtype = "light", | 		paramtype = "light", | ||||||
| 		sunlight_propagates = true, | 		sunlight_propagates = true, | ||||||
| 		walkable = false, | 		walkable = false, | ||||||
|  | 		is_ground_content = false, | ||||||
| 		groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_dates=1 }, | 		groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_dates=1 }, | ||||||
| 		inventory_image = "moretrees_dates_"..suffix..".png^[transformR0", | 		inventory_image = "moretrees_dates_"..suffix..".png^[transformR0", | ||||||
| 		wield_image = "moretrees_dates_"..suffix..".png^[transformR90", | 		wield_image = "moretrees_dates_"..suffix..".png^[transformR90", | ||||||
| 		sounds = default.node_sound_defaults(), | 		sounds = xcompat.sounds.node_sound_default(), | ||||||
| 		drop = dropfn, | 		drop = dropfn, | ||||||
| 		selection_box = { | 		selection_box = { | ||||||
| 			type = "fixed", | 			type = "fixed", | ||||||
|   | |||||||
| @@ -1,131 +0,0 @@ | |||||||
| -- Global configuration variables |  | ||||||
|  |  | ||||||
| -- Enable the various kinds of trees. |  | ||||||
|  |  | ||||||
| moretrees.enable_apple_tree		= true |  | ||||||
| moretrees.enable_oak			= true |  | ||||||
| moretrees.enable_sequoia		= true |  | ||||||
| moretrees.enable_palm			= true |  | ||||||
| moretrees.enable_date_palm		= true |  | ||||||
| moretrees.enable_cedar			= true |  | ||||||
| moretrees.enable_rubber_tree	= true |  | ||||||
| moretrees.enable_willow			= true |  | ||||||
| moretrees.enable_birch			= true |  | ||||||
| moretrees.enable_spruce			= true |  | ||||||
| moretrees.enable_jungle_tree	= true |  | ||||||
| moretrees.enable_fir			= true |  | ||||||
| moretrees.enable_poplar			= true |  | ||||||
| moretrees.enable_beech			= false |  | ||||||
|  |  | ||||||
| -- set this to true to make moretrees spawn saplings at mapgen time instead |  | ||||||
| -- of fully-grown trees, which will grow into full trees after a very short |  | ||||||
| -- delay.  This reduces mapgen lag in some situations, and fixes situations |  | ||||||
| -- where the mapgen conflicts with the tree generator. |  | ||||||
|  |  | ||||||
| moretrees.spawn_saplings		= true |  | ||||||
|  |  | ||||||
| -- Set this to true to allow defining stairs/slabs/etc.  If Moreblocks is |  | ||||||
| -- installed, this will use that mod's Stairs Plus component.  Otherwise, it  |  | ||||||
| -- will use the default stairs mod in minetest_game, if present |  | ||||||
|  |  | ||||||
| moretrees.enable_stairs			= true |  | ||||||
|  |  | ||||||
| -- Set this to true if you want the plantlike drawtype for leaves, which  |  | ||||||
| -- improves some peoples' framerates without resorting to making leaf nodes opaque. |  | ||||||
| -- Affects default leaves and default jungle leaves also. |  | ||||||
|  |  | ||||||
| moretrees.plantlike_leaves		= false |  | ||||||
|  |  | ||||||
| -- Enable this if you want moretrees to redefine default apples so that they |  | ||||||
| -- fall when leaves decay/are dug. |  | ||||||
|  |  | ||||||
| moretrees.enable_redefine_apple		= true |  | ||||||
|  |  | ||||||
| -- Set this to true to enable leaf decay of all trees except the default ones. |  | ||||||
|  |  | ||||||
| moretrees.enable_leafdecay		= true |  | ||||||
|  |  | ||||||
| -- various related settings to configure leaf decay. |  | ||||||
|  |  | ||||||
| moretrees.leafdecay_delay		= 2 |  | ||||||
| moretrees.leafdecay_chance		= 5 |  | ||||||
| moretrees.leafdecay_radius		= 5 |  | ||||||
| moretrees.palm_leafdecay_radius		= 10 |  | ||||||
|  |  | ||||||
| -- Change these settings if you want default trees to be gradually cut down |  | ||||||
| -- above the elevation where firs normally generate. |  | ||||||
|  |  | ||||||
| moretrees.firs_remove_default_trees	= false |  | ||||||
| moretrees.firs_remove_interval		= 2 |  | ||||||
| moretrees.firs_remove_chance		= 150 |  | ||||||
|  |  | ||||||
| -- Cocos palm settings |  | ||||||
|  |  | ||||||
| moretrees.coconuts_regrow		= true |  | ||||||
| moretrees.coconuts_convert_existing_palms = true	-- Converting existing palm trees will make coconuts regrow on them as well |  | ||||||
| 							-- Else, they will only regrow on newly-spawned palms |  | ||||||
| 							-- However, conversion is not an exact science, and although an attempt is |  | ||||||
| 							-- made to detect whether a trunk belongs to an actual palm, some coconut trunks |  | ||||||
| 							-- and some coconuts may be incorrectly converted. |  | ||||||
| moretrees.coconut_flower_interval	= 59 |  | ||||||
| moretrees.coconut_flower_chance		= 67 |  | ||||||
| moretrees.coconut_grow_interval		= 2 * moretrees.coconut_flower_interval * moretrees.coconut_flower_chance |  | ||||||
| 							-- Actual interval will randomly vary between 67% and 133% of this value |  | ||||||
| 							-- 2 * 59 * 67 ~ 2 hours. So flowers become coconuts in about 6 hours |  | ||||||
| moretrees.coconut_item_drop_ichance	= 10 		-- inverse probability of ripe coconuts dropping as items (instead of disappearing) |  | ||||||
|  |  | ||||||
| -- Date palm settings |  | ||||||
|  |  | ||||||
| -- Suggested configuration alternatives: |  | ||||||
| -- - Dates grow only when pollinated: |  | ||||||
| --   - Set dates_regrow_pollinated to true |  | ||||||
| --   - Set dates_regrow_unpollinated_percent to 0 |  | ||||||
| -- - Dates grow without pollination. Pollination disabled: |  | ||||||
| --   - Set dates_regrow_pollinated to false |  | ||||||
| --   - Set dates_regrow_unpollinated_percent to some larger positive value, e.g. 95 |  | ||||||
| -- - Dates grow, but more and faster if male flowers are nearby |  | ||||||
| --   - Set dates_regrow_pollinated to true |  | ||||||
| --   - Set dates_regrow_unpollinated_percent to some small positive value, e.g. 33 |  | ||||||
| --   - Optional but recommended: Reduce the pollination distance, e.g. to 30 |  | ||||||
|  |  | ||||||
| -- Note that it should not be necessary to disable pollination for performance |  | ||||||
| -- reasons. A lot of effort has gone into ensuring that date growing will not cause lag. |  | ||||||
| -- |  | ||||||
| -- If lag is suspected, use the chat command '/dates_stats' to obtain the male dates |  | ||||||
| -- search time, as well as the counts of total number of searches requested and the |  | ||||||
| -- number of searches actually performed. |  | ||||||
|  |  | ||||||
| moretrees.dates_regrow_pollinated	= true		-- Enable pollination. If enabled, male trees are required for dates to grow. |  | ||||||
| 							-- If disabled, dates_regrow_unpollinated_percent must be non-zero for dates to regrow. |  | ||||||
| moretrees.dates_regrow_unpollinated_percent	= 0	-- Percentage of female dates becoming dates without being pollinated. |  | ||||||
| 							-- If 0, dates_regrow_pollinated must be enabled for dates to grow. |  | ||||||
| moretrees.dates_female_percent		= 57		-- Ratio of female to male trees - tune this to improve # of generated trees that actually bear fruit |  | ||||||
| 							-- ~57% gives near optimal results for groups of 3 random trees, while it is only slightly suboptimal |  | ||||||
| 							-- for groups of 2 and 4 random trees (~2% less fruit than optimal). |  | ||||||
| 							-- Optimal values per group size: 2: 50%, 3: 57.78%, 4: 63%, 5: 66.9%, 6: 69.9%, [...], 12: 79.8% |  | ||||||
| 							-- So 57% is optimal for small groups of trees. As larger groups have more female palms anyway, a |  | ||||||
| 							-- less than optimal proportion of female to male trees is not a problem. |  | ||||||
| moretrees.dates_pollination_distance	= 120 |  | ||||||
| moretrees.dates_blossom_search_time_treshold = 1000	-- If average male blossom search time (in microseconds) exceeds this, start limiting the search load. |  | ||||||
| moretrees.dates_blossom_search_iload = 10		-- Inverse fraction of CPU time that male blossom searching search may consume. |  | ||||||
| 							-- As searching a large area (radius: dates_pollination_distance/3 per attempt) can cause lag, |  | ||||||
| 							-- this limits the search frequency server-wide so that the impact on server lag is minimised |  | ||||||
| 							-- For personal servers, this can be set lower, or even to 1 or 0 (0 disables load limiting). |  | ||||||
| 							-- Obtain the current average search time using /dates_stats |  | ||||||
| moretrees.dates_flower_interval		= 59 |  | ||||||
| moretrees.dates_flower_chance		= 181 |  | ||||||
| moretrees.dates_grow_interval		= 2 * moretrees.dates_flower_interval * moretrees.dates_flower_chance |  | ||||||
| 							-- As date palms have a high yield, don't grow dates too fast |  | ||||||
| 							-- The actual interval will vary randomly between 67% and 133% of this value. |  | ||||||
| 							-- 2 * 59 * 181 ~ 6 hours. So by default flowers become dates in about one (human) day. |  | ||||||
| moretrees.dates_item_drop_ichance	= 10 		-- inverse probability of ripe dates dropping as items (instead of disappearing) |  | ||||||
|  |  | ||||||
| -- Sapling settings |  | ||||||
|  |  | ||||||
| moretrees.sapling_interval		= 500 |  | ||||||
| moretrees.sapling_chance		= 20 |  | ||||||
|  |  | ||||||
| -- If this variable is set to true, drop leaves out as entities during leaf |  | ||||||
| -- decay, rather than just disappearing them. |  | ||||||
|  |  | ||||||
| moretrees.decay_leaves_as_items = false |  | ||||||
| @@ -1,8 +0,0 @@ | |||||||
| default |  | ||||||
| biome_lib |  | ||||||
| vessels |  | ||||||
| stairs? |  | ||||||
| moreblocks? |  | ||||||
| intllib? |  | ||||||
| farming? |  | ||||||
|  |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| This mod adds a whole bunch of new types of trees to the game |  | ||||||
							
								
								
									
										309
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										309
									
								
								init.lua
									
									
									
									
									
								
							| @@ -15,37 +15,71 @@ | |||||||
|  |  | ||||||
| moretrees = {} | moretrees = {} | ||||||
|  |  | ||||||
|  | local S = minetest.get_translator("moretrees") | ||||||
|  |  | ||||||
|  | if minetest.get_modpath("default") then | ||||||
|  | 	minetest.override_item("default:sapling", { | ||||||
|  | 		description = S("Sapling") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("default:tree", { | ||||||
|  | 		description = S("Tree") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("default:wood", { | ||||||
|  | 		description = S("Wooden Planks") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("default:leaves", { | ||||||
|  | 		description = S("Leaves") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("default:fence_wood", { | ||||||
|  | 		description = S("Wooden Fence") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("default:fence_rail_wood", { | ||||||
|  | 		description = S("Wooden Fence Rail") | ||||||
|  | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | if minetest.get_modpath("doors") then | ||||||
|  | 	minetest.override_item("doors:gate_wood_closed", { | ||||||
|  | 		description = S("Wooden Fence Gate") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	minetest.override_item("doors:gate_wood_open", { | ||||||
|  | 		description = S("Wooden Fence Gate") | ||||||
|  | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
| -- Read the default config file (and if necessary, copy it to the world folder). | -- Read the default config file (and if necessary, copy it to the world folder). | ||||||
|  |  | ||||||
| local worldpath=minetest.get_worldpath() | local worldpath=minetest.get_worldpath() | ||||||
| local modpath=minetest.get_modpath("moretrees") | local modpath=minetest.get_modpath("moretrees") | ||||||
|  |  | ||||||
| dofile(modpath.."/default_settings.txt") | dofile(modpath.."/settings.lua") | ||||||
|  |  | ||||||
| if io.open(worldpath.."/moretrees_settings.txt","r") then | if io.open(worldpath.."/moretrees_settings.txt","r") then | ||||||
| 	io.close() | 	io.close() | ||||||
| 	dofile(worldpath.."/moretrees_settings.txt") | 	dofile(worldpath.."/moretrees_settings.txt") | ||||||
| end | end | ||||||
|  |  | ||||||
| -- Boilerplate to support localized strings if intllib mod is installed. | -- Validate that if ethereal exists, that it's version is greater than 20220424. | ||||||
| local S | -- Lower versions of ethereal clear registered biomes and decorations during | ||||||
| if minetest.get_modpath("intllib") then | -- initialization which results in lost content from this mod (and others) | ||||||
| 	S = intllib.Getter() | -- depending on where they are in the mod load order. | ||||||
| else | minetest.register_on_mods_loaded(function() | ||||||
| 	S = function(s) return s end | 	if minetest.global_exists("ethereal") then | ||||||
| end | 		local ethereal_ver = tonumber(ethereal.version) | ||||||
| moretrees.intllib = S | 		if (ethereal_ver and ethereal_ver < 20220424) then | ||||||
|  | 			error("[moretrees] The version of ethereal detected can result " .. | ||||||
| -- clone node | 				  "in parts of this mod and others disappearing due to mod " .. | ||||||
|  | 				  "load order. Please update ethereal."); | ||||||
| function moretrees.clone_node(name) |  | ||||||
| 	local node2 = {} |  | ||||||
| 	local node = minetest.registered_nodes[name] |  | ||||||
| 	for k,v in pairs(node) do |  | ||||||
| 		node2[k]=v |  | ||||||
| 		end | 		end | ||||||
| 	return node2 | 	end | ||||||
| end | end) | ||||||
|  |  | ||||||
| -- infinite stacks checking | -- infinite stacks checking | ||||||
|  |  | ||||||
| @@ -59,10 +93,10 @@ end | |||||||
| -- tables, load other files | -- tables, load other files | ||||||
|  |  | ||||||
| moretrees.cutting_tools = { | moretrees.cutting_tools = { | ||||||
| 	"default:axe_bronze", |  | ||||||
| 	"default:axe_diamond", |  | ||||||
| 	"default:axe_mese", | 	"default:axe_mese", | ||||||
| 	"default:axe_steel", | 	xcompat.materials.axe_steel, | ||||||
|  | 	xcompat.materials.axe_diamond, | ||||||
|  | 	xcompat.materials.axe_bronze, | ||||||
| 	"glooptest:axe_alatro", | 	"glooptest:axe_alatro", | ||||||
| 	"glooptest:axe_arol", | 	"glooptest:axe_arol", | ||||||
| 	"moreores:axe_mithril", | 	"moreores:axe_mithril", | ||||||
| @@ -79,111 +113,105 @@ dofile(modpath.."/saplings.lua") | |||||||
| dofile(modpath.."/crafts.lua") | dofile(modpath.."/crafts.lua") | ||||||
|  |  | ||||||
| -- tree spawning setup | -- tree spawning setup | ||||||
|  | moretrees.spawn_beech_object = moretrees.beech_model | ||||||
|  | moretrees.spawn_apple_tree_object = moretrees.apple_tree_model | ||||||
|  | moretrees.spawn_oak_object = moretrees.oak_model | ||||||
|  | moretrees.spawn_sequoia_object = moretrees.sequoia_model | ||||||
|  | moretrees.spawn_palm_object = moretrees.palm_model | ||||||
|  | moretrees.spawn_date_palm_object = moretrees.date_palm_model | ||||||
|  | moretrees.spawn_cedar_object = moretrees.cedar_model | ||||||
|  | moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model | ||||||
|  | moretrees.spawn_willow_object = moretrees.willow_model | ||||||
|  | moretrees.spawn_birch_object = "moretrees.grow_birch" | ||||||
|  | moretrees.spawn_spruce_object = "moretrees.grow_spruce" | ||||||
|  | moretrees.spawn_jungletree_object = "moretrees.grow_jungletree" | ||||||
|  | moretrees.spawn_fir_object = "moretrees.grow_fir" | ||||||
|  | moretrees.spawn_fir_snow_object = "moretrees.grow_fir_snow" | ||||||
|  | moretrees.spawn_poplar_object = moretrees.poplar_model | ||||||
|  | moretrees.spawn_poplar_small_object = moretrees.poplar_small_model | ||||||
|  |  | ||||||
| if moretrees.spawn_saplings then | local deco_ids = {} | ||||||
| 	moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen" |  | ||||||
| 	moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen" | function translate_biome_defs(def, treename, index) | ||||||
| 	moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen" | 	if not index then index = 1 end | ||||||
| 	moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen" | 	local deco_def = { | ||||||
| 	moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen" | 		name = treename .. "_" .. index, | ||||||
| 	moretrees.spawn_date_palm_object = "moretrees:date_palm_sapling_ongen" | 		deco_type = "simple", | ||||||
| 	moretrees.spawn_cedar_object = "moretrees:cedar_sapling_ongen" | 		place_on = def.place_on, | ||||||
| 	moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen" | 		sidelen = 16, | ||||||
| 	moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen" | 		fill_ratio = def.fill_ratio or 0.001, | ||||||
| 	moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen" | 		--biomes eventually? | ||||||
| 	moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen" | 		y_min = def.min_elevation, | ||||||
| 	moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen" | 		y_max = def.max_elevation, | ||||||
| 	moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen" | 		spawn_by = def.spawn_by, | ||||||
| 	moretrees.spawn_fir_snow_object = "snow:sapling_pine" | 		num_spawn_by = def.num_spawn_by, | ||||||
| 	moretrees.spawn_poplar_object = "moretrees:poplar_sapling_ongen" | 		decoration = "moretrees:"..treename.."_sapling_ongen" | ||||||
| 	moretrees.spawn_poplar_small_object = "moretrees:poplar_small_sapling_ongen" | 	} | ||||||
| else |  | ||||||
| 	moretrees.spawn_beech_object = moretrees.beech_model | 	deco_ids[#deco_ids+1] = treename .. ("_" .. index or "_1") | ||||||
| 	moretrees.spawn_apple_tree_object = moretrees.apple_tree_model |  | ||||||
| 	moretrees.spawn_oak_object = moretrees.oak_model | 	return deco_def | ||||||
| 	moretrees.spawn_sequoia_object = moretrees.sequoia_model |  | ||||||
| 	moretrees.spawn_palm_object = moretrees.palm_model |  | ||||||
| 	moretrees.spawn_date_palm_object = moretrees.date_palm_model |  | ||||||
| 	moretrees.spawn_cedar_object = moretrees.cedar_model |  | ||||||
| 	moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model |  | ||||||
| 	moretrees.spawn_willow_object = moretrees.willow_model |  | ||||||
| 	moretrees.spawn_birch_object = "moretrees.grow_birch" |  | ||||||
| 	moretrees.spawn_spruce_object = "moretrees.grow_spruce" |  | ||||||
| 	moretrees.spawn_jungletree_object = "moretrees.grow_jungletree" |  | ||||||
| 	moretrees.spawn_fir_object = "moretrees.grow_fir" |  | ||||||
| 	moretrees.spawn_fir_snow_object = "moretrees.grow_fir_snow" |  | ||||||
| 	moretrees.spawn_poplar_object = moretrees.poplar_model |  | ||||||
| 	moretrees.spawn_poplar_small_object = moretrees.poplar_small_model |  | ||||||
| end | end | ||||||
|  |  | ||||||
| if moretrees.enable_beech then | if moretrees.spawn_enabled then | ||||||
| 	biome_lib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object) | 	minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech")) | ||||||
| end | 	minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree")) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak")) | ||||||
| if moretrees.enable_apple_tree then | 	minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia")) | ||||||
| 	biome_lib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object) | 	minetest.register_decoration(translate_biome_defs(moretrees.palm_biome, "palm")) | ||||||
| end | 	minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "date_palm", 1)) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "date_palm", 2)) | ||||||
| if moretrees.enable_oak then | 	minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar")) | ||||||
| 	biome_lib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object) | 	minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "rubber_tree")) | ||||||
| end | 	minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow")) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch")) | ||||||
| if moretrees.enable_sequoia then | 	minetest.register_decoration(translate_biome_defs(moretrees.spruce_biome, "spruce")) | ||||||
| 	biome_lib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object) | 	if minetest.get_modpath("default") then | ||||||
| end | 		minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree")) | ||||||
|  |  | ||||||
| if moretrees.enable_palm then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_date_palm then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.date_palm_biome, moretrees.spawn_date_palm_object) |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.date_palm_biome_2, moretrees.spawn_date_palm_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_cedar then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.cedar_biome, moretrees.spawn_cedar_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_rubber_tree then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_willow then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_birch then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_spruce then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_jungle_tree then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| if moretrees.enable_fir then |  | ||||||
| 	biome_lib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object) |  | ||||||
| 	if minetest.get_modpath("snow") then |  | ||||||
| 		biome_lib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object) |  | ||||||
| 	end | 	end | ||||||
| end | 	minetest.register_decoration(translate_biome_defs(moretrees.fir_biome, "fir", 1)) | ||||||
|  | 	if minetest.get_modpath("snow") then | ||||||
|  | 		minetest.register_decoration(translate_biome_defs(moretrees.fir_biome_snow, "fir", 2)) | ||||||
|  | 	end | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "poplar", 1)) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "poplar", 2)) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "poplar", 3)) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome, "poplar_small", 4)) | ||||||
|  | 	minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome_2, "poplar_small", 5)) | ||||||
|  |  | ||||||
| if moretrees.enable_poplar then | 	--[[ | ||||||
| 	biome_lib:register_generate_plant(moretrees.poplar_biome, moretrees.spawn_poplar_object) | 		this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids | ||||||
| 	biome_lib:register_generate_plant(moretrees.poplar_biome_2, moretrees.spawn_poplar_object) | 		if other mods clear the registered decorations | ||||||
| 	biome_lib:register_generate_plant(moretrees.poplar_biome_3, moretrees.spawn_poplar_object) | 	]] | ||||||
| 	biome_lib:register_generate_plant(moretrees.poplar_small_biome, moretrees.spawn_poplar_small_object) | 	minetest.register_on_mods_loaded(function() | ||||||
| 	biome_lib:register_generate_plant(moretrees.poplar_small_biome_2, moretrees.spawn_poplar_small_object) | 			for k, v in pairs(deco_ids) do | ||||||
|  | 				deco_ids[k] = minetest.get_decoration_id(v) | ||||||
|  | 			end | ||||||
|  | 			minetest.set_gen_notify("decoration", deco_ids) | ||||||
|  | 	end) | ||||||
|  |  | ||||||
|  | 	minetest.register_on_generated(function(minp, maxp, blockseed) | ||||||
|  | 			local g = minetest.get_mapgen_object("gennotify") | ||||||
|  | 			local locations = {} | ||||||
|  | 			for _, id in pairs(deco_ids) do | ||||||
|  | 				local deco_locations = g["decoration#" .. id] or {} | ||||||
|  | 				for _, pos in pairs(deco_locations) do | ||||||
|  | 					locations[#locations+1] = pos | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
|  |  | ||||||
|  | 			if #locations == 0 then return end | ||||||
|  | 			for _, pos in ipairs(locations) do | ||||||
|  | 				local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z}) | ||||||
|  | 				timer:start(math.random(2,10)) | ||||||
|  | 			end | ||||||
|  | 	end) | ||||||
| end | end | ||||||
|  |  | ||||||
| -- Code to spawn a birch tree | -- Code to spawn a birch tree | ||||||
|  |  | ||||||
| function moretrees.grow_birch(pos) | function moretrees.grow_birch(pos) | ||||||
| 	minetest.swap_node(pos, biome_lib.air) | 	minetest.swap_node(pos, {name = "air"}) | ||||||
| 	if math.random(1,2) == 1 then | 	if math.random(1,2) == 1 then | ||||||
| 		minetest.spawn_tree(pos, moretrees.birch_model1) | 		minetest.spawn_tree(pos, moretrees.birch_model1) | ||||||
| 	else | 	else | ||||||
| @@ -194,7 +222,7 @@ end | |||||||
| -- Code to spawn a spruce tree | -- Code to spawn a spruce tree | ||||||
|  |  | ||||||
| function moretrees.grow_spruce(pos) | function moretrees.grow_spruce(pos) | ||||||
| 	minetest.swap_node(pos, biome_lib.air) | 	minetest.swap_node(pos, {name = "air"}) | ||||||
| 	if math.random(1,2) == 1 then | 	if math.random(1,2) == 1 then | ||||||
| 		minetest.spawn_tree(pos, moretrees.spruce_model1) | 		minetest.spawn_tree(pos, moretrees.spruce_model1) | ||||||
| 	else | 	else | ||||||
| @@ -209,6 +237,7 @@ moretrees.jt_rules_a1 = "FFF[&&-FBf[&&&Ff]^^^Ff][&&+FBFf[&&&FFf]^^^Ff][&&---FBFf | |||||||
| moretrees.jt_rules_b1 = "[-Ff&f][+Ff&f]B" | moretrees.jt_rules_b1 = "[-Ff&f][+Ff&f]B" | ||||||
|  |  | ||||||
| moretrees.jt_axiom2 = "FFFFFA" | moretrees.jt_axiom2 = "FFFFFA" | ||||||
|  | -- luacheck: no max line length | ||||||
| moretrees.jt_rules_a2 = "FFFFF[&&-FFFBF[&&&FFff]^^^FFf][&&+FFFBFF[&&&FFff]^^^FFf][&&---FFFBFF[&&&FFff]^^^FFf][&&+++FFFBFF[&&&FFff]^^^FFf]FF/A" | moretrees.jt_rules_a2 = "FFFFF[&&-FFFBF[&&&FFff]^^^FFf][&&+FFFBFF[&&&FFff]^^^FFf][&&---FFFBFF[&&&FFff]^^^FFf][&&+++FFFBFF[&&&FFff]^^^FFf]FF/A" | ||||||
| moretrees.jt_rules_b2 = "[-FFf&ff][+FFf&ff]B" | moretrees.jt_rules_b2 = "[-FFf&ff][+FFf&ff]B" | ||||||
|  |  | ||||||
| @@ -248,10 +277,13 @@ function moretrees.grow_jungletree(pos) | |||||||
| 		moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2 | 		moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2 | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	minetest.swap_node(pos, biome_lib.air) | 	minetest.swap_node(pos, {name = "air"}) | ||||||
| 	local leaves = minetest.find_nodes_in_area({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1}, "default:leaves") | 	local leaves = minetest.find_nodes_in_area( | ||||||
|  | 		{x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1}, | ||||||
|  | 		xcompat.materials.apple_leaves | ||||||
|  | 	) | ||||||
| 	for leaf in ipairs(leaves) do | 	for leaf in ipairs(leaves) do | ||||||
| 			minetest.swap_node(leaves[leaf], biome_lib.air) | 			minetest.swap_node(leaves[leaf], {name = "air"}) | ||||||
| 	end | 	end | ||||||
| 	minetest.spawn_tree(pos, moretrees.jungletree_model) | 	minetest.spawn_tree(pos, moretrees.jungletree_model) | ||||||
| end | end | ||||||
| @@ -275,10 +307,14 @@ function moretrees.grow_fir(pos) | |||||||
| 	moretrees.fir_model.iterations = 7 | 	moretrees.fir_model.iterations = 7 | ||||||
| 	moretrees.fir_model.random_level = 5 | 	moretrees.fir_model.random_level = 5 | ||||||
|  |  | ||||||
| 	minetest.swap_node(pos, biome_lib.air) | 	minetest.swap_node(pos, {name = "air"}) | ||||||
| 	local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves") | 	local leaves = minetest.find_nodes_in_area( | ||||||
|  | 		{x = pos.x, y = pos.y, z = pos.z}, | ||||||
|  | 		{x = pos.x, y = pos.y+5, z = pos.z}, | ||||||
|  | 		xcompat.materials.apple_leaves | ||||||
|  | 	) | ||||||
| 	for leaf in ipairs(leaves) do | 	for leaf in ipairs(leaves) do | ||||||
| 		minetest.swap_node(leaves[leaf], biome_lib.air) | 		minetest.swap_node(leaves[leaf], {name = "air"}) | ||||||
| 	end | 	end | ||||||
| 	minetest.spawn_tree(pos,moretrees.fir_model) | 	minetest.spawn_tree(pos,moretrees.fir_model) | ||||||
| end | end | ||||||
| @@ -302,12 +338,29 @@ function moretrees.grow_fir_snow(pos) | |||||||
| 	moretrees.fir_model.iterations = 2 | 	moretrees.fir_model.iterations = 2 | ||||||
| 	moretrees.fir_model.random_level = 2 | 	moretrees.fir_model.random_level = 2 | ||||||
|  |  | ||||||
| 	minetest.swap_node(pos, biome_lib.air) | 	minetest.swap_node(pos, {name = "air"}) | ||||||
| 	local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves") | 	local leaves = minetest.find_nodes_in_area( | ||||||
|  | 		{x = pos.x, y = pos.y, z = pos.z}, | ||||||
|  | 		{x = pos.x, y = pos.y+5, z = pos.z}, | ||||||
|  | 		xcompat.materials.apple_leaves | ||||||
|  | 	) | ||||||
| 	for leaf in ipairs(leaves) do | 	for leaf in ipairs(leaves) do | ||||||
| 			minetest.swap_node(leaves[leaf], biome_lib.air) | 			minetest.swap_node(leaves[leaf], {name = "air"}) | ||||||
| 	end | 	end | ||||||
| 	minetest.spawn_tree(pos,moretrees.fir_model) | 	minetest.spawn_tree(pos,moretrees.fir_model) | ||||||
| end | end | ||||||
|  |  | ||||||
| print(S("[Moretrees] Loaded (2013-02-11)")) | if moretrees.grow_legacy_saplings then | ||||||
|  | 	minetest.register_lbm({ | ||||||
|  | 		name = "moretrees:grow_ongen_saplings", | ||||||
|  | 		label = "Grow legacy ongen saplings", | ||||||
|  | 		nodenames = {"group:moretrees_ongen"}, | ||||||
|  | 		run_at_every_load = true, | ||||||
|  | 		action = function(pos) | ||||||
|  | 			minetest.log("info", "[moretrees] Starting growth timer for legacy ongen sapling at "..minetest.pos_to_string(pos, 0)) | ||||||
|  | 			minetest.get_node_timer(pos):start(math.random(2, 10)) | ||||||
|  | 		end | ||||||
|  | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | minetest.log("info", "[moretrees] Loading done") | ||||||
|   | |||||||
| @@ -1,73 +0,0 @@ | |||||||
| # Translation by Xanthin |  | ||||||
|  |  | ||||||
| ### crafts.lua ### |  | ||||||
| Coconut Milk = Kokosnussmilch |  | ||||||
| Raw Coconut = Kokosnussfleisch |  | ||||||
| Acorn Muffin batter = Eichelmuffinteig |  | ||||||
| Acorn Muffin = Eichelmuffin |  | ||||||
| Roasted Spruce Cone Nuts = Geroestete Fichtenzapfen |  | ||||||
| Roasted Pine Cone Nuts = Geroestete Kiefernzapfen |  | ||||||
| Roasted Fir Cone Nuts = Geroestete Tannenzapfen |  | ||||||
|  |  | ||||||
| ### node_defs.lua ### |  | ||||||
| Beech Tree Trunk = Buchenstamm |  | ||||||
| Apple Tree Trunk = Apfelbaumstamm |  | ||||||
| Oak Tree Trunk = Eichenstamm |  | ||||||
| Giant Sequoia Trunk = Riesenmammutbaumstamm |  | ||||||
| Birch Tree Trunk = Birkenstamm |  | ||||||
| Palm Tree Trunk = Palmenstamm |  | ||||||
| Spruce Tree Trunk = Fichtenstamm |  | ||||||
| Pine Tree Trunk = Kiefernstamm |  | ||||||
| Willow Tree Trunk = Weidenstamm |  | ||||||
| Rubber Tree Trunk = Gummibaumstamm |  | ||||||
| Jungle Tree Trunk = Tropenbaumstamm |  | ||||||
| Douglas Fir Trunk = Douglasienstamm |  | ||||||
| Beech Tree Planks = Buchebretter |  | ||||||
| Apple Tree Planks = Apfelbaumbretter |  | ||||||
| Oak Tree Planks = Eichenbretter |  | ||||||
| Giant Sequoia Planks = Riesenmammutbaumbretter |  | ||||||
| Birch Tree Planks = Birkebretter |  | ||||||
| Palm Tree Planks = Palmenbretter |  | ||||||
| Spruce Tree Planks = Fichtenbretter |  | ||||||
| Pine Tree Planks = Kiefernbretter |  | ||||||
| Willow Tree Planks = Weidenbretter |  | ||||||
| Rubber Tree Planks = Gummibaumbretter |  | ||||||
| Jungle Tree Planks = Tropenholzbretter |  | ||||||
| Douglas Fir Planks = Douglasienbretter |  | ||||||
| Beech Tree Sapling = Buchesetzling |  | ||||||
| Apple Tree Sapling = Apfelbaumsetzling |  | ||||||
| Oak Tree Sapling = Eichensetzling |  | ||||||
| Giant Sequoia Sapling = Riesenmammutbaumsetzling |  | ||||||
| Birch Tree Sapling = Birkensetzling |  | ||||||
| Palm Tree Sapling = Palmensetzling |  | ||||||
| Spruce Tree Sapling = Fichtensetzling |  | ||||||
| Pine Tree Sapling = Kiefernsetzling |  | ||||||
| Willow Tree Sapling = Weidensetzling |  | ||||||
| Rubber Tree Sapling = Gummibaumsetzling |  | ||||||
| Jungle Tree Sapling = Tropenbaumsetzling |  | ||||||
| Douglas Fir Sapling = Douglasiensetzling |  | ||||||
| Beech Tree Leaves = Buchenlaub |  | ||||||
| Apple Tree Leaves = Apfelbaumlaub |  | ||||||
| Oak Tree Leaves = Eichenlaub |  | ||||||
| Giant Sequoia Leaves = Riesenmammutbaumlaub |  | ||||||
| Birch Tree Leaves = Birkenlaub |  | ||||||
| Palm Tree Leaves = Palmenlaub |  | ||||||
| Spruce Tree Leaves = Fichtennadeln |  | ||||||
| Pine Tree Leaves = Kiefernnadeln |  | ||||||
| Willow Tree Leaves = Weidenlaub |  | ||||||
| Rubber Tree Leaves = Gummibaumlaub |  | ||||||
| Jungle Tree Leaves = Tropenbaumlaub |  | ||||||
| Douglas Fir Leaves = Douglasiennadeln |  | ||||||
|  |  | ||||||
| Acorn = Eichel |  | ||||||
| Coconut = Kokosnuss |  | ||||||
| Spruce Cone = Fichtenzapfen |  | ||||||
| Pine Cone = Kiefernzapfen |  | ||||||
| Fir Cone = Tannenzapfen |  | ||||||
| Jungle Sapling = Tropenbaumsetzling |  | ||||||
| Jungle Tree Leaves (Yellow) = Tropenbaumlaub (gelb) |  | ||||||
| Jungle Tree Leaves (Red) = Tropenbaumlaub (rot) |  | ||||||
| Douglas Fir Leaves (Bright) = Douglasiennadeln (breit) |  | ||||||
| Rubber Tree Trunk (Empty) = Gummibaumstamm (leer) |  | ||||||
|  |  | ||||||
| [Moretrees] Loaded (2013-02-11) = [Moretrees] geladen (2013-02-11) |  | ||||||
							
								
								
									
										100
									
								
								locale/es.txt
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								locale/es.txt
									
									
									
									
									
								
							| @@ -1,100 +0,0 @@ | |||||||
| # Traducido por Carlos Barraza |  | ||||||
|  |  | ||||||
| ### crafts.lua ### |  | ||||||
| Coconut Milk = Leche de Coco |  | ||||||
| Raw Coconut = Coco crudo |  | ||||||
| Acorn Muffin batter =  Masa de Mollete de Bellota |  | ||||||
| Acorn Muffin = Mollete de Bellota |  | ||||||
| Roasted Spruce Cone Nuts = Cono de Picea Tostado |  | ||||||
| Roasted Pine Cone Nuts = Cono de Pino Tostado |  | ||||||
| Roasted Fir Cone Nuts = Cono de Abeto Tostado |  | ||||||
| Roasted Cedar Cone Nuts = Coco de Alamo Tostado |  | ||||||
| Date = Datilera |  | ||||||
| Date & nut snack = Datilera y Nueces |  | ||||||
| Date-nut cake batter = Pasta de torta de Datilera |  | ||||||
| Date-nut cake = Pastel de Datilera |  | ||||||
| Date-nut energy bar = Barra energetica de Datilera |  | ||||||
|  |  | ||||||
| ### date_palm.lua ### |  | ||||||
| Dates = Datilera |  | ||||||
| Date Stem = Tallo de Datilera |  | ||||||
| Date Flowers = Flores de Datilera |  | ||||||
|  |  | ||||||
| ### node_defs.lua ### |  | ||||||
| Beech Tree Trunk = Tronco de Arbol de Haya |  | ||||||
| Apple Tree Trunk = Tronco de Arbol de Manzana |  | ||||||
| Oak Tree Trunk = Tronco de Arbol de Roble |  | ||||||
| Giant Sequoia Trunk = Tronco de Sequoia Gigante |  | ||||||
| Birch Tree Trunk = Tronco de Arbol de Abedul |  | ||||||
| Palm Tree Trunk = Tronco de Palmera |  | ||||||
| Spruce Tree Trunk = Tronco de Arbol de Abeto |  | ||||||
| Willow Tree Trunk = Tronco de Arbol de Sauce |  | ||||||
| Rubber Tree Trunk = Tronco de Arbol de Arbol de Goma |  | ||||||
| Jungle Tree = Tronco de Arbol de Arbol de la Selva |  | ||||||
| Douglas Fir Trunk = Tronco de Arbol de Abeto de Douglas |  | ||||||
| Cedar Tree Trunk = Tronco de Arbol de Cedro |  | ||||||
| Date Palm Tree Trunk = Tronco de Palmera Datilera |  | ||||||
| Acacia Tree Trunk = Tronco de Arbol de Acacia |  | ||||||
| Poplar Tree Trunk = Tronco de Arbol de Alamo |  | ||||||
|  |  | ||||||
| Beech Tree Planks = Madera de Arbol de Haya |  | ||||||
| Apple Tree Planks = Madera de Arbol de Manzana |  | ||||||
| Oak Tree Planks = Madera de Arbol de Roble |  | ||||||
| Giant Sequoia Planks = Madera de Sequoia Gigante |  | ||||||
| Birch Tree Planks = Madera de Arbol de Abedul |  | ||||||
| Palm Tree Planks = Madera de Palmera |  | ||||||
| Spruce Tree Planks = Madera de Arbol de Abeto |  | ||||||
| Willow Tree Planks = Madera de Arbol de Sauce |  | ||||||
| Rubber Tree Planks = Madera de Arbol de Arbol de Goma |  | ||||||
| Jungle Planks = Madera de Arbol de Arbol de la Selva |  | ||||||
| Douglas Fir Planks = Madera de Arbol de Abeto de Douglas |  | ||||||
| Cedar Tree Planks = Madera de Arbol de Cedro |  | ||||||
| Date Palm Tree Planks = Madera de Palmera Datilera |  | ||||||
| Acacia Tree Planks = Madera de Arbol de Acacia |  | ||||||
| Poplar Tree Planks = Madera de Arbol de Alamo |  | ||||||
|  |  | ||||||
| Beech Tree Sapling = Retoño de Arbol de Haya |  | ||||||
| Apple Tree Sapling = Retoño de Arbol de Manzana |  | ||||||
| Oak Tree Sapling = Retoño de Arbol de Roble |  | ||||||
| Giant Sequoia Sapling = Retoño de Arbol de Sequoia Gigante |  | ||||||
| Birch Tree Sapling = Retoño de Arbol de Abedul |  | ||||||
| Palm Tree Sapling = Retoño de Palmera |  | ||||||
| Spruce Tree Sapling = Retoño de Arbol de Abeto |  | ||||||
| Willow Tree Sapling = Retoño de Arbol de Sauce |  | ||||||
| Rubber Tree Sapling = Retoño de Arbol de Arbol de Goma |  | ||||||
| Jungle Sapling = Retoño de Arbol de Arbol de la Selva |  | ||||||
| Douglas Fir Sapling = Retoño de Arbol de Abeto de Douglas |  | ||||||
| Cedar Tree Sapling = Retoño de Arbol de Cedro |  | ||||||
| Date Palm Tree Tree Sapling = Retoño de Palmera Datilera |  | ||||||
| Acacia Tree Sapling = Retoño de Arbol de Acacia |  | ||||||
| Poplar Tree Sapling = Retoño de Arbol de Alamo |  | ||||||
|  |  | ||||||
| Beech Tree Leaves = Hojas de Arbol de Haya |  | ||||||
| Apple Tree Leaves = Hojas de Arbol de Manzana |  | ||||||
| Oak Tree Leaves = Hojas de Arbol de Roble |  | ||||||
| Giant Sequoia Leaves = Hojas de Sequoia Gigante |  | ||||||
| Birch Tree Leaves = Hojas de Arbol de Abedul |  | ||||||
| Palm Tree Leaves = Hojas de Palmera |  | ||||||
| Spruce Tree Leaves = Hojas de Arbol de Abeto |  | ||||||
| Willow Tree Leaves = Hojas de Arbol de Sauce |  | ||||||
| Rubber Tree Leaves = Hojas de Arbol de Arbol de Goma |  | ||||||
| Jungle Leaves = Hojas de Arbol de Arbol de la Selva |  | ||||||
| Douglas Fir Leaves = Hojas de Arbol de Abeto de Douglas |  | ||||||
| Cedar Tree Leaves = Hojas de Arbol de Cedro |  | ||||||
| Date Palm Tree Tree Leaves = Hojas de Palmera Datilera |  | ||||||
| Acacia Tree Leaves = Hojas de Arbol de Acacia |  | ||||||
| Poplar Tree Leaves = Hojas de Arbol de Alamo |  | ||||||
|  |  | ||||||
| Acorn = Bellota |  | ||||||
| Coconut = Coco |  | ||||||
| Spruce Cone = Coco de Picea |  | ||||||
| Pine Cone = Coco de Pino |  | ||||||
| Fir Cone = Coco de Abeto |  | ||||||
| Cedar Cone = Coco de Alamo |  | ||||||
| Jungle Sapling = Retoño de Arbol de la Selva |  | ||||||
| Jungle Tree Leaves (Yellow) = Hojas de Arbol de la Selva (Amarilla) |  | ||||||
| Jungle Tree Leaves (Red) = Hojas de Arbol de la Selva (Roja) |  | ||||||
| Douglas Fir Leaves (Bright) = Hojas de Arbol de Abeto de Douglas (Brillante) |  | ||||||
| Rubber Tree Trunk (Empty) = Tronco de Arbol de Goma (Vacio) |  | ||||||
|  |  | ||||||
| [Moretrees] Loaded (2013-02-11) = [Masarboles] Cargado |  | ||||||
| @@ -1,74 +0,0 @@ | |||||||
| # Traduction par Yoan31 |  | ||||||
| #  |  | ||||||
|  |  | ||||||
| ### crafts.lua ### |  | ||||||
| Coconut Milk = Lait de Coco |  | ||||||
| Raw Coconut = Noix de Coco Crue |  | ||||||
| Acorn Muffin batter = Pate à Muffins au Gland |  | ||||||
| Acorn Muffin = Muffins au Gland |  | ||||||
| Roasted Spruce Cone Nuts = Noix de Cône de Sapin Roties |  | ||||||
| Roasted Pine Cone Nuts = Noix de Pomme de pin Roties |  | ||||||
| Roasted Fir Cone Nuts = Noix de Cône de Sapin Roties |  | ||||||
|  |  | ||||||
| ### node_defs.lua ### |  | ||||||
| Beech Tree Trunk = Tronc d'Arbre de Hêtre |  | ||||||
| Apple Tree Trunk = Tronc d'Arbre de Pommier |  | ||||||
| Oak Tree Trunk = Tronc d'Arbre de chêne |  | ||||||
| Giant Sequoia Trunk = Tronc d'Arbre de Séquoia Géant |  | ||||||
| Birch Tree Trunk = Tronc d'Arbre de bouleau |  | ||||||
| Palm Tree Trunk = Tronc d'Arbre de Palmier |  | ||||||
| Spruce Tree Trunk = Tronc d'Arbre d'Epicéa |  | ||||||
| Pine Tree Trunk = Tronc d'Arbre de Pin |  | ||||||
| Willow Tree Trunk = Tronc d'Arbre de Saule |  | ||||||
| Rubber Tree Trunk = Tronc d'Arbre a Caoutchouc |  | ||||||
| Jungle Tree Trunk = Tronc d'Arbre de la Jungle |  | ||||||
| Douglas Fir Trunk = Tronc de Sapin de Douglas |  | ||||||
| Beech Tree Planks = Planches de Hêtre |  | ||||||
| Apple Tree Planks = Planches de Pommier |  | ||||||
| Oak Tree Planks = Planches de Chêne |  | ||||||
| Giant Sequoia Planks = Planches de d'Arbre de Séquoia Géant |  | ||||||
| Birch Tree Planks = Planches d'Arbre de bouleau |  | ||||||
| Palm Tree Planks = Planches d'Arbre de Palmier |  | ||||||
| Spruce Tree Planks = Planches d'Arbre d'Epicéa |  | ||||||
| Pine Tree Planks = Planches d'Arbre de Pin |  | ||||||
| Willow Tree Planks = Planches d'Arbre de Saule |  | ||||||
| Rubber Tree Planks = Planches d'Arbre a Caoutchouc |  | ||||||
| Jungle Tree Planks = Planches d'Arbre de la Jungle |  | ||||||
| Douglas Fir Planks = Planches de Sapin de Douglas |  | ||||||
| Beech Tree Sapling = Pousse d'Arbre de Hêtre |  | ||||||
| Apple Tree Sapling = Pousse d'Arbre de Pommier |  | ||||||
| Oak Tree Sapling = Pousse d'Arbre de chêne |  | ||||||
| Giant Sequoia Sapling = Pousse d'Arbre de Séquoia Géant |  | ||||||
| Birch Tree Sapling = Pousse d'Arbre de bouleau |  | ||||||
| Palm Tree Sapling = Pousse d'Arbre de Palmier |  | ||||||
| Spruce Tree Sapling = Pousse d'Arbre d'Epicéa |  | ||||||
| Pine Tree Sapling = Pousse d'Arbre de Pin |  | ||||||
| Willow Tree Sapling = Pousse d'Arbre de Saule |  | ||||||
| Rubber Tree Sapling = Pousse d'Arbre a Caoutchouc |  | ||||||
| Jungle Tree Sapling = Pousse d'Arbre de la Jungle |  | ||||||
| Douglas Fir Sapling = Pousse de Sapin de Douglas |  | ||||||
| Beech Tree Leaves = Feuilles d'Arbre de Hêtre |  | ||||||
| Apple Tree Leaves = Feuilles d'Arbre de Pommier |  | ||||||
| Oak Tree Leaves = Feuilles d'Arbre de chêne |  | ||||||
| Giant Sequoia Leaves = Feuilles d'Arbre de Séquoia Géant |  | ||||||
| Birch Tree Leaves = Feuilles d'Arbre de bouleau |  | ||||||
| Palm Tree Leaves = Feuilles d'Arbre de Palmier |  | ||||||
| Spruce Tree Leaves = Feuilles d'Arbre d'Epicéa |  | ||||||
| Pine Tree Leaves = Feuilles d'Arbre de Pin |  | ||||||
| Willow Tree Leaves = Feuilles d'Arbre de Saule |  | ||||||
| Rubber Tree Leaves = Feuilles d'Arbre a Caoutchouc |  | ||||||
| Jungle Tree Leaves = Feuilles d'Arbre de la Jungle |  | ||||||
| Douglas Fir Leaves = Feuilles de Sapin de Douglas |  | ||||||
|  |  | ||||||
| Acorn = Gland |  | ||||||
| Coconut = Noix de Coco |  | ||||||
| Spruce Cone = Cône de Sapin |  | ||||||
| Pine Cone = Pomme de Pin |  | ||||||
| Fir Cone = Pomme de Sapin |  | ||||||
| Jungle Sapling = Pousse d'Arbre de la Jungle |  | ||||||
| Jungle Tree Leaves (Yellow) = Feuille d'Arbre de la Jungle (Jaune) |  | ||||||
| Jungle Tree Leaves (Red) =  Feuille d'Arbre de la Jungle (Rouge) |  | ||||||
| Douglas Fir Leaves (Bright) = Feuille de Sapin de Douglas (Brillant) |  | ||||||
| Rubber Tree Trunk (Empty) = Tronc d'Arbre en Caoutchouc (Vide) |  | ||||||
|  |  | ||||||
| [Moretrees] Loaded (2013-02-11) =  |  | ||||||
							
								
								
									
										220
									
								
								locale/moretrees.de.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								locale/moretrees.de.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | |||||||
|  | # textdomain: moretrees | ||||||
|  | # Translation by Xanthin and heavygale | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### cocos_palm.lua ### | ||||||
|  |  | ||||||
|  | Coconut=Kokosnuss | ||||||
|  | Coconut Flower=Kokosnussblüte | ||||||
|  |  | ||||||
|  | ### crafts.lua ### | ||||||
|  |  | ||||||
|  | Acorn Muffin=Eichelmuffin | ||||||
|  | Acorn Muffin batter=Eichelmuffinteig | ||||||
|  | Coconut Milk=Kokosnussmilch | ||||||
|  | Date=Dattel | ||||||
|  | Date & nut snack=Dattel & Nuss-Snack | ||||||
|  | Date-nut cake=Dattelnusskuchen | ||||||
|  | Date-nut cake batter=Dattelnuss-Kuchenteig | ||||||
|  | Date-nut energy bar=Dattelnuss-Energieriegel | ||||||
|  | Raw Coconut=Kokosnussfleisch | ||||||
|  | Roasted Cedar Cone Nuts=Geröstete Zedernzapfenkerne | ||||||
|  | Roasted Fir Cone Nuts=Geroestete Tannenzapfenkerne | ||||||
|  | Roasted Spruce Cone Nuts=Geroestete Fichtenzapfenkerne | ||||||
|  |  | ||||||
|  | ### date_palm.lua ### | ||||||
|  |  | ||||||
|  | Date Flowers=Dattelblüten | ||||||
|  | Date Stem=Dattelstamm | ||||||
|  | Dates=Datteln | ||||||
|  |  | ||||||
|  | ### node_defs.lua ### | ||||||
|  |  | ||||||
|  | @1 (fast growth)=@1 (schnelles Wachstum) | ||||||
|  | Acorn=Eichel | ||||||
|  | Apple Tree=Apfelbaum | ||||||
|  | Apple Tree Fence=Apfelbaum-Zaun | ||||||
|  | Apple Tree Fence Gate=Apfelbaum-Tor | ||||||
|  | Apple Tree Fence Rail=Apfelbaum-Schiene | ||||||
|  | Apple Tree Leaves=Apfelbaumlaub | ||||||
|  | Apple Tree Planks=Apfelbaumbretter | ||||||
|  | Apple Tree Planks Slab=Apfelbaumplatte | ||||||
|  | Apple Tree Planks Stair=Apfelbaumstufe | ||||||
|  | Apple Tree Sapling=Apfelbaumsetzling | ||||||
|  | Apple Tree Trunk=Apfelbaumstamm | ||||||
|  | Apple Tree Trunk Slab=Apfelbaumstammplatte | ||||||
|  | Apple Tree Trunk Stair=Apfelbaumstammstufe | ||||||
|  | Beech Tree=Buche | ||||||
|  | Beech Tree Fence=Buchenholz-Zaun | ||||||
|  | Beech Tree Fence Gate=Buchenholz-Tor | ||||||
|  | Beech Tree Fence Rail=Buchenholz-Schiene | ||||||
|  | Beech Tree Leaves=Buchenlaub | ||||||
|  | Beech Tree Planks=Buchenholzbretter | ||||||
|  | Beech Tree Planks Slab=Buchenholzplatte | ||||||
|  | Beech Tree Planks Stair=Buchenholzstufe  | ||||||
|  | Beech Tree Sapling=Buchesetzling | ||||||
|  | Beech Tree Trunk=Buchenstamm | ||||||
|  | Beech Tree Trunk Slab=Buchenstammplatte | ||||||
|  | Beech Tree Trunk Stair=Buchenstammstufe | ||||||
|  | Birch Tree=Birke | ||||||
|  | Birch Tree Fence=Birkenholz-Zaun | ||||||
|  | Birch Tree Fence Gate=Birkenholz-Tor | ||||||
|  | Birch Tree Fence Rail=Birkenholz-Schiene | ||||||
|  | Birch Tree Leaves=Birkenlaub | ||||||
|  | Birch Tree Planks=Birkenbretter | ||||||
|  | Birch Tree Planks Slab=Birkenholzplatte | ||||||
|  | Birch Tree Planks Stair=Birkeholzstufe | ||||||
|  | Birch Tree Sapling=Birkensetzling | ||||||
|  | Birch Tree Trunk=Birkenstamm | ||||||
|  | Birch Tree Trunk Slab=Birkenstammplatte | ||||||
|  | Birch Tree Trunk Stair=Birkenstammstufe | ||||||
|  | Cedar Cone=Zedernzapfen | ||||||
|  | Cedar Tree=Zeder | ||||||
|  | Cedar Tree Fence=Zedernholz-Zaun | ||||||
|  | Cedar Tree Fence Gate=Zedernholz-Tor | ||||||
|  | Cedar Tree Fence Rail=Zedernholz-Schiene | ||||||
|  | Cedar Tree Leaves=Zederblätter | ||||||
|  | Cedar Tree Planks=Zedernholzbretter | ||||||
|  | Cedar Tree Planks Slab=Zedernholzplatte | ||||||
|  | Cedar Tree Planks Stair=Zedernholzstufe | ||||||
|  | Cedar Tree Sapling=Zedersetzling | ||||||
|  | Cedar Tree Trunk=Zederstamm | ||||||
|  | Cedar Tree Trunk Slab=Zederstammplatte | ||||||
|  | Cedar Tree Trunk Stair=Zederstamm Stufe | ||||||
|  | Date Palm Tree=Dattelpalme | ||||||
|  | Date Palm Tree Fence=Dattelpalmen-Zaun | ||||||
|  | Date Palm Tree Fence Gate=Dattelpalmen-Tor | ||||||
|  | Date Palm Tree Fence Rail=Dattelpalmen-Schiene | ||||||
|  | Date Palm Tree Leaves=Dattelpalmenblätter | ||||||
|  | Date Palm Tree Planks=Dattelpalmenbretter | ||||||
|  | Date Palm Tree Planks Slab=Dattelpalmenplatte | ||||||
|  | Date Palm Tree Planks Stair=Dattelpalmenstufe | ||||||
|  | Date Palm Tree Sapling=Dattelpalmensetzling | ||||||
|  | Date Palm Tree Trunk=Dattelpalmenstamm | ||||||
|  | Date Palm Tree Trunk Slab=Dattelpalmenstammplatte | ||||||
|  | Date Palm Tree Trunk Stair=Dattelpalmenstammstufe | ||||||
|  | Douglas Fir=Douglasie | ||||||
|  | Douglas Fir Fence=Douglasien-Zaun | ||||||
|  | Douglas Fir Fence Gate=Douglasien-Tor | ||||||
|  | Douglas Fir Fence Rail=Douglasien-Schiene | ||||||
|  | Douglas Fir Leaves=Douglasiennadeln | ||||||
|  | Douglas Fir Leaves (Bright)=Douglasiennadeln (breit) | ||||||
|  | Douglas Fir Planks=Douglasienbretter | ||||||
|  | Douglas Fir Planks Slab=Douglasienplatte | ||||||
|  | Douglas Fir Planks Stair=Douglasienstufe | ||||||
|  | Douglas Fir Sapling=Douglasiensetzling | ||||||
|  | Douglas Fir Trunk=Douglasienstamm | ||||||
|  | Douglas Fir Trunk Slab=Douglasienstammplatte | ||||||
|  | Douglas Fir Trunk Stair=Douglasienstammstufe | ||||||
|  | Fir Cone=Tannenzapfen | ||||||
|  | Giant Sequoia=Riesenmammutbaum | ||||||
|  | Giant Sequoia Fence=Riesenmammutbaum-Zaun | ||||||
|  | Giant Sequoia Fence Gate=Riesenmammutbaum-Tor | ||||||
|  | Giant Sequoia Fence Rail=Riesenmammutbaum-Schiene | ||||||
|  | Giant Sequoia Leaves=Riesenmammutbaumlaub | ||||||
|  | Giant Sequoia Planks=Riesenmammutbaumbretter | ||||||
|  | Giant Sequoia Planks Slab=Riesenmammutbaumplatte | ||||||
|  | Giant Sequoia Planks Stair=Riesenmammutbaumstufe | ||||||
|  | Giant Sequoia Sapling=Riesenmammutbaumsetzling | ||||||
|  | Giant Sequoia Trunk=Riesenmammutbaumstamm | ||||||
|  | Giant Sequoia Trunk Slab=Riesenmammutbaumstammplatte | ||||||
|  | Giant Sequoia Trunk Stair=Riesenmammutbaumstammstufe | ||||||
|  | Jungle Tree=Tropenbaum | ||||||
|  | Jungle Tree Fence=Tropenbaum-Zaun | ||||||
|  | Jungle Tree Fence Gate=Tropenbaum-Tor | ||||||
|  | Jungle Tree Fence Rail=Tropenbaum-Schiene | ||||||
|  | Jungle Tree Leaves=Tropenbaumlaub | ||||||
|  | Jungle Tree Leaves (@1)=Tropenbaumlaub (@1) | ||||||
|  | Jungle Tree Planks=Tropenholzbretter | ||||||
|  | Jungle Tree Planks Slab=Tropenholzplatte | ||||||
|  | Jungle Tree Planks Stair=Tropenholzstufe | ||||||
|  | Jungle Tree Sapling=Tropenbaumsetzling | ||||||
|  | Jungle Tree Trunk=Tropenbaumstamm | ||||||
|  | Jungle Tree Trunk Slab=Tropenbaumstammplatte | ||||||
|  | Jungle Tree Trunk Stair=Tropenbaumstammstufe | ||||||
|  | Oak Tree=Eiche | ||||||
|  | Oak Tree Fence=Eichenholz-Zaun | ||||||
|  | Oak Tree Fence Gate=Eichenholz-Tor | ||||||
|  | Oak Tree Fence Rail=Eichenholz-Schiene | ||||||
|  | Oak Tree Leaves=Eichenlaub | ||||||
|  | Oak Tree Planks=Eichenbretter | ||||||
|  | Oak Tree Planks Slab=Eichenholzplatte | ||||||
|  | Oak Tree Planks Stair=Eichenholzstufe | ||||||
|  | Oak Tree Sapling=Eichensetzling | ||||||
|  | Oak Tree Trunk=Eichenstamm | ||||||
|  | Oak Tree Trunk Slab=Eichenstammplatte | ||||||
|  | Oak Tree Trunk Stair=Eichenstammstufe | ||||||
|  | Palm Tree=Palme | ||||||
|  | Palm Tree Fence=Plamenholz-Zaun | ||||||
|  | Palm Tree Fence Gate=Plamenholz-Tor | ||||||
|  | Palm Tree Fence Rail=Plamenholz-Schiene | ||||||
|  | Palm Tree Leaves=Palmenlaub | ||||||
|  | Palm Tree Planks=Palmenbretter | ||||||
|  | Palm Tree Planks Slab=Plamenholzplatte | ||||||
|  | Palm Tree Planks Stair=Plamenholzstufe | ||||||
|  | Palm Tree Sapling=Palmensetzling | ||||||
|  | Palm Tree Trunk=Palmenstamm | ||||||
|  | Palm Tree Trunk Slab=Palmenstammplatte | ||||||
|  | Palm Tree Trunk Stair=Palmenstammstufe | ||||||
|  | Poplar Tree=Pappel | ||||||
|  | Poplar Tree Fence=Pappelholz-Zaun | ||||||
|  | Poplar Tree Fence Gate=Pappelholz-Tor | ||||||
|  | Poplar Tree Fence Rail=Pappelholz-Schiene | ||||||
|  | Poplar Tree Leaves=Pappelblätter | ||||||
|  | Poplar Tree Planks=Pappelholzbretter | ||||||
|  | Poplar Tree Planks Slab=Pappelholzsplatte | ||||||
|  | Poplar Tree Planks Stair=Pappelholzstufe | ||||||
|  | Poplar Tree Sapling=Pappelsetzling | ||||||
|  | Poplar Tree Trunk=Pappelstamm | ||||||
|  | Poplar Tree Trunk Slab=Pappelstammplatte | ||||||
|  | Poplar Tree Trunk Stair=Pappelstammstufe | ||||||
|  | Red=rot | ||||||
|  | Rubber Tree=Gummibaum | ||||||
|  | Rubber Tree Fence=Gummibaum-Zaun | ||||||
|  | Rubber Tree Fence Gate=Gummibaum-Tor | ||||||
|  | Rubber Tree Fence Rail=Gummibaum-Schiene | ||||||
|  | Rubber Tree Leaves=Gummibaumlaub | ||||||
|  | Rubber Tree Planks=Gummibaumbretter | ||||||
|  | Rubber Tree Planks Slab=Gummibaumplatte | ||||||
|  | Rubber Tree Planks Stair=Gummibaumstufe | ||||||
|  | Rubber Tree Sapling=Gummibaumsetzling | ||||||
|  | Rubber Tree Trunk=Gummibaumstamm | ||||||
|  | Rubber Tree Trunk (Empty)=Gummibaumstamm (leer) | ||||||
|  | Rubber Tree Trunk Slab=Gummibaumstammplatte | ||||||
|  | Rubber Tree Trunk Stair=Gummibaumstammstufe | ||||||
|  | Small poplar Tree Sapling=Kleiner Pappelsetzling | ||||||
|  | Spruce Cone=Fichtenzapfen | ||||||
|  | Spruce Tree=Fichte | ||||||
|  | Spruce Tree Fence=Fichtenholz-Zaun | ||||||
|  | Spruce Tree Fence Gate=Fichtenholz-Zaun | ||||||
|  | Spruce Tree Fence Rail=Fichtenholz-Schiene | ||||||
|  | Spruce Tree Leaves=Fichtennadeln | ||||||
|  | Spruce Tree Planks=Fichtenbretter | ||||||
|  | Spruce Tree Planks Slab=Fichtenholzplatte | ||||||
|  | Spruce Tree Planks Stair=Fichtenholzstufe | ||||||
|  | Spruce Tree Sapling=Fichtensetzling | ||||||
|  | Spruce Tree Trunk=Fichtenstamm | ||||||
|  | Spruce Tree Trunk Slab=Fichtenstammplatte | ||||||
|  | Spruce Tree Trunk Stair=Fichtenstammstufe | ||||||
|  | Willow Tree=Weide | ||||||
|  | Willow Tree Fence=Weidenholz-Zaun | ||||||
|  | Willow Tree Fence Gate=Weidenholz-Tor | ||||||
|  | Willow Tree Fence Rail=Weidenholz-Schiene | ||||||
|  | Willow Tree Leaves=Weidenlaub | ||||||
|  | Willow Tree Planks=Weidenbretter | ||||||
|  | Willow Tree Planks Slab=Weidenholzplatte | ||||||
|  | Willow Tree Planks Stair=Weidenholzstufe | ||||||
|  | Willow Tree Sapling=Weidensetzling | ||||||
|  | Willow Tree Trunk=Weidenstamm | ||||||
|  | Willow Tree Trunk Slab=Weidenstammplatte | ||||||
|  | Willow Tree Trunk Stair=Weidenstammstufe | ||||||
|  | Yellow=gelb | ||||||
|  |  | ||||||
|  | # init.lua | ||||||
|  | Sapling=Setzling | ||||||
|  | Tree=Baum | ||||||
|  | Wooden Planks=Holzbretter | ||||||
|  | Leaves=Blätter | ||||||
|  | Wooden Fence=Holzzaun | ||||||
|  | Wooden Fence Rail=Holzschiene | ||||||
|  | Wooden Fence Gate=Holztor | ||||||
							
								
								
									
										220
									
								
								locale/moretrees.es.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								locale/moretrees.es.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | |||||||
|  | # textdomain: moretrees | ||||||
|  | # Translation by Carlos Barraza, improvements by David Leal. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### cocos_palm.lua ### | ||||||
|  |  | ||||||
|  | Coconut=Coco | ||||||
|  | Coconut Flower=Flor de Coco | ||||||
|  |  | ||||||
|  | ### crafts.lua ### | ||||||
|  |  | ||||||
|  | Acorn Muffin=Mollete de Bellota | ||||||
|  | Acorn Muffin batter= Masa de Mollete de Bellota | ||||||
|  | Coconut Milk=Leche de Coco | ||||||
|  | Date=Datilera | ||||||
|  | Date & nut snack=Datilera y Nueces | ||||||
|  | Date-nut cake=Pastel de Datilera | ||||||
|  | Date-nut cake batter=Pasta de torta de Datilera | ||||||
|  | Date-nut energy bar=Barra energetica de Datilera | ||||||
|  | Raw Coconut=Coco Crudo | ||||||
|  | Roasted Cedar Cone Nuts=Coco de Álamo Tostado | ||||||
|  | Roasted Fir Cone Nuts=Cono de Abeto Tostado | ||||||
|  | Roasted Spruce Cone Nuts=Cono de Picea Tostado | ||||||
|  |  | ||||||
|  | ### date_palm.lua ### | ||||||
|  |  | ||||||
|  | Date Flowers=Flores de Datilera | ||||||
|  | Date Stem=Tallo de Datilera | ||||||
|  | Dates=Datilera | ||||||
|  |  | ||||||
|  | ### node_defs.lua ### | ||||||
|  |  | ||||||
|  | @1 (fast growth)=@1 (crecimiento rápido) | ||||||
|  | Acorn=Bellota | ||||||
|  | Apple Tree=Árbol de manzana | ||||||
|  | Apple Tree Fence=Valla de manzano | ||||||
|  | Apple Tree Fence Gate=Puerta de Valla de Manzano | ||||||
|  | Apple Tree Fence Rail=Riel de Valla de Manzano | ||||||
|  | Apple Tree Leaves=Hojas de Árbol de Manzana | ||||||
|  | Apple Tree Planks=Madera de Árbol de Manzana | ||||||
|  | Apple Tree Planks Slab=Losa de Tablones de Manzano | ||||||
|  | Apple Tree Planks Stair=Escalera de Tablones de Manzano | ||||||
|  | Apple Tree Sapling=Retoño de Árbol de Manzana | ||||||
|  | Apple Tree Trunk=Tronco de Árbol de Manzana | ||||||
|  | Apple Tree Trunk Slab=Losa de Tronco de Manzano | ||||||
|  | Apple Tree Trunk Stair=Escalera de Tronco de Manzano | ||||||
|  | Beech Tree=Haya | ||||||
|  | Beech Tree Fence=Valla de Haya | ||||||
|  | Beech Tree Fence Gate=Puerta de Valla de Haya | ||||||
|  | Beech Tree Fence Rail=Riel de Valla de Haya | ||||||
|  | Beech Tree Leaves=Hojas de Arbol de Haya | ||||||
|  | Beech Tree Planks=Madera de Arbol de Haya | ||||||
|  | Beech Tree Planks Slab=Losa de Tablones de Haya | ||||||
|  | Beech Tree Planks Stair=Escalera de Tablones de Haya | ||||||
|  | Beech Tree Sapling=Retoño de Árbol de Haya | ||||||
|  | Beech Tree Trunk=Tronco de Árbol de Haya | ||||||
|  | Beech Tree Trunk Slab=Losa de Tronco de Haya | ||||||
|  | Beech Tree Trunk Stair=Escalera de Tronco de Haya | ||||||
|  | Birch Tree=Abedul | ||||||
|  | Birch Tree Fence=Valla de Abedul | ||||||
|  | Birch Tree Fence Gate=Puerta de Valla de Abedul | ||||||
|  | Birch Tree Fence Rail=Riel de Valla de Abedul | ||||||
|  | Birch Tree Leaves=Hojas de Arbol de Abedul | ||||||
|  | Birch Tree Planks=Madera de Arbol de Abedul | ||||||
|  | Birch Tree Planks Slab=Losa de Tablones de Abedul | ||||||
|  | Birch Tree Planks Stair=Escalera de Tablones de Abedul | ||||||
|  | Birch Tree Sapling=Retoño de Árbol de Abedul | ||||||
|  | Birch Tree Trunk=Tronco de Árbol de Abedul | ||||||
|  | Birch Tree Trunk Slab=Losa de Tronco de Abedul | ||||||
|  | Birch Tree Trunk Stair=Escalera de Tronco de Abedul | ||||||
|  | Cedar Cone=Coco de Álamo | ||||||
|  | Cedar Tree=Árbol de Cedro | ||||||
|  | Cedar Tree Fence=Valla de Árbol de Cedro | ||||||
|  | Cedar Tree Fence Gate=Puerta de Valla de Árbol de Cedro | ||||||
|  | Cedar Tree Fence Rail=Riel de Valla de Árbol de Cedro | ||||||
|  | Cedar Tree Leaves=Hojas de Árbol de Cedro | ||||||
|  | Cedar Tree Planks=Madera de Árbol de Cedro | ||||||
|  | Cedar Tree Planks Slab=Losa de Tablones de Árbol de Cedro | ||||||
|  | Cedar Tree Planks Stair=Escalera de Tablones de Árbol de Cedro | ||||||
|  | Cedar Tree Sapling=Retoño de Árbol de Cedro | ||||||
|  | Cedar Tree Trunk=Tronco de Árbol de Cedro | ||||||
|  | Cedar Tree Trunk Slab=Losa de Tronco de Árbol de Cedro | ||||||
|  | Cedar Tree Trunk Stair=Escalera de Tronco de Árbol de Cedro | ||||||
|  | Date Palm Tree=Palmera Datilera | ||||||
|  | Date Palm Tree Fence=Valla de Palmera Datilera | ||||||
|  | Date Palm Tree Fence Gate=Puerta de Valla de Palmera Datilera | ||||||
|  | Date Palm Tree Fence Rail=Riel de Valla de Palmera Datilera | ||||||
|  | Date Palm Tree Leaves=Hojas de Palmera Datilera | ||||||
|  | Date Palm Tree Planks=Madera de Palmera Datilera | ||||||
|  | Date Palm Tree Planks Slab=Losa de Tablones de Palmera Datilera | ||||||
|  | Date Palm Tree Planks Stair=Escalera de Tablones de Palmera Datilera | ||||||
|  | Date Palm Tree Sapling=Retoño de Palmera Datilera | ||||||
|  | Date Palm Tree Trunk=Tronco de Palmera Datilera | ||||||
|  | Date Palm Tree Trunk Slab=Losa de Tronco de Palmera Datilera | ||||||
|  | Date Palm Tree Trunk Stair=Escalera de Tronco de Palmera Datilera | ||||||
|  | Douglas Fir=Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Fence=Valla de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Fence Gate=Puerta de Valla de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Fence Rail=Riel de Valla de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Leaves=Hojas de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Leaves (Bright)=Hojas de Árbol de Abeto de Douglas (Brillante) | ||||||
|  | Douglas Fir Planks=Madera de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Planks Slab=Losa de Tablones de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Planks Stair=Escalera de Tablones de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Sapling=Retoño de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Trunk=Tronco de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Trunk Slab=Losa de Tronco de Árbol de Abeto de Douglas | ||||||
|  | Douglas Fir Trunk Stair=Escalera de Tronco de Árbol de Abeto de Douglas | ||||||
|  | Fir Cone=Coco de Abeto | ||||||
|  | Giant Sequoia=Secuoya Gigante | ||||||
|  | Giant Sequoia Fence=Valla de Secuoya Gigante | ||||||
|  | Giant Sequoia Fence Gate=Puerta de Valla de Secuoya Gigante | ||||||
|  | Giant Sequoia Fence Rail=Riel de Valla de Secuoya Gigante | ||||||
|  | Giant Sequoia Leaves=Hojas de Secuoya Gigante | ||||||
|  | Giant Sequoia Planks=Madera de Secuoya Gigante | ||||||
|  | Giant Sequoia Planks Slab=Losa de Tablones de Secuoya Gigante | ||||||
|  | Giant Sequoia Planks Stair=Escalera de Tablones de Secuoya Gigante | ||||||
|  | Giant Sequoia Sapling=Retoño de Árbol de Secuoya Gigante | ||||||
|  | Giant Sequoia Trunk=Tronco de Secuoya Gigante | ||||||
|  | Giant Sequoia Trunk Slab=Losa de Tronco de Secuoya Gigante | ||||||
|  | Giant Sequoia Trunk Stair=Escalera de Tronco de Secuoya Gigante | ||||||
|  | Jungle Tree=Árbol de la Selva | ||||||
|  | Jungle Tree Fence=Valla de Árbol de la Selva | ||||||
|  | Jungle Tree Fence Gate=Puerta de Valla de Árbol de la Selva | ||||||
|  | Jungle Tree Fence Rail=Riel de Valla de Árbol de la Selva | ||||||
|  | Jungle Tree Leaves=Hojas de Árbol de la Selva | ||||||
|  | Jungle Tree Leaves (@1)=Hojas de Árbol de la Selva (@1) | ||||||
|  | Jungle Tree Planks=Madera de Árbol de la Selva | ||||||
|  | Jungle Tree Planks Slab=Losa de Tablones de Árbol de la Selva | ||||||
|  | Jungle Tree Planks Stair=Escalera de Tablones de Árbol de la Selva | ||||||
|  | Jungle Tree Sapling=Retoño de Árbol de la Selva | ||||||
|  | Jungle Tree Trunk=Tronco de Árbol de Árbol de la Selva | ||||||
|  | Jungle Tree Trunk Slab=Losa de Tronco de Árbol de la Selva | ||||||
|  | Jungle Tree Trunk Stair=Escalera de Tronco de Árbol de la Selva | ||||||
|  | Oak Tree=Árbol de Roble | ||||||
|  | Oak Tree Fence=Valla de Árbol de Roble | ||||||
|  | Oak Tree Fence Gate=Puerta de Valla de Árbol de Roble | ||||||
|  | Oak Tree Fence Rail=Riel de Valla de Árbol de Roble | ||||||
|  | Oak Tree Leaves=Hojas de Árbol de Roble | ||||||
|  | Oak Tree Planks=Madera de Árbol de Roble | ||||||
|  | Oak Tree Planks Slab=Losa de Tablones de Árbol de Roble | ||||||
|  | Oak Tree Planks Stair=Escalera de Tablones de Árbol de Roble | ||||||
|  | Oak Tree Sapling=Retoño de Árbol de Roble | ||||||
|  | Oak Tree Trunk=Tronco de Árbol de Roble | ||||||
|  | Oak Tree Trunk Slab=Losa de Tronco de Árbol de Roble | ||||||
|  | Oak Tree Trunk Stair=Escalera de Tronco de Árbol de Roble | ||||||
|  | Palm Tree=Palmera | ||||||
|  | Palm Tree Fence=Valla de Palmera | ||||||
|  | Palm Tree Fence Gate=Puerta de Valla de Palmera | ||||||
|  | Palm Tree Fence Rail=Riel de Valla de Palmera | ||||||
|  | Palm Tree Leaves=Hojas de Palmera | ||||||
|  | Palm Tree Planks=Madera de Palmera | ||||||
|  | Palm Tree Planks Slab=Losa de Tablones de Palmera | ||||||
|  | Palm Tree Planks Stair=Escalera de Tablones de Palmera | ||||||
|  | Palm Tree Sapling=Retoño de Palmera | ||||||
|  | Palm Tree Trunk=Tronco de Palmera | ||||||
|  | Palm Tree Trunk Slab=Losa de Troncos de Palmera | ||||||
|  | Palm Tree Trunk Stair=Escalera de Troncos de Palmera | ||||||
|  | Poplar Tree=Árbol de Alamo | ||||||
|  | Poplar Tree Fence=Valla de Árbol de Alamo | ||||||
|  | Poplar Tree Fence Gate=Puerta de Valla de Árbol de Alamo | ||||||
|  | Poplar Tree Fence Rail=Riel de Valla de Árbol de Alamo | ||||||
|  | Poplar Tree Leaves=Hojas de Arbol de Alamo | ||||||
|  | Poplar Tree Planks=Madera de Árbol de Alamo | ||||||
|  | Poplar Tree Planks Slab=Losa de Tablones de Árbol de Alamo | ||||||
|  | Poplar Tree Planks Stair=Escalera de Tablones de Árbol de Alamo | ||||||
|  | Poplar Tree Sapling=Retoño de Árbol de Alamo | ||||||
|  | Poplar Tree Trunk=Tronco de Árbol de Alamo | ||||||
|  | Poplar Tree Trunk Slab=Losa de Tronco de Árbol de Alamo | ||||||
|  | Poplar Tree Trunk Stair=Escalera de Tronco de Árbol de Alamo | ||||||
|  | Red=Rojo | ||||||
|  | Rubber Tree=Árbol del Caucho | ||||||
|  | Rubber Tree Fence=Valla de Árbol del Caucho | ||||||
|  | Rubber Tree Fence Gate=Puerta de Valla de Árbol del Caucho | ||||||
|  | Rubber Tree Fence Rail=Riel de Valla de Árbol del Caucho | ||||||
|  | Rubber Tree Leaves=Hojas de Árbol de Árbol del Caucho | ||||||
|  | Rubber Tree Planks=Madera de Árbol de Árbol del Caucho | ||||||
|  | Rubber Tree Planks Slab=Losa de Tablones de Árbol del Caucho | ||||||
|  | Rubber Tree Planks Stair=Escalera de Tablones de Árbol del Caucho | ||||||
|  | Rubber Tree Sapling=Retoño de Árbol de Árbol del Caucho | ||||||
|  | Rubber Tree Trunk=Tronco de Árbol de Árbol del Caucho | ||||||
|  | Rubber Tree Trunk (Empty)=Tronco de Árbol del Caucho (Vacío) | ||||||
|  | Rubber Tree Trunk Slab=Losa de Tronco de Árbol del Caucho | ||||||
|  | Rubber Tree Trunk Stair=Escalera de Tronco de Árbol del Caucho | ||||||
|  | Small poplar Tree Sapling=Pequeño Retoño de Álamo | ||||||
|  | Spruce Cone=Coco de Picea | ||||||
|  | Spruce Tree=Árbol de Abeto | ||||||
|  | Spruce Tree Fence=Valla de Árbol de Abeto | ||||||
|  | Spruce Tree Fence Gate=Puerta de Valla de Árbol de Abeto | ||||||
|  | Spruce Tree Fence Rail=Riel de Valla de Árbol de Abeto | ||||||
|  | Spruce Tree Leaves=Hojas de Árbol de Abeto | ||||||
|  | Spruce Tree Planks=Madera de Árbol de Abeto | ||||||
|  | Spruce Tree Planks Slab=Losa de Tablones de Árbol de Abeto | ||||||
|  | Spruce Tree Planks Stair=Escalera de Tablones de Árbol de Abeto | ||||||
|  | Spruce Tree Sapling=Retoño de Árbol de Abeto | ||||||
|  | Spruce Tree Trunk=Tronco de Árbol de Abeto | ||||||
|  | Spruce Tree Trunk Slab=Losa de Tronco de Árbol de Abeto | ||||||
|  | Spruce Tree Trunk Stair=Escalera de Tronco de Árbol de Abeto | ||||||
|  | Willow Tree=Árbol de Sauce | ||||||
|  | Willow Tree Fence=Valla de Árbol de Sauce | ||||||
|  | Willow Tree Fence Gate=Puerta de Valla de Árbol de Sauce | ||||||
|  | Willow Tree Fence Rail=Riel de Valla de Árbol de Sauce | ||||||
|  | Willow Tree Leaves=Hojas de Árbol de Sauce | ||||||
|  | Willow Tree Planks=Madera de Árbol de Sauce | ||||||
|  | Willow Tree Planks Slab=Losa de Tablones de Árbol de Sauce | ||||||
|  | Willow Tree Planks Stair=Escalera de Tablones de Árbol de Sauce | ||||||
|  | Willow Tree Sapling=Retoño de Árbol de Sauce | ||||||
|  | Willow Tree Trunk=Tronco de Árbol de Sauce | ||||||
|  | Willow Tree Trunk Slab=Losa de Tronco de Árbol de Sauce | ||||||
|  | Willow Tree Trunk Stair=Escalera de Tronco de Árbol de Sauce | ||||||
|  | Yellow=Amarillo | ||||||
|  |  | ||||||
|  | # init.lua | ||||||
|  | Sapling=Retoño | ||||||
|  | Tree=Árbol | ||||||
|  | Wooden Planks=Tablones | ||||||
|  | Leaves=Hojas | ||||||
|  | Wooden Fence=Valla | ||||||
|  | Wooden Fence Rail=Riel de Valla | ||||||
|  | Wooden Fence Gate=Puerta de Valla | ||||||
							
								
								
									
										220
									
								
								locale/moretrees.fr.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								locale/moretrees.fr.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | |||||||
|  | # textdomain: moretrees | ||||||
|  | # Translation by Yoan31 and Louis Royer | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### cocos_palm.lua ### | ||||||
|  |  | ||||||
|  | Coconut=Noix de coco | ||||||
|  | Coconut Flower=Fleur de coco | ||||||
|  |  | ||||||
|  | ### crafts.lua ### | ||||||
|  |  | ||||||
|  | Acorn Muffin=Muffins au gland | ||||||
|  | Acorn Muffin batter=Pate à muffins au Gland | ||||||
|  | Coconut Milk=Lait de coco | ||||||
|  | Date=Datte | ||||||
|  | Date & nut snack=Collation aux dattes et aux noix | ||||||
|  | Date-nut cake=Gâteau datte-noix | ||||||
|  | Date-nut cake batter=Pâte à gâteau datte-noix | ||||||
|  | Date-nut energy bar=Barre énergétique datte-noix | ||||||
|  | Raw Coconut=Noix de coco crue | ||||||
|  | Roasted Cedar Cone Nuts=Noix de pomme de pin roties | ||||||
|  | Roasted Fir Cone Nuts=Noix de cône de sapin roties | ||||||
|  | Roasted Spruce Cone Nuts=Noix de cône de sapin roties | ||||||
|  |  | ||||||
|  | ### date_palm.lua ### | ||||||
|  |  | ||||||
|  | Date Flowers=Fleurs de datte | ||||||
|  | Date Stem=Tige de datte | ||||||
|  | Dates=Dattes | ||||||
|  |  | ||||||
|  | ### node_defs.lua ### | ||||||
|  |  | ||||||
|  | @1 (fast growth)=@1 (croissance rapide) | ||||||
|  | Acorn=Gland | ||||||
|  | Apple Tree=Pommier | ||||||
|  | Apple Tree Fence=Barrière en bois de pommier | ||||||
|  | Apple Tree Fence Gate=Porte de clôture en bois de pommier | ||||||
|  | Apple Tree Fence Rail=Clôture en bois de pommier | ||||||
|  | Apple Tree Leaves=Feuilles de pommier | ||||||
|  | Apple Tree Planks=Planches de pommier | ||||||
|  | Apple Tree Planks Slab=Dalle en bois de pommier | ||||||
|  | Apple Tree Planks Stair=Escaliers en bois de pommier | ||||||
|  | Apple Tree Sapling=Pousse d'arbre de pommier | ||||||
|  | Apple Tree Trunk=Tronc d'arbre de pommier | ||||||
|  | Apple Tree Trunk Slab=Dalle en tronc de pommier | ||||||
|  | Apple Tree Trunk Stair=Escalier en tronc de pommier | ||||||
|  | Beech Tree=Hêtre | ||||||
|  | Beech Tree Fence=Barrière en bois de hêtre | ||||||
|  | Beech Tree Fence Gate=Porte de clôture en bois de hêtre | ||||||
|  | Beech Tree Fence Rail=Clôture en bois de hêtre | ||||||
|  | Beech Tree Leaves=Feuilles de hêtre | ||||||
|  | Beech Tree Planks=Planches de hêtre | ||||||
|  | Beech Tree Planks Slab=Dalle en bois de hêtre | ||||||
|  | Beech Tree Planks Stair=Escalier en bois de hêtre | ||||||
|  | Beech Tree Sapling=Pousse d'arbre de hêtre | ||||||
|  | Beech Tree Trunk=Tronc d'arbre de hêtre | ||||||
|  | Beech Tree Trunk Slab=Dalle en tronc de hêtre | ||||||
|  | Beech Tree Trunk Stair=Escalier en tronc de hêtre | ||||||
|  | Birch Tree=Bouleau | ||||||
|  | Birch Tree Fence=Barrière en bois de bouleau | ||||||
|  | Birch Tree Fence Gate=Porte de clôture en bois de bouleau | ||||||
|  | Birch Tree Fence Rail=Clôture en bois de bouleau | ||||||
|  | Birch Tree Leaves=Feuilles de bouleau | ||||||
|  | Birch Tree Planks=Planches d'arbre de bouleau | ||||||
|  | Birch Tree Planks Slab=Dalle en bois de bouleau | ||||||
|  | Birch Tree Planks Stair=Escalier en bois de bouleau | ||||||
|  | Birch Tree Sapling=Pousse d'arbre de bouleau | ||||||
|  | Birch Tree Trunk=Tronc d'arbre de bouleau | ||||||
|  | Birch Tree Trunk Slab=Dalle en tronc de bouleau | ||||||
|  | Birch Tree Trunk Stair=Escalier en tronc de bouleau | ||||||
|  | Cedar Cone=Pomme de pin | ||||||
|  | Cedar Tree=Pin | ||||||
|  | Cedar Tree Fence=Barrière en bois de pin | ||||||
|  | Cedar Tree Fence Gate=Porte de clôture en bois de pin | ||||||
|  | Cedar Tree Fence Rail=Clôture en bois de pin | ||||||
|  | Cedar Tree Leaves=Feuilles de pin | ||||||
|  | Cedar Tree Planks=Planches d'arbre de pin | ||||||
|  | Cedar Tree Planks Slab=Dalle en bois de pin | ||||||
|  | Cedar Tree Planks Stair=Escalier en bois de pin | ||||||
|  | Cedar Tree Sapling=Pousse d'arbre de pin | ||||||
|  | Cedar Tree Trunk=Tronc d'arbre de pin | ||||||
|  | Cedar Tree Trunk Slab=Dalle en tronc de pin | ||||||
|  | Cedar Tree Trunk Stair=Escalier en tronc de pin | ||||||
|  | Date Palm Tree=Dattier | ||||||
|  | Date Palm Tree Fence=Barrière en bois de dattier | ||||||
|  | Date Palm Tree Fence Gate=Porte de clôture en bois de dattier | ||||||
|  | Date Palm Tree Fence Rail=Clôture en bois de dattier | ||||||
|  | Date Palm Tree Leaves=Feuille de dattier | ||||||
|  | Date Palm Tree Planks=Planches de dattier | ||||||
|  | Date Palm Tree Planks Slab=Dalle en bois de dattier | ||||||
|  | Date Palm Tree Planks Stair=Escalier en bois de dattier | ||||||
|  | Date Palm Tree Sapling=Pousse de dattier | ||||||
|  | Date Palm Tree Trunk=Tronc de dattier | ||||||
|  | Date Palm Tree Trunk Slab=Dalle en tronc de dattier | ||||||
|  | Date Palm Tree Trunk Stair=Escalier en tronc de dattier | ||||||
|  | Douglas Fir=Sapin de Douglas | ||||||
|  | Douglas Fir Fence=Barrière en bois de sapin de Douglas | ||||||
|  | Douglas Fir Fence Gate=Porte de clôture en bois de sapin de Douglas | ||||||
|  | Douglas Fir Fence Rail=Clôture en bois de sapin de Douglas | ||||||
|  | Douglas Fir Leaves=Feuilles de sapin de Douglas | ||||||
|  | Douglas Fir Leaves (Bright)=Feuille de sapin de Douglas (brillant) | ||||||
|  | Douglas Fir Planks=Planches de sapin de Douglas | ||||||
|  | Douglas Fir Planks Slab=Dalle en bois de sapin de Douglas | ||||||
|  | Douglas Fir Planks Stair=Escalier en bois de sapin de Douglas | ||||||
|  | Douglas Fir Sapling=Pousse de sapin de Douglas | ||||||
|  | Douglas Fir Trunk=Tronc de sapin de Douglas | ||||||
|  | Douglas Fir Trunk Slab=Dalle en tronc de sapin de Douglas | ||||||
|  | Douglas Fir Trunk Stair=Escalier en tronc de sapin de Douglas | ||||||
|  | Fir Cone=Pomme de sapin | ||||||
|  | Giant Sequoia=Séquoia géant | ||||||
|  | Giant Sequoia Fence=Barrière en bois de séquoia géant | ||||||
|  | Giant Sequoia Fence Gate=Porte de clôture en bois de séquoia géant | ||||||
|  | Giant Sequoia Fence Rail=Clôture en bois de séquoia géant | ||||||
|  | Giant Sequoia Leaves=Feuilles de séquoia géant | ||||||
|  | Giant Sequoia Planks=Planches de séquoia géant | ||||||
|  | Giant Sequoia Planks Slab=Dalle en bois de séquoia géant | ||||||
|  | Giant Sequoia Planks Stair=Escalier en bois de séquoia géant | ||||||
|  | Giant Sequoia Sapling=Pousse de séquoia géant | ||||||
|  | Giant Sequoia Trunk=Tronc de séquoia géant | ||||||
|  | Giant Sequoia Trunk Slab=Dalle en tronc de séquoia géant | ||||||
|  | Giant Sequoia Trunk Stair=Escalier en tronc de séquoia géant | ||||||
|  | Jungle Tree=Arbre de la jungle | ||||||
|  | Jungle Tree Fence=Barrière en bois d'arbre de la jungle | ||||||
|  | Jungle Tree Fence Gate=Porte de clôture en bois d'arbre de la jungle | ||||||
|  | Jungle Tree Fence Rail=Clôture en bois d'arbre de la jungle | ||||||
|  | Jungle Tree Leaves=Feuilles d'arbre de la jungle | ||||||
|  | Jungle Tree Leaves (@1)=Feuilles d'arbre de la jungle (@1) | ||||||
|  | Jungle Tree Planks=Planches d'arbre de la jungle | ||||||
|  | Jungle Tree Planks Slab=Dalle en bois d'arbre de la jungle | ||||||
|  | Jungle Tree Planks Stair=Escalier en bois d'arbre de la jungle | ||||||
|  | Jungle Tree Sapling=Pousse d'arbre de la jungle | ||||||
|  | Jungle Tree Trunk=Tronc d'arbre de la jungle | ||||||
|  | Jungle Tree Trunk Slab=Dalle en tronc d'arbre de la jungle | ||||||
|  | Jungle Tree Trunk Stair=Escalier en tronc d'arbre de la jungle | ||||||
|  | Oak Tree=Chêne | ||||||
|  | Oak Tree Fence=Barrière en bois de chêne | ||||||
|  | Oak Tree Fence Gate=Porte de clôture en bois de chêne | ||||||
|  | Oak Tree Fence Rail=Clôture en bois de chêne | ||||||
|  | Oak Tree Leaves=Feuilles de chêne | ||||||
|  | Oak Tree Planks=Planches de chêne | ||||||
|  | Oak Tree Planks Slab=Dalle en bois de chêne | ||||||
|  | Oak Tree Planks Stair=Escalier en bois de chêne | ||||||
|  | Oak Tree Sapling=Pousse d'arbre de chêne | ||||||
|  | Oak Tree Trunk=Tronc d'arbre de chêne | ||||||
|  | Oak Tree Trunk Slab=Dalle en tronc de chêne | ||||||
|  | Oak Tree Trunk Stair=Escalier en tronc de chêne | ||||||
|  | Palm Tree=Palmier | ||||||
|  | Palm Tree Fence=Barrière en bois de palmier | ||||||
|  | Palm Tree Fence Gate=Porte de clôture en bois de palmier | ||||||
|  | Palm Tree Fence Rail=Clôture en bois de palmier | ||||||
|  | Palm Tree Leaves=Feuilles de palmier | ||||||
|  | Palm Tree Planks=Planches de palmier | ||||||
|  | Palm Tree Planks Slab=Dalle en bois de palmier | ||||||
|  | Palm Tree Planks Stair=Escalier en bois de palmier | ||||||
|  | Palm Tree Sapling=Pousse d'arbre de palmier | ||||||
|  | Palm Tree Trunk=Tronc d'arbre de palmier | ||||||
|  | Palm Tree Trunk Slab=Dalle en tronc de palmier | ||||||
|  | Palm Tree Trunk Stair=Escalier en tronc de palmier | ||||||
|  | Poplar Tree=Peuplier | ||||||
|  | Poplar Tree Fence=Barrière en bois de peuplier | ||||||
|  | Poplar Tree Fence Gate=Porte de clôture en bois de peuplier | ||||||
|  | Poplar Tree Fence Rail=Clôture en bois de peuplier | ||||||
|  | Poplar Tree Leaves=Feuilles de peuplier | ||||||
|  | Poplar Tree Planks=Plances de peuplier | ||||||
|  | Poplar Tree Planks Slab=Dalle en bois de peuplier | ||||||
|  | Poplar Tree Planks Stair=Escalier en bois de peuplier | ||||||
|  | Poplar Tree Sapling=Pousse de peuplier | ||||||
|  | Poplar Tree Trunk=Tronc de peuplier | ||||||
|  | Poplar Tree Trunk Slab=Dalle en tronc de peuplier | ||||||
|  | Poplar Tree Trunk Stair=Escalier en tronc de peuplier | ||||||
|  | Red=rouge | ||||||
|  | Rubber Tree=Arbre à caoutchouc | ||||||
|  | Rubber Tree Fence=Barrière en bois d'arbre à caoutchouc | ||||||
|  | Rubber Tree Fence Gate=Porte de clôture en bois d'arbre à caoutchouc | ||||||
|  | Rubber Tree Fence Rail=Clôture en bois d'arbre à caoutchouc | ||||||
|  | Rubber Tree Leaves=Feuilles d'arbre à caoutchouc | ||||||
|  | Rubber Tree Planks=Planches d'arbre à caoutchouc | ||||||
|  | Rubber Tree Planks Slab=Dalle en bois d'arbre à caoutchouc | ||||||
|  | Rubber Tree Planks Stair=Escalier en bois d'arbre à caoutchouc | ||||||
|  | Rubber Tree Sapling=Pousse d'arbre à caoutchouc | ||||||
|  | Rubber Tree Trunk=Tronc d'arbre a caoutchouc | ||||||
|  | Rubber Tree Trunk (Empty)=Tronc d'arbre à caoutchouc (vide) | ||||||
|  | Rubber Tree Trunk Slab=Dalle en tronc d'arbre à caoutchouc | ||||||
|  | Rubber Tree Trunk Stair=Escalier en tronc d'arbre à caoutchouc | ||||||
|  | Small poplar Tree Sapling=Pousse de petit peuplier | ||||||
|  | Spruce Cone=Cône de sapin | ||||||
|  | Spruce Tree=Épicéa | ||||||
|  | Spruce Tree Fence=Barrière en bois d'épicéa | ||||||
|  | Spruce Tree Fence Gate=Porte de clôture en bois d'épicéa | ||||||
|  | Spruce Tree Fence Rail=Clôture en bois d'épicéa | ||||||
|  | Spruce Tree Leaves=Feuilles d'épicéa | ||||||
|  | Spruce Tree Planks=Planches d'arbre d'épicéa | ||||||
|  | Spruce Tree Planks Slab=Dalle en bois d'épicéa | ||||||
|  | Spruce Tree Planks Stair=Escalier en bois d'épicéa | ||||||
|  | Spruce Tree Sapling=Pousse d'arbre d'épicéa | ||||||
|  | Spruce Tree Trunk=Tronc d'arbre d'épicéa | ||||||
|  | Spruce Tree Trunk Slab=Dalle en tronc d'épicéa | ||||||
|  | Spruce Tree Trunk Stair=Escalier en tronc d'épicéa | ||||||
|  | Willow Tree=Saule | ||||||
|  | Willow Tree Fence=Barrière en bois de saule | ||||||
|  | Willow Tree Fence Gate=Porte de clôture en bois de saule | ||||||
|  | Willow Tree Fence Rail=Clôture en bois de saule | ||||||
|  | Willow Tree Leaves=Feuilles de saule | ||||||
|  | Willow Tree Planks=Planches de saule | ||||||
|  | Willow Tree Planks Slab=Dalle en bois de saule | ||||||
|  | Willow Tree Planks Stair=Escalier en bois de saule | ||||||
|  | Willow Tree Sapling=Pousse de saule | ||||||
|  | Willow Tree Trunk=Tronc d'arbre de saule | ||||||
|  | Willow Tree Trunk Slab=Dalle en tronc de saule | ||||||
|  | Willow Tree Trunk Stair=Escalier en tronc de saule | ||||||
|  | Yellow=jaune | ||||||
|  |  | ||||||
|  | # init.lua | ||||||
|  | Sapling=Jeune Arbre | ||||||
|  | Tree=Arbre | ||||||
|  | Wooden Planks=Planches | ||||||
|  | Leaves=Feuilles | ||||||
|  | Wooden Fence=Barrière en bois | ||||||
|  | Wooden Fence Rail=Rail de clôture en bois | ||||||
|  | Wooden Fence Gate=Porte de clôture en bois | ||||||
							
								
								
									
										219
									
								
								locale/moretrees.ru.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								locale/moretrees.ru.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,219 @@ | |||||||
|  | # textdomain: moretrees | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### cocos_palm.lua ### | ||||||
|  |  | ||||||
|  | Coconut=Кокос | ||||||
|  | Coconut Flower=Цветок кокоса | ||||||
|  |  | ||||||
|  | ### crafts.lua ### | ||||||
|  |  | ||||||
|  | Acorn Muffin=Маффин с желудями | ||||||
|  | Acorn Muffin batter=Тесто для маффина с желудями | ||||||
|  | Coconut Milk=Кокосовое молоко | ||||||
|  | Date=Финик | ||||||
|  | Date & nut snack=Закуска из фиников и орехов | ||||||
|  | Date-nut cake=Финиково-ореховый пирог | ||||||
|  | Date-nut cake batter=Тесто для финиково-орехового пирога | ||||||
|  | Date-nut energy bar=Финиково-ореховый батончик | ||||||
|  | Raw Coconut=Сырой кокос | ||||||
|  | Roasted Cedar Cone Nuts=Жареные кедровые орешки | ||||||
|  | Roasted Fir Cone Nuts=Жареные орешки пихты | ||||||
|  | Roasted Spruce Cone Nuts=Жареные еловые орешки | ||||||
|  |  | ||||||
|  | ### date_palm.lua ### | ||||||
|  |  | ||||||
|  | Date Flowers=Цветки фиников | ||||||
|  | Date Stem=Стебель финика | ||||||
|  | Dates=Финики | ||||||
|  |  | ||||||
|  | ### node_defs.lua ### | ||||||
|  |  | ||||||
|  | @1 (fast growth)=@1 (бестрый рост) | ||||||
|  | Acorn=Желудь | ||||||
|  | Apple Tree=Яблоня | ||||||
|  | Apple Tree Fence=Яблоневый забор | ||||||
|  | Apple Tree Fence Gate=Яблоневые ворота | ||||||
|  | Apple Tree Fence Rail=Яблоневые перила | ||||||
|  | Apple Tree Leaves=Листья яблони | ||||||
|  | Apple Tree Planks=Яблоневые доски | ||||||
|  | Apple Tree Planks Slab=Яблоневые доски (плита) | ||||||
|  | Apple Tree Planks Stair=Яблоневые доски (ступени) | ||||||
|  | Apple Tree Sapling=Саженец яблони | ||||||
|  | Apple Tree Trunk=Ствол яблони | ||||||
|  | Apple Tree Trunk Slab=Ствол яблони (плита) | ||||||
|  | Apple Tree Trunk Stair=Ствол яблони (ступени) | ||||||
|  | Beech Tree=Бук | ||||||
|  | Beech Tree Fence=Забор из бука | ||||||
|  | Beech Tree Fence Gate=Ворота из бука | ||||||
|  | Beech Tree Fence Rail=Перила из бука | ||||||
|  | Beech Tree Leaves=Листья бука | ||||||
|  | Beech Tree Planks=Доски из бука | ||||||
|  | Beech Tree Planks Slab=Доски из бука (плита) | ||||||
|  | Beech Tree Planks Stair=Доски из бука (ступени) | ||||||
|  | Beech Tree Sapling=Саженец бука | ||||||
|  | Beech Tree Trunk=Ствол бука | ||||||
|  | Beech Tree Trunk Slab=Ствол бука (плита) | ||||||
|  | Beech Tree Trunk Stair=Ствол бука (ступени) | ||||||
|  | Birch Tree=Береза | ||||||
|  | Birch Tree Fence=Березовый забор | ||||||
|  | Birch Tree Fence Gate=Березовые ворота | ||||||
|  | Birch Tree Fence Rail=Березовые перила | ||||||
|  | Birch Tree Leaves=Березовые листья | ||||||
|  | Birch Tree Planks=Березовые доски | ||||||
|  | Birch Tree Planks Slab=Березовые доски (плита) | ||||||
|  | Birch Tree Planks Stair=Березовые доски (ступени) | ||||||
|  | Birch Tree Sapling=Саженец березы | ||||||
|  | Birch Tree Trunk=Ствол березы | ||||||
|  | Birch Tree Trunk Slab=Ствол березы (плита) | ||||||
|  | Birch Tree Trunk Stair=Ствол березы (ступени) | ||||||
|  | Cedar Cone=Кедровая шишка | ||||||
|  | Cedar Tree=Кедр | ||||||
|  | Cedar Tree Fence=Забор из кедра | ||||||
|  | Cedar Tree Fence Gate=Ворота из кедра | ||||||
|  | Cedar Tree Fence Rail=Перила из кедра | ||||||
|  | Cedar Tree Leaves=Кедровая хвоя | ||||||
|  | Cedar Tree Planks=Доски из кедра | ||||||
|  | Cedar Tree Planks Slab=Доски из кедра (плита) | ||||||
|  | Cedar Tree Planks Stair=Доски из кедра (ступени) | ||||||
|  | Cedar Tree Sapling=Саженец кедра | ||||||
|  | Cedar Tree Trunk=Ствол кедра | ||||||
|  | Cedar Tree Trunk Slab=Ствол кедра (плита) | ||||||
|  | Cedar Tree Trunk Stair=Ствол кедра (ступени) | ||||||
|  | Date Palm Tree=Финиковая пальма | ||||||
|  | Date Palm Tree Fence=Забор из финиковой пальмы | ||||||
|  | Date Palm Tree Fence Gate=Ворота из финиковой пальмы | ||||||
|  | Date Palm Tree Fence Rail=Перила из финиковой пальмы | ||||||
|  | Date Palm Tree Leaves=Листья финиковой пальмы | ||||||
|  | Date Palm Tree Planks=Доски из финиковой пальмы | ||||||
|  | Date Palm Tree Planks Slab=Доски из финиковой пальмы (плита) | ||||||
|  | Date Palm Tree Planks Stair=Доски из финиковой пальмы (ступени) | ||||||
|  | Date Palm Tree Sapling=Саженец финиковой пальмы | ||||||
|  | Date Palm Tree Trunk=Ствол финиковой пальмы | ||||||
|  | Date Palm Tree Trunk Slab=Ствол финиковой пальмы (плита) | ||||||
|  | Date Palm Tree Trunk Stair=Ствол финиковой пальмы (ступени) | ||||||
|  | Douglas Fir=Дугласова пихта | ||||||
|  | Douglas Fir Fence=Забор из дугласовой пихты | ||||||
|  | Douglas Fir Fence Gate=Ворота из дугласовой пихты | ||||||
|  | Douglas Fir Fence Rail=Перила из дугласовой пихты | ||||||
|  | Douglas Fir Leaves=Хвоя дугласовой пихты | ||||||
|  | Douglas Fir Leaves (Bright)=Листья дугласовой пихты (яркие) | ||||||
|  | Douglas Fir Planks=Доски из дугласовой пихты | ||||||
|  | Douglas Fir Planks Slab=Доски из дугласовой пихты (плита) | ||||||
|  | Douglas Fir Planks Stair=Доски из дугласовой пихты (ступени) | ||||||
|  | Douglas Fir Sapling=Саженец дугласовой пихты | ||||||
|  | Douglas Fir Trunk=Ствол дугласовой пихты | ||||||
|  | Douglas Fir Trunk Slab=Ствол дугласовой пихты (плита) | ||||||
|  | Douglas Fir Trunk Stair=Ствол дугласовой пихты (ступени) | ||||||
|  | Fir Cone=Пихтовая шишка | ||||||
|  | Giant Sequoia=Гигантская секвойя | ||||||
|  | Giant Sequoia Fence=Забор из гигантской секвойи | ||||||
|  | Giant Sequoia Fence Gate=Ворота из гигантской секвойи | ||||||
|  | Giant Sequoia Fence Rail=Перила из гигантской секвойи | ||||||
|  | Giant Sequoia Leaves=Хвоя гигантской секвойи | ||||||
|  | Giant Sequoia Planks=Доски из гигантской секвойи | ||||||
|  | Giant Sequoia Planks Slab=Доски из гигантской секвойи (плита) | ||||||
|  | Giant Sequoia Planks Stair=Доски из гигантской секвойи (ступени) | ||||||
|  | Giant Sequoia Sapling=Саженец гигантской секвойи | ||||||
|  | Giant Sequoia Trunk=Ствол гигантской секвойи | ||||||
|  | Giant Sequoia Trunk Slab=Ствол гигантской секвойи (плита) | ||||||
|  | Giant Sequoia Trunk Stair=Ствол гигантской секвойи (ступени) | ||||||
|  | Jungle Tree=Тропическое дерево | ||||||
|  | Jungle Tree Fence=Забор из тропического дерева | ||||||
|  | Jungle Tree Fence Gate=Ворота из тропического дерева | ||||||
|  | Jungle Tree Fence Rail=Перила из тропического дерева | ||||||
|  | Jungle Tree Leaves=Листья тропического дерева | ||||||
|  | Jungle Tree Leaves (@1)=Листья тропического дерева (@1) | ||||||
|  | Jungle Tree Planks=Доски из тропического дерева | ||||||
|  | Jungle Tree Planks Slab=Доски из тропического дерева (плита) | ||||||
|  | Jungle Tree Planks Stair=Доски из тропического дерева (ступени) | ||||||
|  | Jungle Tree Sapling=Саженец тропического дерева | ||||||
|  | Jungle Tree Trunk=Ствол тропического дерева | ||||||
|  | Jungle Tree Trunk Slab=Ствол тропического дерева (плита) | ||||||
|  | Jungle Tree Trunk Stair=Ствол тропического дерева (ступени) | ||||||
|  | Oak Tree=Дуб | ||||||
|  | Oak Tree Fence=Дубовый забор | ||||||
|  | Oak Tree Fence Gate=Дубовые ворота | ||||||
|  | Oak Tree Fence Rail=Дубовые перила | ||||||
|  | Oak Tree Leaves=Листья дуба | ||||||
|  | Oak Tree Planks=Дубовые доски | ||||||
|  | Oak Tree Planks Slab=Дубовые доски (плита) | ||||||
|  | Oak Tree Planks Stair=Дубовые доски (ступени) | ||||||
|  | Oak Tree Sapling=Саженец дуба | ||||||
|  | Oak Tree Trunk=Ствол дуба | ||||||
|  | Oak Tree Trunk Slab=Ствол дуба (плита) | ||||||
|  | Oak Tree Trunk Stair=Ствол дуба (ступени) | ||||||
|  | Palm Tree=Пальма | ||||||
|  | Palm Tree Fence=Пальмовый забор | ||||||
|  | Palm Tree Fence Gate=Пальмовые ворота | ||||||
|  | Palm Tree Fence Rail=Пальмовые перила | ||||||
|  | Palm Tree Leaves=Листья пальмы | ||||||
|  | Palm Tree Planks=Пальмовые доски | ||||||
|  | Palm Tree Planks Slab=Пальмовые доски (плита) | ||||||
|  | Palm Tree Planks Stair=Пальмовые доски (ступени) | ||||||
|  | Palm Tree Sapling=Саженец пальмы | ||||||
|  | Palm Tree Trunk=Ствол пальмы | ||||||
|  | Palm Tree Trunk Slab=Ствол пальмы (плита) | ||||||
|  | Palm Tree Trunk Stair=Ствол пальмы (ступени) | ||||||
|  | Poplar Tree=Тополь | ||||||
|  | Poplar Tree Fence=Забор из тополя | ||||||
|  | Poplar Tree Fence Gate=Ворота из тополя | ||||||
|  | Poplar Tree Fence Rail=Перила из тополя | ||||||
|  | Poplar Tree Leaves=Листья тополя | ||||||
|  | Poplar Tree Planks=Доски из тополя | ||||||
|  | Poplar Tree Planks Slab=Доски из тополя (плита) | ||||||
|  | Poplar Tree Planks Stair=Доски из тополя (ступени) | ||||||
|  | Poplar Tree Sapling=Саженец тополя | ||||||
|  | Poplar Tree Trunk=Ствол тополя | ||||||
|  | Poplar Tree Trunk Slab=Ствол тополя (плита) | ||||||
|  | Poplar Tree Trunk Stair=Ствол тополя (ступени) | ||||||
|  | Red=красные | ||||||
|  | Rubber Tree=Каучуковое дерево | ||||||
|  | Rubber Tree Fence=Забор из каучукового дерева | ||||||
|  | Rubber Tree Fence Gate=Ворота из каучукового дерева | ||||||
|  | Rubber Tree Fence Rail=Перила из каучукового дерева | ||||||
|  | Rubber Tree Leaves=Листья каучукового дерева | ||||||
|  | Rubber Tree Planks=Доски из каучукового дерева | ||||||
|  | Rubber Tree Planks Slab=Доски из каучукового дерева (плита) | ||||||
|  | Rubber Tree Planks Stair=Доски из каучукового дерева (ступени) | ||||||
|  | Rubber Tree Sapling=Саженец каучукового дерева | ||||||
|  | Rubber Tree Trunk=Ствол каучукового дерева | ||||||
|  | Rubber Tree Trunk (Empty)=Ствол каучукового дерева (пусто) | ||||||
|  | Rubber Tree Trunk Slab=Ствол каучукового дерева (плита) | ||||||
|  | Rubber Tree Trunk Stair=Ствол каучукового дерева (ступени) | ||||||
|  | Small poplar Tree Sapling=Малы саженец тополя | ||||||
|  | Spruce Cone=Еловая шишка | ||||||
|  | Spruce Tree=Ель | ||||||
|  | Spruce Tree Fence=Еловый забор | ||||||
|  | Spruce Tree Fence Gate=Еловые ворота | ||||||
|  | Spruce Tree Fence Rail=Еловые перила | ||||||
|  | Spruce Tree Leaves=Еловая хвоя | ||||||
|  | Spruce Tree Planks=Еловые доски | ||||||
|  | Spruce Tree Planks Slab=Еловые доски (плита) | ||||||
|  | Spruce Tree Planks Stair=Еловые доски (ступени) | ||||||
|  | Spruce Tree Sapling=Саженец ели | ||||||
|  | Spruce Tree Trunk=Ствол ели | ||||||
|  | Spruce Tree Trunk Slab=Ствол ели (плита) | ||||||
|  | Spruce Tree Trunk Stair=Ствол ели (ступени) | ||||||
|  | Willow Tree=Ива | ||||||
|  | Willow Tree Fence=Ивовый забор | ||||||
|  | Willow Tree Fence Gate=Ивовые ворота | ||||||
|  | Willow Tree Fence Rail=Ивовые перила | ||||||
|  | Willow Tree Leaves=Листья ивы | ||||||
|  | Willow Tree Planks=Ивовые доски | ||||||
|  | Willow Tree Planks Slab=Ивовые доски (плита) | ||||||
|  | Willow Tree Planks Stair=Ивовые доски (ступени) | ||||||
|  | Willow Tree Sapling=Саженец ивы | ||||||
|  | Willow Tree Trunk=Ствол ивы | ||||||
|  | Willow Tree Trunk Slab=Ствол ивы (плита) | ||||||
|  | Willow Tree Trunk Stair=Ствол ивы (ступени) | ||||||
|  | Yellow=желтые | ||||||
|  |  | ||||||
|  | # init.lua | ||||||
|  | Sapling=Саженец | ||||||
|  | Tree=Дерево | ||||||
|  | Wooden Planks=Деревянные доски | ||||||
|  | Leaves=Листья | ||||||
|  | Wooden Fence=Деревянный забор | ||||||
|  | Wooden Fence Rail=Деревянные перила | ||||||
|  | Wooden Fence Gate=Деревянные ворота | ||||||
| @@ -1,73 +1,219 @@ | |||||||
| # Template | # textdomain: moretrees | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### cocos_palm.lua ### | ||||||
|  |  | ||||||
|  | Coconut= | ||||||
|  | Coconut Flower= | ||||||
|  |  | ||||||
| ### crafts.lua ### | ### crafts.lua ### | ||||||
| Coconut Milk =  |  | ||||||
| Raw Coconut =  | Acorn Muffin= | ||||||
| Acorn Muffin batter =  | Acorn Muffin batter= | ||||||
| Acorn Muffin =  | Coconut Milk= | ||||||
| Roasted Spruce Cone Nuts =  | Date= | ||||||
| Roasted Pine Cone Nuts =  | Date & nut snack= | ||||||
| Roasted Fir Cone Nuts =  | Date-nut cake= | ||||||
|  | Date-nut cake batter= | ||||||
|  | Date-nut energy bar= | ||||||
|  | Raw Coconut= | ||||||
|  | Roasted Cedar Cone Nuts= | ||||||
|  | Roasted Fir Cone Nuts= | ||||||
|  | Roasted Spruce Cone Nuts= | ||||||
|  |  | ||||||
|  | ### date_palm.lua ### | ||||||
|  |  | ||||||
|  | Date Flowers= | ||||||
|  | Date Stem= | ||||||
|  | Dates= | ||||||
|  |  | ||||||
| ### node_defs.lua ### | ### node_defs.lua ### | ||||||
| Beech Tree Trunk =  |  | ||||||
| Apple Tree Trunk =  |  | ||||||
| Oak Tree Trunk =  |  | ||||||
| Giant Sequoia Trunk =  |  | ||||||
| Birch Tree Trunk =  |  | ||||||
| Palm Tree Trunk =  |  | ||||||
| Spruce Tree Trunk =  |  | ||||||
| Pine Tree Trunk =  |  | ||||||
| Willow Tree Trunk =  |  | ||||||
| Rubber Tree Trunk =  |  | ||||||
| Jungle Tree Trunk =  |  | ||||||
| Douglas Fir Trunk =  |  | ||||||
| Beech Tree Planks =  |  | ||||||
| Apple Tree Planks =  |  | ||||||
| Oak Tree Planks =  |  | ||||||
| Giant Sequoia Planks =  |  | ||||||
| Birch Tree Planks =  |  | ||||||
| Palm Tree Planks =  |  | ||||||
| Spruce Tree Planks =  |  | ||||||
| Pine Tree Planks =  |  | ||||||
| Willow Tree Planks =  |  | ||||||
| Rubber Tree Planks =  |  | ||||||
| Jungle Tree Planks =  |  | ||||||
| Douglas Fir Planks =  |  | ||||||
| Beech Tree Sapling =  |  | ||||||
| Apple Tree Sapling =  |  | ||||||
| Oak Tree Sapling =  |  | ||||||
| Giant Sequoia Sapling =  |  | ||||||
| Birch Tree Sapling =  |  | ||||||
| Palm Tree Sapling =  |  | ||||||
| Spruce Tree Sapling =  |  | ||||||
| Pine Tree Sapling =  |  | ||||||
| Willow Tree Sapling =  |  | ||||||
| Rubber Tree Sapling =  |  | ||||||
| Jungle Tree Sapling =  |  | ||||||
| Douglas Fir Sapling =  |  | ||||||
| Beech Tree Leaves =  |  | ||||||
| Apple Tree Leaves =  |  | ||||||
| Oak Tree Leaves =  |  | ||||||
| Giant Sequoia Leaves =  |  | ||||||
| Birch Tree Leaves =  |  | ||||||
| Palm Tree Leaves =  |  | ||||||
| Spruce Tree Leaves =  |  | ||||||
| Pine Tree Leaves =  |  | ||||||
| Willow Tree Leaves =  |  | ||||||
| Rubber Tree Leaves =  |  | ||||||
| Jungle Tree Leaves =  |  | ||||||
| Douglas Fir Leaves =  |  | ||||||
|  |  | ||||||
| Acorn =  | @1 (fast growth)= | ||||||
| Coconut =  | Acorn= | ||||||
| Spruce Cone =  | Apple Tree= | ||||||
| Pine Cone =  | Apple Tree Fence= | ||||||
| Fir Cone =  | Apple Tree Fence Gate= | ||||||
| Jungle Sapling =  | Apple Tree Fence Rail= | ||||||
| Jungle Tree Leaves (Yellow) =  | Apple Tree Leaves= | ||||||
| Jungle Tree Leaves (Red) =  | Apple Tree Planks= | ||||||
| Douglas Fir Leaves (Bright) =  | Apple Tree Planks Slab= | ||||||
| Rubber Tree Trunk (Empty) =  | Apple Tree Planks Stair= | ||||||
|  | Apple Tree Sapling= | ||||||
|  | Apple Tree Trunk= | ||||||
|  | Apple Tree Trunk Slab= | ||||||
|  | Apple Tree Trunk Stair= | ||||||
|  | Beech Tree= | ||||||
|  | Beech Tree Fence= | ||||||
|  | Beech Tree Fence Gate= | ||||||
|  | Beech Tree Fence Rail= | ||||||
|  | Beech Tree Leaves= | ||||||
|  | Beech Tree Planks= | ||||||
|  | Beech Tree Planks Slab= | ||||||
|  | Beech Tree Planks Stair= | ||||||
|  | Beech Tree Sapling= | ||||||
|  | Beech Tree Trunk= | ||||||
|  | Beech Tree Trunk Slab= | ||||||
|  | Beech Tree Trunk Stair= | ||||||
|  | Birch Tree= | ||||||
|  | Birch Tree Fence= | ||||||
|  | Birch Tree Fence Gate= | ||||||
|  | Birch Tree Fence Rail= | ||||||
|  | Birch Tree Leaves= | ||||||
|  | Birch Tree Planks= | ||||||
|  | Birch Tree Planks Slab= | ||||||
|  | Birch Tree Planks Stair= | ||||||
|  | Birch Tree Sapling= | ||||||
|  | Birch Tree Trunk= | ||||||
|  | Birch Tree Trunk Slab= | ||||||
|  | Birch Tree Trunk Stair= | ||||||
|  | Cedar Cone= | ||||||
|  | Cedar Tree= | ||||||
|  | Cedar Tree Fence= | ||||||
|  | Cedar Tree Fence Gate= | ||||||
|  | Cedar Tree Fence Rail= | ||||||
|  | Cedar Tree Leaves= | ||||||
|  | Cedar Tree Planks= | ||||||
|  | Cedar Tree Planks Slab= | ||||||
|  | Cedar Tree Planks Stair= | ||||||
|  | Cedar Tree Sapling= | ||||||
|  | Cedar Tree Trunk= | ||||||
|  | Cedar Tree Trunk Slab= | ||||||
|  | Cedar Tree Trunk Stair= | ||||||
|  | Date Palm Tree= | ||||||
|  | Date Palm Tree Fence= | ||||||
|  | Date Palm Tree Fence Gate= | ||||||
|  | Date Palm Tree Fence Rail= | ||||||
|  | Date Palm Tree Leaves= | ||||||
|  | Date Palm Tree Planks= | ||||||
|  | Date Palm Tree Planks Slab= | ||||||
|  | Date Palm Tree Planks Stair= | ||||||
|  | Date Palm Tree Sapling= | ||||||
|  | Date Palm Tree Trunk= | ||||||
|  | Date Palm Tree Trunk Slab= | ||||||
|  | Date Palm Tree Trunk Stair= | ||||||
|  | Douglas Fir= | ||||||
|  | Douglas Fir Fence= | ||||||
|  | Douglas Fir Fence Gate= | ||||||
|  | Douglas Fir Fence Rail= | ||||||
|  | Douglas Fir Leaves= | ||||||
|  | Douglas Fir Leaves (Bright)= | ||||||
|  | Douglas Fir Planks= | ||||||
|  | Douglas Fir Planks Slab= | ||||||
|  | Douglas Fir Planks Stair= | ||||||
|  | Douglas Fir Sapling= | ||||||
|  | Douglas Fir Trunk= | ||||||
|  | Douglas Fir Trunk Slab= | ||||||
|  | Douglas Fir Trunk Stair= | ||||||
|  | Fir Cone= | ||||||
|  | Giant Sequoia= | ||||||
|  | Giant Sequoia Fence= | ||||||
|  | Giant Sequoia Fence Gate= | ||||||
|  | Giant Sequoia Fence Rail= | ||||||
|  | Giant Sequoia Leaves= | ||||||
|  | Giant Sequoia Planks= | ||||||
|  | Giant Sequoia Planks Slab= | ||||||
|  | Giant Sequoia Planks Stair= | ||||||
|  | Giant Sequoia Sapling= | ||||||
|  | Giant Sequoia Trunk= | ||||||
|  | Giant Sequoia Trunk Slab= | ||||||
|  | Giant Sequoia Trunk Stair= | ||||||
|  | Jungle Tree= | ||||||
|  | Jungle Tree Fence= | ||||||
|  | Jungle Tree Fence Gate= | ||||||
|  | Jungle Tree Fence Rail= | ||||||
|  | Jungle Tree Leaves= | ||||||
|  | Jungle Tree Leaves (@1)= | ||||||
|  | Jungle Tree Planks= | ||||||
|  | Jungle Tree Planks Slab= | ||||||
|  | Jungle Tree Planks Stair= | ||||||
|  | Jungle Tree Sapling= | ||||||
|  | Jungle Tree Trunk= | ||||||
|  | Jungle Tree Trunk Slab= | ||||||
|  | Jungle Tree Trunk Stair= | ||||||
|  | Oak Tree= | ||||||
|  | Oak Tree Fence= | ||||||
|  | Oak Tree Fence Gate= | ||||||
|  | Oak Tree Fence Rail= | ||||||
|  | Oak Tree Leaves= | ||||||
|  | Oak Tree Planks= | ||||||
|  | Oak Tree Planks Slab= | ||||||
|  | Oak Tree Planks Stair= | ||||||
|  | Oak Tree Sapling= | ||||||
|  | Oak Tree Trunk= | ||||||
|  | Oak Tree Trunk Slab= | ||||||
|  | Oak Tree Trunk Stair= | ||||||
|  | Palm Tree= | ||||||
|  | Palm Tree Fence= | ||||||
|  | Palm Tree Fence Gate= | ||||||
|  | Palm Tree Fence Rail= | ||||||
|  | Palm Tree Leaves= | ||||||
|  | Palm Tree Planks= | ||||||
|  | Palm Tree Planks Slab= | ||||||
|  | Palm Tree Planks Stair= | ||||||
|  | Palm Tree Sapling= | ||||||
|  | Palm Tree Trunk= | ||||||
|  | Palm Tree Trunk Slab= | ||||||
|  | Palm Tree Trunk Stair= | ||||||
|  | Poplar Tree= | ||||||
|  | Poplar Tree Fence= | ||||||
|  | Poplar Tree Fence Gate= | ||||||
|  | Poplar Tree Fence Rail= | ||||||
|  | Poplar Tree Leaves= | ||||||
|  | Poplar Tree Planks= | ||||||
|  | Poplar Tree Planks Slab= | ||||||
|  | Poplar Tree Planks Stair= | ||||||
|  | Poplar Tree Sapling= | ||||||
|  | Poplar Tree Trunk= | ||||||
|  | Poplar Tree Trunk Slab= | ||||||
|  | Poplar Tree Trunk Stair= | ||||||
|  | Red= | ||||||
|  | Rubber Tree= | ||||||
|  | Rubber Tree Fence= | ||||||
|  | Rubber Tree Fence Gate= | ||||||
|  | Rubber Tree Fence Rail= | ||||||
|  | Rubber Tree Leaves= | ||||||
|  | Rubber Tree Planks= | ||||||
|  | Rubber Tree Planks Slab= | ||||||
|  | Rubber Tree Planks Stair= | ||||||
|  | Rubber Tree Sapling= | ||||||
|  | Rubber Tree Trunk= | ||||||
|  | Rubber Tree Trunk (Empty)= | ||||||
|  | Rubber Tree Trunk Slab= | ||||||
|  | Rubber Tree Trunk Stair= | ||||||
|  | Small poplar Tree Sapling= | ||||||
|  | Spruce Cone= | ||||||
|  | Spruce Tree= | ||||||
|  | Spruce Tree Fence= | ||||||
|  | Spruce Tree Fence Gate= | ||||||
|  | Spruce Tree Fence Rail= | ||||||
|  | Spruce Tree Leaves= | ||||||
|  | Spruce Tree Planks= | ||||||
|  | Spruce Tree Planks Slab= | ||||||
|  | Spruce Tree Planks Stair= | ||||||
|  | Spruce Tree Sapling= | ||||||
|  | Spruce Tree Trunk= | ||||||
|  | Spruce Tree Trunk Slab= | ||||||
|  | Spruce Tree Trunk Stair= | ||||||
|  | Willow Tree= | ||||||
|  | Willow Tree Fence= | ||||||
|  | Willow Tree Fence Gate= | ||||||
|  | Willow Tree Fence Rail= | ||||||
|  | Willow Tree Leaves= | ||||||
|  | Willow Tree Planks= | ||||||
|  | Willow Tree Planks Slab= | ||||||
|  | Willow Tree Planks Stair= | ||||||
|  | Willow Tree Sapling= | ||||||
|  | Willow Tree Trunk= | ||||||
|  | Willow Tree Trunk Slab= | ||||||
|  | Willow Tree Trunk Stair= | ||||||
|  | Yellow= | ||||||
|  |  | ||||||
| [Moretrees] Loaded (2013-02-11) =  | # init.lua | ||||||
|  | Sapling= | ||||||
|  | Tree= | ||||||
|  | Wooden Planks= | ||||||
|  | Leaves= | ||||||
|  | Wooden Fence= | ||||||
|  | Wooden Fence Rail= | ||||||
|  | Wooden Fence Gate= | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								mod.conf
									
									
									
									
									
								
							| @@ -1 +1,4 @@ | |||||||
| name = moretrees | name = moretrees | ||||||
|  | depends = xcompat | ||||||
|  | optional_depends = doors, stairs, moreblocks, farming, default, vessels | ||||||
|  | min_minetest_version = 5.2.0 | ||||||
|   | |||||||
							
								
								
									
										536
									
								
								node_defs.lua
									
									
									
									
									
								
							
							
						
						
									
										536
									
								
								node_defs.lua
									
									
									
									
									
								
							| @@ -1,31 +1,224 @@ | |||||||
| local S = moretrees.intllib | local S = minetest.get_translator("moretrees") | ||||||
|  |  | ||||||
| moretrees.avoidnodes = {} | moretrees.avoidnodes = {} | ||||||
|  |  | ||||||
|  | local jungle_sapling_texture = minetest.get_modpath("default") and "default_junglesapling.png" | ||||||
|  | 	or "moretrees_cedar_sapling.png" | ||||||
|  |  | ||||||
| moretrees.treelist = { | moretrees.treelist = { | ||||||
| 	{"beech",			"Beech Tree"}, | 	{"beech",        S("Beech Tree")}, | ||||||
| 	{"apple_tree",		"Apple Tree"}, | 	{"apple_tree",   S("Apple Tree")}, | ||||||
| 	{"oak",				"Oak Tree",			"acorn",					"Acorn",			{-0.2, -0.5, -0.2, 0.2, 0, 0.2},	0.8 }, | 	{"oak",          S("Oak Tree"),       "acorn",                S("Acorn"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, | ||||||
| 	{"sequoia",			"Giant Sequoia"}, | 	{"sequoia",      S("Giant Sequoia")}, | ||||||
| 	{"birch",			"Birch Tree"}, | 	{"birch",        S("Birch Tree")}, | ||||||
| 	{"palm",			"Palm Tree",		"palm_fruit_trunk_gen",		"Palm Tree",		{-0.2, -0.5, -0.2, 0.2, 0, 0.2},	1.0 }, | 	{"palm",         S("Palm Tree"),      "palm_fruit_trunk_gen", S("Palm Tree"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 }, | ||||||
| 	{"date_palm",		"Date Palm Tree",	"date_palm_fruit_trunk",	"Date Palm Tree",	{0, 0, 0, 0, 0, 0},	0.0 }, | 	{"date_palm",    S("Date Palm Tree"), "date_palm_fruit_trunk",S("Date Palm Tree"), {0, 0, 0, 0, 0, 0}, 0.0 }, | ||||||
| 	{"spruce",			"Spruce Tree",		"spruce_cone",				"Spruce Cone",		{-0.2, -0.5, -0.2, 0.2, 0, 0.2},	0.8 }, | 	{"spruce",       S("Spruce Tree"),    "spruce_cone",          S("Spruce Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, | ||||||
| 	{"cedar",			"Cedar Tree",		"cedar_cone",				"Cedar Cone",		{-0.2, -0.5, -0.2, 0.2, 0, 0.2},	0.8 }, | 	{"cedar",        S("Cedar Tree"),     "cedar_cone",           S("Cedar Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, | ||||||
| 	{"poplar",			"Poplar Tree"}, | 	{"poplar",       S("Poplar Tree")}, | ||||||
| 	{"poplar_small",	"Poplar Tree"}, | 	{"poplar_small", S("Poplar Tree")}, | ||||||
| 	{"willow",			"Willow Tree"}, | 	{"willow",       S("Willow Tree")}, | ||||||
| 	{"rubber_tree",		"Rubber Tree"}, | 	{"rubber_tree",  S("Rubber Tree")}, | ||||||
| 	{"fir",				"Douglas Fir",		"fir_cone",					"Fir Cone",			{-0.2, -0.5, -0.2, 0.2, 0, 0.2},	0.8 }, | 	{"fir",          S("Douglas Fir"),    "fir_cone",             S("Fir Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, | ||||||
| 	{"jungletree",		"Jungle Tree",		nil,						nil,				nil,								nil, "default_junglesapling.png"  }, | 	{"jungletree",   S("Jungle Tree"),     nil,                   nil, nil, nil, jungle_sapling_texture  }, | ||||||
| } | } | ||||||
|  |  | ||||||
| local dirs1 = { 21, 20, 23, 22, 21 } | moretrees.treedesc = { | ||||||
|  | 	beech = { | ||||||
|  | 		trunk = S("Beech Tree Trunk"), | ||||||
|  | 		planks = S("Beech Tree Planks"), | ||||||
|  | 		sapling = S("Beech Tree Sapling"), | ||||||
|  | 		leaves = S("Beech Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Beech Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Beech Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Beech Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Beech Tree Planks Slab"), | ||||||
|  | 		fence = S("Beech Tree Fence"), | ||||||
|  | 		fence_rail = S("Beech Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Beech Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	apple_tree = { | ||||||
|  | 		trunk = S("Apple Tree Trunk"), | ||||||
|  | 		planks = S("Apple Tree Planks"), | ||||||
|  | 		sapling = S("Apple Tree Sapling"), | ||||||
|  | 		leaves = S("Apple Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Apple Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Apple Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Apple Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Apple Tree Planks Slab"), | ||||||
|  | 		fence = S("Apple Tree Fence"), | ||||||
|  | 		fence_rail = S("Apple Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Apple Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	oak = { | ||||||
|  | 		trunk = S("Oak Tree Trunk"), | ||||||
|  | 		planks = S("Oak Tree Planks"), | ||||||
|  | 		sapling = S("Oak Tree Sapling"), | ||||||
|  | 		leaves = S("Oak Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Oak Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Oak Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Oak Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Oak Tree Planks Slab"), | ||||||
|  | 		fence = S("Oak Tree Fence"), | ||||||
|  | 		fence_rail = S("Oak Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Oak Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	sequoia = { | ||||||
|  | 		trunk = S("Giant Sequoia Trunk"), | ||||||
|  | 		planks = S("Giant Sequoia Planks"), | ||||||
|  | 		sapling = S("Giant Sequoia Sapling"), | ||||||
|  | 		leaves = S("Giant Sequoia Leaves"), | ||||||
|  | 		trunk_stair = S("Giant Sequoia Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Giant Sequoia Trunk Slab"), | ||||||
|  | 		planks_stair = S("Giant Sequoia Planks Stair"), | ||||||
|  | 		planks_slab = S("Giant Sequoia Planks Slab"), | ||||||
|  | 		fence = S("Giant Sequoia Fence"), | ||||||
|  | 		fence_rail = S("Giant Sequoia Fence Rail"), | ||||||
|  | 		fence_gate = S("Giant Sequoia Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	birch = { | ||||||
|  | 		trunk = S("Birch Tree Trunk"), | ||||||
|  | 		planks = S("Birch Tree Planks"), | ||||||
|  | 		sapling = S("Birch Tree Sapling"), | ||||||
|  | 		leaves = S("Birch Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Birch Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Birch Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Birch Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Birch Tree Planks Slab"), | ||||||
|  | 		fence = S("Birch Tree Fence"), | ||||||
|  | 		fence_rail = S("Birch Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Birch Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	palm = { | ||||||
|  | 		trunk = S("Palm Tree Trunk"), | ||||||
|  | 		planks = S("Palm Tree Planks"), | ||||||
|  | 		sapling = S("Palm Tree Sapling"), | ||||||
|  | 		leaves = S("Palm Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Palm Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Palm Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Palm Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Palm Tree Planks Slab"), | ||||||
|  | 		fence = S("Palm Tree Fence"), | ||||||
|  | 		fence_rail = S("Palm Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Palm Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	date_palm = { | ||||||
|  | 		trunk = S("Date Palm Tree Trunk"), | ||||||
|  | 		planks = S("Date Palm Tree Planks"), | ||||||
|  | 		sapling = S("Date Palm Tree Sapling"), | ||||||
|  | 		leaves = S("Date Palm Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Date Palm Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Date Palm Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Date Palm Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Date Palm Tree Planks Slab"), | ||||||
|  | 		fence = S("Date Palm Tree Fence"), | ||||||
|  | 		fence_rail = S("Date Palm Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Date Palm Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	spruce = { | ||||||
|  | 		trunk = S("Spruce Tree Trunk"), | ||||||
|  | 		planks = S("Spruce Tree Planks"), | ||||||
|  | 		sapling = S("Spruce Tree Sapling"), | ||||||
|  | 		leaves = S("Spruce Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Spruce Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Spruce Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Spruce Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Spruce Tree Planks Slab"), | ||||||
|  | 		fence = S("Spruce Tree Fence"), | ||||||
|  | 		fence_rail = S("Spruce Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Spruce Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	cedar =  { | ||||||
|  | 		trunk = S("Cedar Tree Trunk"), | ||||||
|  | 		planks = S("Cedar Tree Planks"), | ||||||
|  | 		sapling = S("Cedar Tree Sapling"), | ||||||
|  | 		leaves = S("Cedar Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Cedar Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Cedar Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Cedar Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Cedar Tree Planks Slab"), | ||||||
|  | 		fence = S("Cedar Tree Fence"), | ||||||
|  | 		fence_rail = S("Cedar Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Cedar Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	poplar = { | ||||||
|  | 		trunk = S("Poplar Tree Trunk"), | ||||||
|  | 		planks = S("Poplar Tree Planks"), | ||||||
|  | 		sapling = S("Poplar Tree Sapling"), | ||||||
|  | 		leaves = S("Poplar Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Poplar Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Poplar Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Poplar Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Poplar Tree Planks Slab"), | ||||||
|  | 		fence = S("Poplar Tree Fence"), | ||||||
|  | 		fence_rail = S("Poplar Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Poplar Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	poplar_small = { | ||||||
|  | 		sapling = S("Small poplar Tree Sapling"), | ||||||
|  | 	}, | ||||||
|  | 	willow = { | ||||||
|  | 		trunk = S("Willow Tree Trunk"), | ||||||
|  | 		planks = S("Willow Tree Planks"), | ||||||
|  | 		sapling = S("Willow Tree Sapling"), | ||||||
|  | 		leaves = S("Willow Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Willow Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Willow Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Willow Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Willow Tree Planks Slab"), | ||||||
|  | 		fence = S("Willow Tree Fence"), | ||||||
|  | 		fence_rail = S("Willow Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Willow Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	rubber_tree = { | ||||||
|  | 		trunk = S("Rubber Tree Trunk"), | ||||||
|  | 		planks = S("Rubber Tree Planks"), | ||||||
|  | 		sapling = S("Rubber Tree Sapling"), | ||||||
|  | 		leaves = S("Rubber Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Rubber Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Rubber Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Rubber Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Rubber Tree Planks Slab"), | ||||||
|  | 		fence = S("Rubber Tree Fence"), | ||||||
|  | 		fence_rail = S("Rubber Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Rubber Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	fir = { | ||||||
|  | 		trunk = S("Douglas Fir Trunk"), | ||||||
|  | 		planks = S("Douglas Fir Planks"), | ||||||
|  | 		sapling = S("Douglas Fir Sapling"), | ||||||
|  | 		leaves = S("Douglas Fir Leaves"), | ||||||
|  | 		trunk_stair = S("Douglas Fir Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Douglas Fir Trunk Slab"), | ||||||
|  | 		planks_stair = S("Douglas Fir Planks Stair"), | ||||||
|  | 		planks_slab = S("Douglas Fir Planks Slab"), | ||||||
|  | 		fence = S("Douglas Fir Fence"), | ||||||
|  | 		fence_rail = S("Douglas Fir Fence Rail"), | ||||||
|  | 		fence_gate = S("Douglas Fir Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | 	jungletree = { | ||||||
|  | 		trunk = S("Jungle Tree Trunk"), | ||||||
|  | 		planks = S("Jungle Tree Planks"), | ||||||
|  | 		sapling = S("Jungle Tree Sapling"), | ||||||
|  | 		leaves = S("Jungle Tree Leaves"), | ||||||
|  | 		trunk_stair = S("Jungle Tree Trunk Stair"), | ||||||
|  | 		trunk_slab = S("Jungle Tree Trunk Slab"), | ||||||
|  | 		planks_stair = S("Jungle Tree Planks Stair"), | ||||||
|  | 		planks_slab = S("Jungle Tree Planks Slab"), | ||||||
|  | 		fence = S("Jungle Tree Fence"), | ||||||
|  | 		fence_rail = S("Jungle Tree Fence Rail"), | ||||||
|  | 		fence_gate = S("Jungle Tree Fence Gate"), | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- local dirs1 = { 21, 20, 23, 22, 21 } | ||||||
| local dirs2 = { 12, 9, 18, 7, 12 } | local dirs2 = { 12, 9, 18, 7, 12 } | ||||||
| local dirs3 = { 14, 11, 16, 5, 14 } | -- local dirs3 = { 14, 11, 16, 5, 14 } | ||||||
|  |  | ||||||
| local moretrees_new_leaves_drawtype = "allfaces_optional" | local moretrees_new_leaves_drawtype = "allfaces_optional" | ||||||
| local moretrees_plantlike_leaves_visual_scale = 1 | local moretrees_plantlike_leaves_visual_scale = 1 | ||||||
|  | local moretrees_new_leaves_waving = 1 | ||||||
|  |  | ||||||
| if moretrees.plantlike_leaves then | if moretrees.plantlike_leaves then | ||||||
| 	moretrees_new_leaves_drawtype = "plantlike" | 	moretrees_new_leaves_drawtype = "plantlike" | ||||||
| @@ -34,8 +227,8 @@ end | |||||||
|  |  | ||||||
| -- redefine default leaves to handle plantlike and/or leaf decay options | -- redefine default leaves to handle plantlike and/or leaf decay options | ||||||
|  |  | ||||||
| if moretrees.plantlike_leaves then | if minetest.get_modpath("default") and moretrees.plantlike_leaves then | ||||||
| 	minetest.override_item("default:leaves", { | 	minetest.override_item(xcompat.materials.apple_leaves, { | ||||||
| 		inventory_image = minetest.inventorycube("default_leaves.png"), | 		inventory_image = minetest.inventorycube("default_leaves.png"), | ||||||
| 		drawtype = "plantlike", | 		drawtype = "plantlike", | ||||||
| 		visual_scale = math.sqrt(2) | 		visual_scale = math.sqrt(2) | ||||||
| @@ -44,8 +237,8 @@ end | |||||||
|  |  | ||||||
| -- redefine default jungle leaves for same | -- redefine default jungle leaves for same | ||||||
|  |  | ||||||
| if moretrees.plantlike_leaves then | if minetest.get_modpath("default") and moretrees.plantlike_leaves then | ||||||
| 	minetest.override_item("default:jungleleaves", { | 	minetest.override_item(xcompat.materials.jungle_leaves, { | ||||||
| 		inventory_image = minetest.inventorycube("default_jungleleaves.png"), | 		inventory_image = minetest.inventorycube("default_jungleleaves.png"), | ||||||
| 		drawtype = "plantlike", | 		drawtype = "plantlike", | ||||||
| 		visual_scale = math.sqrt(2) | 		visual_scale = math.sqrt(2) | ||||||
| @@ -54,7 +247,6 @@ end | |||||||
|  |  | ||||||
| for i in ipairs(moretrees.treelist) do | for i in ipairs(moretrees.treelist) do | ||||||
| 	local treename = moretrees.treelist[i][1] | 	local treename = moretrees.treelist[i][1] | ||||||
| 	local treedesc = moretrees.treelist[i][2] |  | ||||||
| 	local fruit = moretrees.treelist[i][3] | 	local fruit = moretrees.treelist[i][3] | ||||||
| 	local fruitdesc = moretrees.treelist[i][4] | 	local fruitdesc = moretrees.treelist[i][4] | ||||||
| 	local selbox = moretrees.treelist[i][5] | 	local selbox = moretrees.treelist[i][5] | ||||||
| @@ -73,17 +265,17 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 		droprarity = 20 | 		droprarity = 20 | ||||||
| 		decay = moretrees.palm_leafdecay_radius | 		decay = moretrees.palm_leafdecay_radius | ||||||
| 	elseif treename == "date_palm" then | 	elseif treename == "date_palm" then | ||||||
| 		decay = moretrees.palm_leafdecay_radius | 		decay = moretrees.date_palm_leafdecay_radius | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	if treename ~= "jungletree"  -- the default game provides jungle tree and pine trunk/planks nodes. | 	-- dont register planks/nodes for trees from default and small varients for trees | ||||||
| 		and treename ~= "poplar_small" | 	local split_tn = treename:split("_") | ||||||
| 		and treename ~= "pine" then | 	if treename ~= "jungletree" and treename ~= "pine" and split_tn[2]~="small" then | ||||||
|  |  | ||||||
| 		saptex = "moretrees_"..treename.."_sapling.png" | 		saptex = "moretrees_"..treename.."_sapling.png" | ||||||
|  |  | ||||||
| 		minetest.register_node("moretrees:"..treename.."_trunk", { | 		minetest.register_node("moretrees:"..treename.."_trunk", { | ||||||
| 			description = S(treedesc.." Trunk"), | 			description = moretrees.treedesc[treename].trunk, | ||||||
| 			tiles = { | 			tiles = { | ||||||
| 				"moretrees_"..treename.."_trunk_top.png", | 				"moretrees_"..treename.."_trunk_top.png", | ||||||
| 				"moretrees_"..treename.."_trunk_top.png", | 				"moretrees_"..treename.."_trunk_top.png", | ||||||
| @@ -92,46 +284,28 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 			paramtype2 = "facedir", | 			paramtype2 = "facedir", | ||||||
| 			is_ground_content = false, | 			is_ground_content = false, | ||||||
| 			groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, | 			groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, | ||||||
| 			sounds = default.node_sound_wood_defaults(), | 			sounds = xcompat.sounds.node_sound_wood_defaults(), | ||||||
| 			on_place = minetest.rotate_node, | 			on_place = minetest.rotate_node, | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
|  | 		if moretrees.enable_planks then | ||||||
| 			minetest.register_node("moretrees:"..treename.."_planks", { | 			minetest.register_node("moretrees:"..treename.."_planks", { | ||||||
| 			description = S(treedesc.." Planks"), | 				description = moretrees.treedesc[treename].planks, | ||||||
| 				tiles = {"moretrees_"..treename.."_wood.png"}, | 				tiles = {"moretrees_"..treename.."_wood.png"}, | ||||||
| 				is_ground_content = false, | 				is_ground_content = false, | ||||||
| 				groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, | 				groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, | ||||||
| 			sounds = default.node_sound_wood_defaults(), | 				sounds = xcompat.sounds.node_sound_wood_defaults(), | ||||||
| 		}) |  | ||||||
|  |  | ||||||
| 		minetest.register_node("moretrees:"..treename.."_sapling", { |  | ||||||
| 			description = S(treedesc.." Sapling"), |  | ||||||
| 			drawtype = "plantlike", |  | ||||||
| 			tiles = {saptex}, |  | ||||||
| 			inventory_image = saptex, |  | ||||||
| 			paramtype = "light", |  | ||||||
| 			paramtype2 = "waving", |  | ||||||
| 			walkable = false, |  | ||||||
| 			is_ground_content = true, |  | ||||||
| 			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,sapling=1}, |  | ||||||
| 			sounds = default.node_sound_defaults(), |  | ||||||
| 			}) | 			}) | ||||||
|  | 		end | ||||||
|  |  | ||||||
| 		local moretrees_leaves_inventory_image = nil | 		local moretrees_leaves_inventory_image = nil | ||||||
| 		local moretrees_new_leaves_waving = nil |  | ||||||
|  |  | ||||||
| 		if moretrees.plantlike_leaves then | 		if moretrees.plantlike_leaves then | ||||||
| 			moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png") | 			moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png") | ||||||
| 		else |  | ||||||
| 			moretrees_new_leaves_waving = 1 |  | ||||||
| 		end | 		end | ||||||
|  |  | ||||||
| 		minetest.register_node("moretrees:"..treename.."_leaves", { | 		minetest.register_node("moretrees:"..treename.."_leaves", { | ||||||
| 			description = S(treedesc.." Leaves"), | 			description = moretrees.treedesc[treename].leaves, | ||||||
| 			drawtype = moretrees_new_leaves_drawtype, | 			drawtype = moretrees_new_leaves_drawtype, | ||||||
| 			waving = moretrees_new_leaves_waving, | 			waving = moretrees_new_leaves_waving, | ||||||
| 			visual_scale = moretrees_plantlike_leaves_visual_scale, | 			visual_scale = moretrees_plantlike_leaves_visual_scale, | ||||||
| @@ -140,7 +314,7 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 			paramtype = "light", | 			paramtype = "light", | ||||||
| 			is_ground_content = false, | 			is_ground_content = false, | ||||||
| 			groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1}, | 			groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1}, | ||||||
| 			sounds = default.node_sound_leaves_defaults(), | 			sounds = xcompat.sounds.node_sound_leaves_defaults(), | ||||||
|  |  | ||||||
| 			drop = { | 			drop = { | ||||||
| 				max_items = 1, | 				max_items = 1, | ||||||
| @@ -151,11 +325,8 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 			}, | 			}, | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		if moretrees.enable_stairs then |  | ||||||
| 		if minetest.get_modpath("moreblocks") then | 		if minetest.get_modpath("moreblocks") then | ||||||
|  |  | ||||||
| 	--			stairsplus:register_all(modname, subname, recipeitem, {fields}) |  | ||||||
|  |  | ||||||
| 			stairsplus:register_all( | 			stairsplus:register_all( | ||||||
| 				"moretrees", | 				"moretrees", | ||||||
| 				treename.."_trunk", | 				treename.."_trunk", | ||||||
| @@ -167,11 +338,12 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 						"moretrees_"..treename.."_trunk_top.png", | 						"moretrees_"..treename.."_trunk_top.png", | ||||||
| 						"moretrees_"..treename.."_trunk.png" | 						"moretrees_"..treename.."_trunk.png" | ||||||
| 					}, | 					}, | ||||||
| 						description = S(treedesc.." Trunk"), | 					description = moretrees.treedesc[treename].trunk, | ||||||
| 					drop = treename.."_trunk", | 					drop = treename.."_trunk", | ||||||
| 				} | 				} | ||||||
| 			) | 			) | ||||||
|  |  | ||||||
|  | 			if moretrees.enable_planks then | ||||||
| 				stairsplus:register_all( | 				stairsplus:register_all( | ||||||
| 					"moretrees", | 					"moretrees", | ||||||
| 					treename.."_planks", | 					treename.."_planks", | ||||||
| @@ -179,10 +351,11 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 					{ | 					{ | ||||||
| 						groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 }, | 						groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 }, | ||||||
| 						tiles = { "moretrees_"..treename.."_wood.png" }, | 						tiles = { "moretrees_"..treename.."_wood.png" }, | ||||||
| 						description = S(treedesc.." Planks"), | 						description = moretrees.treedesc[treename].planks, | ||||||
| 						drop = treename.."_planks", | 						drop = treename.."_planks", | ||||||
| 					} | 					} | ||||||
| 				) | 				) | ||||||
|  | 			end | ||||||
| 		elseif minetest.get_modpath("stairs") then | 		elseif minetest.get_modpath("stairs") then | ||||||
| 			stairs.register_stair_and_slab( | 			stairs.register_stair_and_slab( | ||||||
| 				"moretrees_"..treename.."_trunk", | 				"moretrees_"..treename.."_trunk", | ||||||
| @@ -192,30 +365,73 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 					"moretrees_"..treename.."_trunk_top.png", | 					"moretrees_"..treename.."_trunk_top.png", | ||||||
| 					"moretrees_"..treename.."_trunk.png" | 					"moretrees_"..treename.."_trunk.png" | ||||||
| 				}, | 				}, | ||||||
| 					S(treedesc.." Trunk Stair"), | 				moretrees.treedesc[treename].trunk_stair, | ||||||
| 					S(treedesc.." Trunk Slab"), | 				moretrees.treedesc[treename].trunk_slab, | ||||||
| 					default.node_sound_wood_defaults() | 				xcompat.sounds.node_sound_wood_defaults() | ||||||
| 			) | 			) | ||||||
|  |  | ||||||
|  | 			if moretrees.enable_planks then | ||||||
| 				stairs.register_stair_and_slab( | 				stairs.register_stair_and_slab( | ||||||
| 					"moretrees_"..treename.."_planks", | 					"moretrees_"..treename.."_planks", | ||||||
| 					"moretrees:"..treename.."_planks", | 					"moretrees:"..treename.."_planks", | ||||||
| 					{ snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 }, | 					{ snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 }, | ||||||
| 					{ "moretrees_"..treename.."_wood.png" }, | 					{ "moretrees_"..treename.."_wood.png" }, | ||||||
| 					S(treedesc.." Planks Stair"), | 					moretrees.treedesc[treename].planks_stair, | ||||||
| 					S(treedesc.." Planks Slab"), | 					moretrees.treedesc[treename].planks_slab, | ||||||
| 					default.node_sound_wood_defaults() | 					xcompat.sounds.node_sound_wood_defaults() | ||||||
| 				) | 				) | ||||||
|  | 			end | ||||||
|  |  | ||||||
| 		end | 		end | ||||||
|  |  | ||||||
|  | 		if minetest.get_modpath("default") and moretrees.enable_planks then | ||||||
|  | 			local planks_name = "moretrees:" .. treename .. "_planks" | ||||||
|  | 			local planks_tile = "moretrees_" .. treename .. "_wood.png" | ||||||
|  | 			default.register_fence("moretrees:" .. treename .. "_fence", { | ||||||
|  | 				description = moretrees.treedesc[treename].fence, | ||||||
|  | 				texture = planks_tile, | ||||||
|  | 				inventory_image = "default_fence_overlay.png^" .. planks_tile .. | ||||||
|  | 										"^default_fence_overlay.png^[makealpha:255,126,126", | ||||||
|  | 				wield_image = "default_fence_overlay.png^" .. planks_tile .. | ||||||
|  | 										"^default_fence_overlay.png^[makealpha:255,126,126", | ||||||
|  | 				material = planks_name, | ||||||
|  | 				groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, | ||||||
|  | 				sounds = xcompat.sounds.node_sound_wood_defaults() | ||||||
|  | 			}) | ||||||
|  | 			default.register_fence_rail("moretrees:" .. treename .. "_fence_rail", { | ||||||
|  | 				description = moretrees.treedesc[treename].fence_rail, | ||||||
|  | 				texture = planks_tile, | ||||||
|  | 				inventory_image = "default_fence_rail_overlay.png^" .. planks_tile .. | ||||||
|  | 										"^default_fence_rail_overlay.png^[makealpha:255,126,126", | ||||||
|  | 				wield_image = "default_fence_rail_overlay.png^" .. planks_tile .. | ||||||
|  | 										"^default_fence_rail_overlay.png^[makealpha:255,126,126", | ||||||
|  | 				material = planks_name, | ||||||
|  | 				groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, | ||||||
|  | 				sounds = xcompat.sounds.node_sound_wood_defaults() | ||||||
|  | 			}) | ||||||
|  | 			if minetest.global_exists("doors") then | ||||||
|  | 				doors.register_fencegate("moretrees:" .. treename .. "_gate", { | ||||||
|  | 					description = moretrees.treedesc[treename].fence_gate, | ||||||
|  | 					texture = planks_tile, | ||||||
|  | 					material = planks_name, | ||||||
|  | 					groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||||
|  | 				}) | ||||||
|  | 			end | ||||||
| 		end | 		end | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	minetest.register_node("moretrees:"..treename.."_sapling_ongen", { | 	-- the default game provides jungle tree and pine saplings. | ||||||
| 		description = S(treedesc.." Sapling (on-generated)"), | 	if treename~="jungletree" and treename ~= "pine" then | ||||||
|  | 		local regular_groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1} | ||||||
|  | 		if minetest.settings:get_bool("creative_mode", false) then | ||||||
|  | 			regular_groups["not_in_creative_inventory"]=1 | ||||||
|  | 		end | ||||||
|  |  | ||||||
|  | 		minetest.register_node("moretrees:"..treename.."_sapling", { | ||||||
|  | 			description = moretrees.treedesc[treename].sapling, | ||||||
| 			drawtype = "plantlike", | 			drawtype = "plantlike", | ||||||
| 		tiles = {saptex}, | 			tiles = {split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex}, | ||||||
| 		inventory_image = saptex, | 			inventory_image = split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex, | ||||||
| 			paramtype = "light", | 			paramtype = "light", | ||||||
| 			paramtype2 = "waving", | 			paramtype2 = "waving", | ||||||
| 			walkable = false, | 			walkable = false, | ||||||
| @@ -224,16 +440,104 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 				type = "fixed", | 				type = "fixed", | ||||||
| 				fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} | 				fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} | ||||||
| 			}, | 			}, | ||||||
| 		groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1,sapling=1}, | 			groups = regular_groups, | ||||||
| 		sounds = default.node_sound_defaults(), | 			sounds = xcompat.sounds.node_sound_default(), | ||||||
| 		drop = "moretrees:"..treename.."_sapling" | 			on_place = function(itemstack, placer, pointed_thing) | ||||||
|  | 				itemstack = xcompat.functions.sapling_on_place(itemstack, placer, pointed_thing, | ||||||
|  | 					"moretrees:" ..treename.. "_sapling", | ||||||
|  | 					-- minp, maxp to be checked, relative to sapling pos | ||||||
|  | 					-- minp_relative.y = 1 because sapling pos has been checked | ||||||
|  | 					{x = -3, y = 1, z = -3}, | ||||||
|  | 					{x = 3, y = 6, z = 3}, | ||||||
|  | 					-- maximum interval of interior volume check | ||||||
|  | 					4) | ||||||
|  |  | ||||||
|  | 				return itemstack | ||||||
|  | 			end, | ||||||
|  | 			on_construct = function(pos) | ||||||
|  | 				minetest.get_node_timer(pos):start(300) | ||||||
|  | 			end, | ||||||
|  | 			on_timer = function(pos, elapsed) | ||||||
|  | 				if moretrees.can_grow(pos, treename) then | ||||||
|  | 					--moretrees["grow_" .. treename](pos) | ||||||
|  | 					minetest.set_node(pos, {name="air"}) | ||||||
|  | 					if type(moretrees["spawn_" .. treename .. "_object"])=="string" then | ||||||
|  | 						local split = moretrees["spawn_" .. treename .. "_object"]:split(".") | ||||||
|  | 						moretrees[split[2]](pos) | ||||||
|  | 					else | ||||||
|  | 						minetest.spawn_tree(pos, moretrees["spawn_" .. treename .. "_object"]) | ||||||
|  | 					end | ||||||
|  | 				else | ||||||
|  | 					minetest.get_node_timer(pos):start(300) | ||||||
|  | 				end | ||||||
|  | 			end, | ||||||
|  | 		}) | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	local ongen_groups = { | ||||||
|  | 		snappy = 2, | ||||||
|  | 		dig_immediate = 3, | ||||||
|  | 		flammable = 2, | ||||||
|  | 		attached_node = 1, | ||||||
|  | 		sapling = 1, | ||||||
|  | 		moretrees_ongen = 1, | ||||||
|  | 		not_in_creative_inventory = 1 | ||||||
|  | 	} | ||||||
|  | 	if minetest.settings:get_bool("creative_mode", false) then | ||||||
|  | 		ongen_groups["not_in_creative_inventory"]=nil | ||||||
|  | 	end | ||||||
|  | 	minetest.register_node("moretrees:"..treename.."_sapling_ongen", { | ||||||
|  | 		description = S("@1 (fast growth)", moretrees.treedesc[treename].sapling), | ||||||
|  | 		drawtype = "plantlike", | ||||||
|  | 		tiles = {split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex,}, | ||||||
|  | 		inventory_image = split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex, | ||||||
|  | 		paramtype = "light", | ||||||
|  | 		paramtype2 = "waving", | ||||||
|  | 		walkable = false, | ||||||
|  | 		is_ground_content = true, | ||||||
|  | 		selection_box = { | ||||||
|  | 			type = "fixed", | ||||||
|  | 			fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} | ||||||
|  | 		}, | ||||||
|  | 		groups = ongen_groups, | ||||||
|  | 		sounds = xcompat.sounds.node_sound_default(), | ||||||
|  | 		drop = "moretrees:"..treename.."_sapling", | ||||||
|  | 		on_place = function(itemstack, placer, pointed_thing) | ||||||
|  | 			itemstack = xcompat.functions.sapling_on_place(itemstack, placer, pointed_thing, | ||||||
|  | 				"moretrees:" ..treename.. "_sapling_ongen", | ||||||
|  | 				-- minp, maxp to be checked, relative to sapling pos | ||||||
|  | 				-- minp_relative.y = 1 because sapling pos has been checked | ||||||
|  | 				{x = -3, y = 1, z = -3}, | ||||||
|  | 				{x = 3, y = 6, z = 3}, | ||||||
|  | 				-- maximum interval of interior volume check | ||||||
|  | 				4) | ||||||
|  |  | ||||||
|  | 			return itemstack | ||||||
|  | 		end, | ||||||
|  | 		on_construct = function(pos) | ||||||
|  | 			minetest.get_node_timer(pos):start(2) | ||||||
|  | 		end, | ||||||
|  | 		on_timer = function(pos, elapsed) | ||||||
|  | 			if moretrees.can_grow(pos, treename) then | ||||||
|  | 				--moretrees["grow_" .. treename](pos) | ||||||
|  | 				minetest.set_node(pos, {name="air"}) | ||||||
|  | 				if type(moretrees["spawn_" .. treename .. "_object"])=="string" then | ||||||
|  | 					local split = moretrees["spawn_" .. treename .. "_object"]:split(".") | ||||||
|  | 					moretrees[split[2]](pos) | ||||||
|  | 				else | ||||||
|  | 					minetest.spawn_tree(pos, moretrees["spawn_" .. treename .. "_object"]) | ||||||
|  | 				end | ||||||
|  | 			else | ||||||
|  | 				minetest.get_node_timer(pos):start(300) | ||||||
|  | 			end | ||||||
|  | 		end, | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	local fruitname = nil | 	local fruitname = nil | ||||||
| 	if fruit then | 	if fruit then | ||||||
| 		fruitname = "moretrees:"..fruit | 		fruitname = "moretrees:"..fruit | ||||||
| 		minetest.register_node(fruitname, { | 		minetest.register_node(fruitname, { | ||||||
| 			description = S(fruitdesc), | 			description = fruitdesc, | ||||||
| 			drawtype = "plantlike", | 			drawtype = "plantlike", | ||||||
| 			tiles = { "moretrees_"..fruit..".png" }, | 			tiles = { "moretrees_"..fruit..".png" }, | ||||||
| 			inventory_image = "moretrees_"..fruit..".png^[transformR180", | 			inventory_image = "moretrees_"..fruit..".png^[transformR180", | ||||||
| @@ -248,13 +552,19 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 					fixed = selbox | 					fixed = selbox | ||||||
| 				}, | 				}, | ||||||
| 			groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1, leafdecay = 1, leafdecay_drop = 1}, | 			groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1, leafdecay = 1, leafdecay_drop = 1}, | ||||||
| 			sounds = default.node_sound_defaults(), | 			sounds = xcompat.sounds.node_sound_default(), | ||||||
|  | 			after_place_node = function(pos, placer) | ||||||
|  | 				if placer:is_player() then | ||||||
|  | 					minetest.set_node(pos, {name = "moretrees:"..fruit, param2 = 1}) | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
| 		}) | 		}) | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	if treename ~= "jungletree" | 	if treename ~= "jungletree" | ||||||
| 		and treename ~= "poplar_small" | 		and treename ~= "poplar_small" | ||||||
| 		and treename ~= "pine" then | 		and treename ~= "pine" | ||||||
|  | 		and minetest.get_modpath("default") then | ||||||
| 			default.register_leafdecay({ | 			default.register_leafdecay({ | ||||||
| 				trunks = { "moretrees:"..treename.."_trunk" }, | 				trunks = { "moretrees:"..treename.."_trunk" }, | ||||||
| 				leaves = { "moretrees:"..treename.."_leaves", fruitname }, | 				leaves = { "moretrees:"..treename.."_leaves", fruitname }, | ||||||
| @@ -268,7 +578,7 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 		chance = 1, | 		chance = 1, | ||||||
| 		action = function(pos, node, active_object_count, active_object_count_wider) | 		action = function(pos, node, active_object_count, active_object_count_wider) | ||||||
| 			local fdir = node.param2 or 0 | 			local fdir = node.param2 or 0 | ||||||
| 				nfdir = dirs2[fdir+1] | 				local nfdir = dirs2[fdir+1] | ||||||
| 			minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir}) | 			minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir}) | ||||||
| 		end, | 		end, | ||||||
| 	}) | 	}) | ||||||
| @@ -281,37 +591,11 @@ for i in ipairs(moretrees.treelist) do | |||||||
| 	end | 	end | ||||||
| end | end | ||||||
|  |  | ||||||
| -- Add small poplar saplings | -- poplar saplings leaves | ||||||
|  |  | ||||||
| local poplar_sapling = minetest.registered_nodes["moretrees:poplar_sapling"] |  | ||||||
| local poplar_sapling_ongen = minetest.registered_nodes["moretrees:poplar_sapling_ongen"] |  | ||||||
| local poplar_small_sapling = {} |  | ||||||
| local poplar_small_sapling_ongen = {} |  | ||||||
| for k,v in pairs(poplar_sapling) do |  | ||||||
| 	poplar_small_sapling[k] = v |  | ||||||
| end |  | ||||||
| for k,v in pairs(poplar_sapling_ongen) do |  | ||||||
| 	poplar_small_sapling_ongen[k] = v |  | ||||||
| end |  | ||||||
| poplar_small_sapling.tiles = {"moretrees_poplar_small_sapling.png"} |  | ||||||
| poplar_small_sapling.inventory_image = "moretrees_poplar_small_sapling.png" |  | ||||||
| poplar_small_sapling.is_ground_content = true |  | ||||||
| poplar_small_sapling_ongen.tiles_ongen = {"moretrees_poplar_small_sapling.png"} |  | ||||||
| poplar_small_sapling_ongen.inventory_image_ongen = "moretrees_poplar_small_sapling.png" |  | ||||||
| poplar_small_sapling_ongen.drop = "moretrees:poplar_small_sapling" |  | ||||||
| poplar_small_sapling_ongen.is_ground_content = true |  | ||||||
|  |  | ||||||
| minetest.register_node("moretrees:poplar_small_sapling", poplar_small_sapling) |  | ||||||
| minetest.register_node("moretrees:poplar_small_sapling_ongen", poplar_small_sapling_ongen) |  | ||||||
| if moretrees.spawn_saplings then |  | ||||||
| 	table.insert(moretrees.avoidnodes, "moretrees:poplar_sapling") |  | ||||||
| 	table.insert(moretrees.avoidnodes, "moretrees:poplar_small_sapling_ongen") |  | ||||||
| end |  | ||||||
|  |  | ||||||
| local poplar_leaves_drop = minetest.registered_nodes["moretrees:poplar_leaves"].drop | local poplar_leaves_drop = minetest.registered_nodes["moretrees:poplar_leaves"].drop | ||||||
| minetest.override_item("moretrees:poplar_leaves", { | minetest.override_item("moretrees:poplar_leaves", { | ||||||
| 	drop = { | 	drop = { | ||||||
| 		max_items = poplar_leaves_drop.maxitems, | 		max_items = poplar_leaves_drop.max_items, | ||||||
| 		items = { | 		items = { | ||||||
| 			{items = {"moretrees:poplar_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity }, | 			{items = {"moretrees:poplar_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity }, | ||||||
| 			{items = {"moretrees:poplar_small_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity }, | 			{items = {"moretrees:poplar_small_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity }, | ||||||
| @@ -323,7 +607,7 @@ minetest.override_item("moretrees:poplar_leaves", { | |||||||
| -- Extra nodes for jungle trees: | -- Extra nodes for jungle trees: | ||||||
|  |  | ||||||
| local jungleleaves = {"yellow","red"} | local jungleleaves = {"yellow","red"} | ||||||
| local jungleleavesnames = {"Yellow", "Red"} | local jungleleavesnames = {S("Yellow"), S("Red")} | ||||||
| for color = 1, #jungleleaves do | for color = 1, #jungleleaves do | ||||||
| 	local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color] | 	local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color] | ||||||
|  |  | ||||||
| @@ -331,12 +615,10 @@ for color = 1, #jungleleaves do | |||||||
|  |  | ||||||
| 	if moretrees.plantlike_leaves then | 	if moretrees.plantlike_leaves then | ||||||
| 		moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png") | 		moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png") | ||||||
| 	else |  | ||||||
| 		moretrees_new_leaves_waving = 1 |  | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| 	minetest.register_node(leave_name, { | 	minetest.register_node(leave_name, { | ||||||
| 		description = S("Jungle Tree Leaves ("..jungleleavesnames[color]..")"), | 		description = S("Jungle Tree Leaves (@1)", jungleleavesnames[color]), | ||||||
| 		drawtype = moretrees_new_leaves_drawtype, | 		drawtype = moretrees_new_leaves_drawtype, | ||||||
| 		waving = moretrees_new_leaves_waving, | 		waving = moretrees_new_leaves_waving, | ||||||
| 		visual_scale = moretrees_plantlike_leaves_visual_scale, | 		visual_scale = moretrees_plantlike_leaves_visual_scale, | ||||||
| @@ -345,30 +627,31 @@ for color = 1, #jungleleaves do | |||||||
| 		paramtype = "light", | 		paramtype = "light", | ||||||
| 		is_ground_content = false, | 		is_ground_content = false, | ||||||
| 		groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 }, | 		groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 }, | ||||||
| 		drop = { | 		drop = minetest.get_modpath("default") and { | ||||||
| 			max_items = 1, | 			max_items = 1, | ||||||
| 			items = { | 			items = { | ||||||
| 				{items = {"default:junglesapling"}, rarity = 100 }, | 				{items = {"default:junglesapling"}, rarity = 100 }, | ||||||
| 				{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} } | 				{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} } | ||||||
| 			} | 			} | ||||||
| 		}, | 		} or nil, | ||||||
| 		sounds = default.node_sound_leaves_defaults(), | 		sounds = xcompat.sounds.node_sound_leaves_defaults(), | ||||||
| 	}) | 	}) | ||||||
| end | end | ||||||
|  |  | ||||||
| -- To get Moretrees to generate its own jungle trees among the default mapgen | -- To get Moretrees to generate its own jungle trees among the default mapgen | ||||||
| -- we need our own copy of that node, which moretrees will match against. | -- we need our own copy of that node, which moretrees will match against. | ||||||
|  |  | ||||||
| local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"]) | if minetest.get_modpath("default") then | ||||||
| jungle_tree.drop = jungle_tree.drop or { items = {} } | 	local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"]) | ||||||
| table.insert(jungle_tree.drop.items, { items = {"default:jungletree"}}) | 	jungle_tree.drop = "default:jungletree" | ||||||
| minetest.register_node("moretrees:jungletree_trunk", jungle_tree) | 	minetest.register_node("moretrees:jungletree_trunk", jungle_tree) | ||||||
|  |  | ||||||
| default.register_leafdecay({ | 	default.register_leafdecay({ | ||||||
| 		trunks = { "default:jungletree", "moretrees:jungletree_trunk" }, | 		trunks = { "default:jungletree", "moretrees:jungletree_trunk" }, | ||||||
| 	leaves = { "default:jungleleaves", "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" }, | 		leaves = { xcompat.materials.jungle_leaves, "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" }, | ||||||
| 		radius = moretrees.leafdecay_radius, | 		radius = moretrees.leafdecay_radius, | ||||||
| }) | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- Extra needles for firs | -- Extra needles for firs | ||||||
|  |  | ||||||
| @@ -395,18 +678,20 @@ minetest.register_node("moretrees:fir_leaves_bright", { | |||||||
| 			{items = {'moretrees:fir_leaves_bright'} } | 			{items = {'moretrees:fir_leaves_bright'} } | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	sounds = default.node_sound_leaves_defaults() | 	sounds = xcompat.sounds.node_sound_leaves_defaults() | ||||||
| }) | }) | ||||||
|  |  | ||||||
| default.register_leafdecay({ | if minetest.get_modpath("default") then | ||||||
|  | 	default.register_leafdecay({ | ||||||
| 		trunks = { "moretrees:fir_trunk" }, | 		trunks = { "moretrees:fir_trunk" }, | ||||||
| 		leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" }, | 		leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" }, | ||||||
| 		radius = moretrees.leafdecay_radius, | 		radius = moretrees.leafdecay_radius, | ||||||
| }) | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
| if moretrees.enable_redefine_apple then | if minetest.get_modpath("default") and moretrees.enable_redefine_apple then | ||||||
| 	local appledef = moretrees.clone_node("default:apple") | 	local appledef = table.copy(minetest.registered_nodes["default:apple"]) | ||||||
| 	appledef.groups.attached_node = 1 | 	appledef.groups.attached_node = 1 | ||||||
| 	minetest.register_node(":default:apple", appledef) | 	minetest.register_node(":default:apple", appledef) | ||||||
| end | end | ||||||
| @@ -432,9 +717,8 @@ minetest.register_node("moretrees:rubber_tree_trunk_empty", { | |||||||
| 		"moretrees_rubber_tree_trunk_top.png", | 		"moretrees_rubber_tree_trunk_top.png", | ||||||
| 		"moretrees_rubber_tree_trunk_empty.png" | 		"moretrees_rubber_tree_trunk_empty.png" | ||||||
| 	}, | 	}, | ||||||
| 	is_ground_content = true, |  | ||||||
| 	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, | 	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, | ||||||
| 	sounds = default.node_sound_wood_defaults(), | 	sounds = xcompat.sounds.node_sound_wood_defaults(), | ||||||
| 	paramtype2 = "facedir", | 	paramtype2 = "facedir", | ||||||
| 	is_ground_content = false, | 	is_ground_content = false, | ||||||
| 	on_place = minetest.rotate_node, | 	on_place = minetest.rotate_node, | ||||||
| @@ -446,7 +730,7 @@ minetest.register_abm({ | |||||||
| 	chance = 1, | 	chance = 1, | ||||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||||
| 		local fdir = node.param2 or 0 | 		local fdir = node.param2 or 0 | ||||||
| 			nfdir = dirs2[fdir+1] | 			local nfdir = dirs2[fdir+1] | ||||||
| 		minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir}) | 		minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir}) | ||||||
| 	end, | 	end, | ||||||
| }) | }) | ||||||
| @@ -480,7 +764,7 @@ minetest.register_alias("conifers:sapling",						"moretrees:fir_sapling") | |||||||
| minetest.register_alias("moretrees:jungletree_sapling",			"default:junglesapling") | minetest.register_alias("moretrees:jungletree_sapling",			"default:junglesapling") | ||||||
| minetest.register_alias("moretrees:jungletree_trunk_sideways",	"moreblocks:horizontal_jungle_tree") | minetest.register_alias("moretrees:jungletree_trunk_sideways",	"moreblocks:horizontal_jungle_tree") | ||||||
| minetest.register_alias("moretrees:jungletree_planks",			"default:junglewood") | minetest.register_alias("moretrees:jungletree_planks",			"default:junglewood") | ||||||
| minetest.register_alias("moretrees:jungletree_leaves_green",	"default:jungleleaves") | minetest.register_alias("moretrees:jungletree_leaves_green",	xcompat.materials.jungle_leaves) | ||||||
|  |  | ||||||
| minetest.register_alias("moretrees:acacia_trunk",				"default:acacia_tree") | minetest.register_alias("moretrees:acacia_trunk",				"default:acacia_tree") | ||||||
| minetest.register_alias("moretrees:acacia_planks",				"default:acacia_wood") | minetest.register_alias("moretrees:acacia_planks",				"default:acacia_wood") | ||||||
|   | |||||||
							
								
								
									
										172
									
								
								saplings.lua
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								saplings.lua
									
									
									
									
									
								
							| @@ -1,98 +1,108 @@ | |||||||
| -- sapling growth | -- sapling growth | ||||||
|  | -- these tables only affect hand-placed saplings | ||||||
|  | -- mapgen-placed always use their biome def settings, which are much more | ||||||
|  | -- limited, in the interest of speed. | ||||||
|  |  | ||||||
| for i in ipairs(moretrees.treelist) do | local dirt_surfaces = { | ||||||
|  | 	set = true, | ||||||
|  | 	[xcompat.materials.dirt] = true, | ||||||
|  | 	[xcompat.materials.dirt_with_grass] = true, | ||||||
|  | 	["default:dirt_with_dry_grass"] = true, | ||||||
|  | 	["default:dirt_with_coniferous_litter"] = true, | ||||||
|  | 	["default:dirt_with_rainforest_litter"] = true, | ||||||
|  | 	["woodsoils:dirt_with_leaves_1"] = true, | ||||||
|  | 	["woodsoils:dirt_with_leaves_2"] = true, | ||||||
|  | 	["woodsoils:grass_with_leaves_1"] = true, | ||||||
|  | 	["woodsoils:grass_with_leaves_2"] = true, | ||||||
|  | 	["meditteranean_biome:dirt_with_mediterranean_grass"] = true | ||||||
|  | } | ||||||
|  |  | ||||||
|  | local conifer_surfaces =  { | ||||||
|  | 	set = true, | ||||||
|  | 	[xcompat.materials.dirt] = true, | ||||||
|  | 	[xcompat.materials.dirt_with_grass] = true, | ||||||
|  | 	["default:dirt_with_dry_grass"] = true, | ||||||
|  | 	["default:dirt_with_coniferous_litter"] = true, | ||||||
|  | 	["default:dirt_with_rainforest_litter"] = true, | ||||||
|  | 	["woodsoils:dirt_with_leaves_1"] = true, | ||||||
|  | 	["woodsoils:dirt_with_leaves_2"] = true, | ||||||
|  | 	["woodsoils:grass_with_leaves_1"] = true, | ||||||
|  | 	["woodsoils:grass_with_leaves_2"] = true, | ||||||
|  | 	["default:dirt_with_snow"] = true, | ||||||
|  | 	["meditteranean_biome:dirt_with_mediterranean_grass"] = true | ||||||
|  | } | ||||||
|  |  | ||||||
|  | local sand_surfaces = { | ||||||
|  | 	set = true, | ||||||
|  | 	[xcompat.materials.sand] = true, | ||||||
|  | 	[xcompat.materials.desert_sand] = true, | ||||||
|  | 	["cottages:loam"] = true, | ||||||
|  | 	["darkage:mud"] = true, | ||||||
|  | 	-- note, no silver sand here. | ||||||
|  | 	-- too cold for a palm, too... well... sandy for anything else. | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function moretrees.can_grow(pos, treename) | ||||||
|  | 	local surfaces | ||||||
|  |  | ||||||
|  | 	if treename == "spruce" | ||||||
|  | 	  or treename == "fir" | ||||||
|  | 	  or treename == "cedar" | ||||||
|  | 	  or treename == "pine" then | ||||||
|  | 		surfaces = conifer_surfaces | ||||||
|  | 	elseif string.find(treename, "palm") then | ||||||
|  | 		surfaces = sand_surfaces | ||||||
|  | 	else | ||||||
|  | 		surfaces = dirt_surfaces | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	if surfaces[minetest.get_node(vector.new(pos.x, pos.y-1, pos.z)).name] then | ||||||
|  | 		return true | ||||||
|  | 	else | ||||||
|  | 		return false | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | --[[ for i in ipairs(moretrees.treelist) do | ||||||
| 	local treename = moretrees.treelist[i][1] | 	local treename = moretrees.treelist[i][1] | ||||||
| 	local tree_model = treename.."_model" | 	local tree_model = treename.."_model" | ||||||
| 	local tree_biome = treename.."_biome" | 	local tree_biome = treename.."_biome" | ||||||
|  | 	local surfaces | ||||||
|  | 	local grow_function = moretrees[tree_model] | ||||||
|  |  | ||||||
| 	if treename ~= "birch" and treename ~= "spruce" and treename ~= "fir" and treename ~= "jungletree" then | 	if treename == "spruce" | ||||||
|  | 	  or treename == "fir" | ||||||
|  | 	  or treename == "cedar" | ||||||
|  | 	  or treename == "pine" then | ||||||
|  | 		surfaces = conifer_surfaces | ||||||
|  | 	elseif string.find(treename, "palm") then | ||||||
|  | 		surfaces = sand_surfaces | ||||||
|  | 	else | ||||||
|  | 		surfaces = dirt_surfaces | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	if treename == "spruce" | ||||||
|  | 	  or treename == "fir" | ||||||
|  | 	  or treename == "birch" | ||||||
|  | 	  or treename == "jungletree" then | ||||||
|  | 		grow_function = "moretrees.grow_"..treename | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	biome_lib.dbg(dump(moretrees[tree_biome].surface), 4) | ||||||
|  |  | ||||||
| 		biome_lib:dbg(dump(moretrees[tree_biome].surface)) |  | ||||||
| 	biome_lib:grow_plants({ | 	biome_lib:grow_plants({ | ||||||
| 		grow_delay = moretrees.sapling_interval, | 		grow_delay = moretrees.sapling_interval, | ||||||
| 		grow_chance = moretrees.sapling_chance, | 		grow_chance = moretrees.sapling_chance, | ||||||
| 		grow_plant = "moretrees:"..treename.."_sapling", | 		grow_plant = "moretrees:"..treename.."_sapling", | ||||||
| 			grow_nodes = moretrees[tree_biome].surface, | 		grow_nodes = surfaces, | ||||||
| 			grow_function = moretrees[tree_model], | 		grow_function = grow_function, | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 		if moretrees.spawn_saplings then |  | ||||||
| 	biome_lib:grow_plants({ | 	biome_lib:grow_plants({ | ||||||
| 		grow_delay = 2, | 		grow_delay = 2, | ||||||
| 				grow_chance = 30, | 		grow_chance = 1, | ||||||
| 		grow_plant = "moretrees:"..treename.."_sapling_ongen", | 		grow_plant = "moretrees:"..treename.."_sapling_ongen", | ||||||
| 				grow_nodes = moretrees[tree_biome].surface, | 		grow_nodes = surfaces, | ||||||
| 				grow_function = moretrees[tree_model], | 		grow_function = grow_function, | ||||||
| 	}) | 	}) | ||||||
| 		end | end ]] | ||||||
|  |  | ||||||
| 	end |  | ||||||
| end |  | ||||||
|  |  | ||||||
| biome_lib:grow_plants({ |  | ||||||
| 	grow_delay = moretrees.sapling_interval, |  | ||||||
| 	grow_chance = moretrees.sapling_chance, |  | ||||||
| 	grow_plant = "moretrees:birch_sapling", |  | ||||||
| 	grow_nodes = moretrees.birch_biome.surface, |  | ||||||
| 	grow_function = "moretrees.grow_birch" |  | ||||||
| }) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| biome_lib:grow_plants({ |  | ||||||
| 	grow_delay = moretrees.sapling_interval, |  | ||||||
| 	grow_chance = moretrees.sapling_chance, |  | ||||||
| 	grow_plant = "moretrees:spruce_sapling", |  | ||||||
| 	grow_nodes = moretrees.spruce_biome.surface, |  | ||||||
| 	grow_function = "moretrees.grow_spruce" |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| biome_lib:grow_plants({ |  | ||||||
| 	grow_delay = moretrees.sapling_interval, |  | ||||||
| 	grow_chance = moretrees.sapling_chance, |  | ||||||
| 	grow_plant = "moretrees:fir_sapling", |  | ||||||
| 	grow_nodes = moretrees.fir_biome.surface, |  | ||||||
| 	grow_function = "moretrees.grow_fir" |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| biome_lib:grow_plants({ |  | ||||||
| 	grow_delay = moretrees.sapling_interval, |  | ||||||
| 	grow_chance = moretrees.sapling_chance, |  | ||||||
| 	grow_plant = "default:junglesapling", |  | ||||||
| 	grow_nodes = moretrees.jungletree_biome.surface, |  | ||||||
| 	grow_function = "moretrees.grow_jungletree" |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| if moretrees.spawn_saplings then |  | ||||||
| 	biome_lib:grow_plants({ |  | ||||||
| 		grow_delay = 2, |  | ||||||
| 		grow_chance = 30, |  | ||||||
| 		grow_plant = "moretrees:jungletree_sapling_ongen", |  | ||||||
| 		grow_nodes = moretrees.jungletree_biome.surface, |  | ||||||
| 		grow_function = "moretrees.grow_jungletree" |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	biome_lib:grow_plants({ |  | ||||||
| 		grow_delay = 2, |  | ||||||
| 		grow_chance = 30, |  | ||||||
| 		grow_plant = "moretrees:fir_sapling_ongen", |  | ||||||
| 		grow_nodes = moretrees.fir_biome.surface, |  | ||||||
| 		grow_function = "moretrees.grow_fir" |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	biome_lib:grow_plants({ |  | ||||||
| 		grow_delay = 2, |  | ||||||
| 		grow_chance = 30, |  | ||||||
| 		grow_plant = "moretrees:spruce_sapling_ongen", |  | ||||||
| 		grow_nodes = moretrees.spruce_biome.surface, |  | ||||||
| 		grow_function = "moretrees.grow_spruce" |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	biome_lib:grow_plants({ |  | ||||||
| 		grow_delay = 2, |  | ||||||
| 		grow_chance = 30, |  | ||||||
| 		grow_plant = "moretrees:birch_sapling_ongen", |  | ||||||
| 		grow_nodes = moretrees.birch_biome.surface, |  | ||||||
| 		grow_function = "moretrees.grow_birch" |  | ||||||
| 	}) |  | ||||||
| end |  | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ minetest.register_chatcommand("make-scene", { | |||||||
| 		minetest.place_node({x=780, y=30, z=-276}, {name="default:obsidian"}) | 		minetest.place_node({x=780, y=30, z=-276}, {name="default:obsidian"}) | ||||||
|  |  | ||||||
| 		for z = -360, -300 do | 		for z = -360, -300 do | ||||||
| 			dy=2 | 			local dy=2 | ||||||
| 			for x = 630 + (-z - 360)/3, 660 + (-z - 300)/3 do | 			for x = 630 + (-z - 360)/3, 660 + (-z - 300)/3 do | ||||||
| 				for y = 5, 22 do | 				for y = 5, 22 do | ||||||
| 					minetest.place_node({x=x, y=y, z=z}, {name="default:desert_stone"}) | 					minetest.place_node({x=x, y=y, z=z}, {name="default:desert_stone"}) | ||||||
| @@ -145,7 +145,8 @@ minetest.register_chatcommand("make-scene", { | |||||||
| The following is a search/replace command suitable for vi (/vim) or sed, to convert minetest log | The following is a search/replace command suitable for vi (/vim) or sed, to convert minetest log | ||||||
| messages to equivalent lua commands: | messages to equivalent lua commands: | ||||||
|  |  | ||||||
| s/.*\(\(moretrees\|default\)[^ ]*\) at (\([-0-9]\+\),\([-0-9]\+\),\([-0-9]\+\)).*/\t\tminetest.place_node({x=\3, y=\4, z=\5}, {name="\1"})/ | s/.*\(\(moretrees\|default\)[^ ]*\) at | ||||||
|  | 	(\([-0-9]\+\),\([-0-9]\+\),\([-0-9]\+\)).*/\t\tminetest.place_node({x=\3, y=\4, z=\5}, {name="\1"})/ | ||||||
|  |  | ||||||
| E.g. a minetest log line of the following kind: | E.g. a minetest log line of the following kind: | ||||||
| 		2016-07-03 11:30:50: ACTION[Server]: singleplayer places node moretrees:rubber_tree_sapling at  (760,5,-223) | 		2016-07-03 11:30:50: ACTION[Server]: singleplayer places node moretrees:rubber_tree_sapling at  (760,5,-223) | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								settings.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								settings.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | local stg = minetest.settings | ||||||
|  |  | ||||||
|  | --spawns tree on mapgen as saplings, legacy setting | ||||||
|  | moretrees.spawn_saplings		= stg:get_bool("moretrees.spawn_saplings", true) | ||||||
|  | moretrees.spawn_enabled = stg:get_bool("moretrees.spawn_enabled", true) | ||||||
|  |  | ||||||
|  | --enable plantlike drawtype for leaves | ||||||
|  | moretrees.plantlike_leaves		= stg:get_bool("moretrees.plantlike_leaves", false) | ||||||
|  |  | ||||||
|  | -- Enable this if you want moretrees to redefine default apples so that they | ||||||
|  | -- fall when leaves decay/are dug. | ||||||
|  | moretrees.enable_redefine_apple		= stg:get_bool("moretrees.enable_redefine_apple", true) | ||||||
|  |  | ||||||
|  | -- various related settings to configure leaf decay. | ||||||
|  | moretrees.leafdecay_radius		= tonumber(stg:get("moretrees.leafdecay_radius")) or 5 | ||||||
|  | moretrees.palm_leafdecay_radius		= tonumber(stg:get("moretrees.palm_leafdecay_radius")) or 10 | ||||||
|  | moretrees.date_palm_leafdecay_radius	= tonumber(stg:get("moretrees.date_palm_leafdecay_radius")) or 14 | ||||||
|  |  | ||||||
|  | -- Cocos palm settings | ||||||
|  | moretrees.coconuts_regrow		= stg:get_bool("moretrees.coconuts_regrow", true) | ||||||
|  | moretrees.coconuts_convert_existing_palms = stg:get_bool("moretrees.coconuts_convert_existing_palms", true) | ||||||
|  | moretrees.coconut_flower_interval	= tonumber(stg:get("moretrees.coconut_flower_interval")) or 59 | ||||||
|  | moretrees.coconut_flower_chance		= tonumber(stg:get("moretrees.coconut_flower_chance")) or 67 | ||||||
|  | moretrees.coconut_grow_interval		= tonumber(stg:get("moretrees.coconut_grow_interval")) or | ||||||
|  |     2 * moretrees.coconut_flower_interval * moretrees.coconut_flower_chance | ||||||
|  | moretrees.coconut_item_drop_ichance	= tonumber(stg:get("moretrees.coconut_item_drop_ichance")) or 10 | ||||||
|  |  | ||||||
|  | -- Date palm settings | ||||||
|  | moretrees.dates_regrow_pollinated	= stg:get_bool("moretrees.dates_regrow_pollinated", true) | ||||||
|  | moretrees.dates_regrow_unpollinated_percent	= tonumber(stg:get("moretrees.dates_regrow_unpollinated_percent")) or 0 | ||||||
|  | moretrees.dates_female_percent		= tonumber(stg:get("moretrees.dates_female_percent")) or 57 | ||||||
|  | moretrees.dates_pollination_distance	= tonumber(stg:get("moretrees.dates_pollination_distance")) or 120 | ||||||
|  | moretrees.dates_blossom_search_time_treshold = tonumber(stg:get("moretrees.dates_blossom_search_time_treshold")) or 1000 | ||||||
|  | moretrees.dates_blossom_search_iload = tonumber(stg:get("moretrees.dates_blossom_search_iload")) or 10 | ||||||
|  | moretrees.dates_flower_interval		= tonumber(stg:get("moretrees.dates_flower_interval")) or 59 | ||||||
|  | moretrees.dates_flower_chance		= tonumber(stg:get("moretrees.dates_flower_chance")) or 181 | ||||||
|  | moretrees.dates_grow_interval		= tonumber(stg:get("moretrees.dates_grow_interval")) or | ||||||
|  |     2 * moretrees.dates_flower_interval * moretrees.dates_flower_chance | ||||||
|  | moretrees.dates_item_drop_ichance	= tonumber(stg:get("moretrees.dates_item_drop_ichance")) or 10 | ||||||
|  |  | ||||||
|  | -- Sapling settings | ||||||
|  | moretrees.sapling_interval		= 100 | ||||||
|  | moretrees.sapling_chance		= 5 | ||||||
|  |  | ||||||
|  | -- Enable this only if you have used an old moretrees version which was using biome_lib | ||||||
|  | -- and when you notice large areas with ongen saplings that don't grow | ||||||
|  | moretrees.grow_legacy_saplings	= stg:get_bool("moretrees.grow_legacy_saplings", false) | ||||||
|  |  | ||||||
|  | -- If this variable is set to true, drop leaves out as entities during leaf | ||||||
|  | -- decay, rather than just disappearing them. | ||||||
|  | moretrees.decay_leaves_as_items = stg:get_bool("moretrees.decay_leaves_as_items", false) | ||||||
|  |  | ||||||
|  | -- this is an internal setting for games that only have one type of planks | ||||||
|  | if type(minetest.get_game_info) == "function" then | ||||||
|  |     moretrees.enable_planks = minetest.get_game_info().id~="voxelgarden" | ||||||
|  | else | ||||||
|  |     moretrees.enable_planks = true | ||||||
|  | end | ||||||
| @@ -1,5 +1,6 @@ | |||||||
| moretrees.beech_model={ | moretrees.beech_model={ | ||||||
| 	axiom="FFFFFBFB", | 	axiom="FFFFFBFB", | ||||||
|  | 	-- luacheck: no max line length | ||||||
| 	rules_a="[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fdd]]", | 	rules_a="[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fdd]]", | ||||||
| 	rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]", | 	rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]", | ||||||
| 	rules_c="/", | 	rules_c="/", | ||||||
| @@ -24,8 +25,8 @@ moretrees.apple_tree_model={ | |||||||
| 	random_level=0, | 	random_level=0, | ||||||
| 	trunk_type="single", | 	trunk_type="single", | ||||||
| 	thin_branches=true, | 	thin_branches=true, | ||||||
| 	fruit="default:apple", | 	fruit=minetest.get_modpath("default") and "default:apple" or nil, | ||||||
| 	fruit_chance=15, | 	fruit_chance=minetest.get_modpath("default") and 15 or nil, | ||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.oak_model={ | moretrees.oak_model={ | ||||||
| @@ -49,7 +50,6 @@ moretrees.poplar_model={ | |||||||
| 	rules_b="[[T]&&G++f++ff++ff++ff++f--]G", | 	rules_b="[[T]&&G++f++ff++ff++ff++f--]G", | ||||||
| 	rules_c="[[T]&&G++f++ff++ff++ff++f--G++[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G]G", | 	rules_c="[[T]&&G++f++ff++ff++ff++f--G++[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G]G", | ||||||
| 	rules_d="f", | 	rules_d="f", | ||||||
| 	trunk="air", |  | ||||||
| 	trunk="moretrees:poplar_trunk", | 	trunk="moretrees:poplar_trunk", | ||||||
| 	leaves="moretrees:poplar_leaves", | 	leaves="moretrees:poplar_leaves", | ||||||
| 	angle=45, | 	angle=45, | ||||||
| @@ -76,6 +76,7 @@ moretrees.poplar_small_model={ | |||||||
|  |  | ||||||
| moretrees.sequoia_model={ | moretrees.sequoia_model={ | ||||||
| 	axiom="FFFFFFFFFFddccA///cccFddcFA///ddFcFA/cFFddFcdBddd/A/ccdcddd/ccAddddcFBcccAccFdFcFBcccc/BFdFFcFFdcccc/B", | 	axiom="FFFFFFFFFFddccA///cccFddcFA///ddFcFA/cFFddFcdBddd/A/ccdcddd/ccAddddcFBcccAccFdFcFBcccc/BFdFFcFFdcccc/B", | ||||||
|  | 	-- luacheck: no max line length | ||||||
| 	rules_a="[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]", | 	rules_a="[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]", | ||||||
| 	rules_b="[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]", | 	rules_b="[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]", | ||||||
| 	rules_c="/", | 	rules_c="/", | ||||||
| @@ -147,7 +148,7 @@ moretrees.palm_model={ | |||||||
| -- So, a generic fruit trunk is spawned. An ABM will convert it to a male | -- So, a generic fruit trunk is spawned. An ABM will convert it to a male | ||||||
| -- or female fruit trunk, and generate the actual dates. | -- or female fruit trunk, and generate the actual dates. | ||||||
| moretrees.date_palm_model={ | moretrees.date_palm_model={ | ||||||
| 	axiom="TTTTddddddddddccccccccccRT[TGGGGT]".. | 	axiom="TTTTddddddddddccccccccccRT[TTT]".. | ||||||
| 		"ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]".. | 		"ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]".. | ||||||
| 		"GGccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]".. | 		"GGccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]".. | ||||||
| 		"GGccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]", | 		"GGccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]", | ||||||
| @@ -167,6 +168,7 @@ moretrees.date_palm_model={ | |||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.spruce_model1={ | moretrees.spruce_model1={ | ||||||
|  | 	-- luacheck: no max line length | ||||||
| 	axiom="FFFFFAFFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", | 	axiom="FFFFFAFFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", | ||||||
| 	rules_a="[&&&FFFFFF^^FFF][&&&++FFFFFF^^FFF][&&&++++FFFFFF^^FFF][&&&++++++FFFFFF^^FFF][&&&--FFFFFF^^FFF][&&&----FFFFFF^^FFF]", | 	rules_a="[&&&FFFFFF^^FFF][&&&++FFFFFF^^FFF][&&&++++FFFFFF^^FFF][&&&++++++FFFFFF^^FFF][&&&--FFFFFF^^FFF][&&&----FFFFFF^^FFF]", | ||||||
| 	rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", | 	rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", | ||||||
| @@ -184,6 +186,7 @@ moretrees.spruce_model1={ | |||||||
| } | } | ||||||
|  |  | ||||||
| moretrees.spruce_model2={ | moretrees.spruce_model2={ | ||||||
|  | 	-- luacheck: no max line length | ||||||
| 	axiom="FFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", | 	axiom="FFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", | ||||||
| 	rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", | 	rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", | ||||||
| 	rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]", | 	rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]", | ||||||
| @@ -218,6 +221,7 @@ moretrees.cedar_model={ | |||||||
|  |  | ||||||
| moretrees.willow_model={ | moretrees.willow_model={ | ||||||
| 	axiom="FFFFFFFFccA", | 	axiom="FFFFFFFFccA", | ||||||
|  | 	-- luacheck: no max line length | ||||||
| 	rules_a="[&FF&FFFF&&F&FFFFFFFdddd][**&FF&FFFF&&F&FFFFFFFdddd][//&FF&FFFF&&F&FFFFFFFdddd][////&FF&FFFF&&F&FFFFFFFdddd][//////&FF&FFFF&&F&FFFFFFFdddd][////////&FF&FFFF&&F&FFFFFFFdddd]", | 	rules_a="[&FF&FFFF&&F&FFFFFFFdddd][**&FF&FFFF&&F&FFFFFFFdddd][//&FF&FFFF&&F&FFFFFFFdddd][////&FF&FFFF&&F&FFFFFFFdddd][//////&FF&FFFF&&F&FFFFFFFdddd][////////&FF&FFFF&&F&FFFFFFFdddd]", | ||||||
| 	rules_c="/", | 	rules_c="/", | ||||||
| 	rules_d="F", | 	rules_d="F", | ||||||
| @@ -248,7 +252,7 @@ moretrees.jungletree_model={ | |||||||
| 	rules_a=nil, | 	rules_a=nil, | ||||||
| 	rules_b=nil, | 	rules_b=nil, | ||||||
| 	trunk="moretrees:jungletree_trunk", | 	trunk="moretrees:jungletree_trunk", | ||||||
| 	leaves="default:jungleleaves", | 	leaves=xcompat.materials.jungle_leaves, | ||||||
| 	leaves2=nil, | 	leaves2=nil, | ||||||
| 	leaves2_chance=nil, | 	leaves2_chance=nil, | ||||||
| 	angle=45, | 	angle=45, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user