mirror of
				https://github.com/mt-mods/moretrees.git
				synced 2025-11-04 07:25:30 +01:00 
			
		
		
		
	Compare commits
	
		
			18 Commits
		
	
	
		
			sapling_gr
			...
			aaa0ba123b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aaa0ba123b | |||
| 159cd8d506 | |||
| bce9f8d1cb | |||
| 19d41419a0 | |||
| be9bc9dc23 | |||
| 850e9627c7 | |||
| b2a94399ec | |||
| 7383549476 | |||
| ac9dd5503c | |||
| 5ee036f0f4 | |||
| fab2944277 | |||
| c8aaaf20ed | |||
| 93553670d2 | |||
| f3108af2e3 | |||
| 114e47966b | |||
| 157f53def0 | |||
| 26f1ec49d2 | |||
| aebc7a41b0 | 
							
								
								
									
										18
									
								
								.github/workflows/luacheck.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/luacheck.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,18 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
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 ./
 | 
					 | 
				
			||||||
							
								
								
									
										35
									
								
								.luacheckrc
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								.luacheckrc
									
									
									
									
									
								
							@@ -1,25 +1,28 @@
 | 
				
			|||||||
 | 
					std = "lua51+minetest"
 | 
				
			||||||
unused_args = false
 | 
					unused_args = false
 | 
				
			||||||
allow_defined_top = true
 | 
					allow_defined_top = true
 | 
				
			||||||
 | 
					max_line_length = 999
 | 
				
			||||||
 | 
					max_comment_line_length = 999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exclude_files = {".luacheckrc"}
 | 
					stds.minetest = {
 | 
				
			||||||
 | 
						read_globals = {
 | 
				
			||||||
 | 
							"minetest",
 | 
				
			||||||
globals = {
 | 
							"vector",
 | 
				
			||||||
	"minetest",
 | 
							"VoxelManip",
 | 
				
			||||||
	"vector",
 | 
							"VoxelArea",
 | 
				
			||||||
	"VoxelManip",
 | 
							"PseudoRandom",
 | 
				
			||||||
	"VoxelArea",
 | 
							"ItemStack",
 | 
				
			||||||
	"PseudoRandom",
 | 
							"default",
 | 
				
			||||||
	"ItemStack",
 | 
							table = {
 | 
				
			||||||
	"default",
 | 
								fields = {
 | 
				
			||||||
	"dump",
 | 
									"copy",
 | 
				
			||||||
	"moretrees",
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"dump",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
read_globals = {
 | 
					read_globals = {
 | 
				
			||||||
	string = {fields = {"split"}},
 | 
					 | 
				
			||||||
    table = {fields = {"copy", "getn"}},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"biome_lib",
 | 
						"biome_lib",
 | 
				
			||||||
	"stairsplus",
 | 
						"stairsplus",
 | 
				
			||||||
	"stairs",
 | 
						"stairs",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,9 +69,6 @@ moretrees.apple_tree_biome = {
 | 
				
			|||||||
	temp_max = -0.15,
 | 
						temp_max = -0.15,
 | 
				
			||||||
	rarity = 75,
 | 
						rarity = 75,
 | 
				
			||||||
	max_count = 5,
 | 
						max_count = 5,
 | 
				
			||||||
	place_on = {"default:dirt_with_grass"},
 | 
					 | 
				
			||||||
	biomes = {"deciduous_forest"},
 | 
					 | 
				
			||||||
	fill_ratio = 0.0001,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.oak_biome = {
 | 
					moretrees.oak_biome = {
 | 
				
			||||||
@@ -85,7 +82,6 @@ moretrees.oak_biome = {
 | 
				
			|||||||
	temp_max = 0.2,
 | 
						temp_max = 0.2,
 | 
				
			||||||
	rarity = 50,
 | 
						rarity = 50,
 | 
				
			||||||
	max_count = 5,
 | 
						max_count = 5,
 | 
				
			||||||
	fill_ratio = 0.0003
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.sequoia_biome = {
 | 
					moretrees.sequoia_biome = {
 | 
				
			||||||
@@ -99,7 +95,6 @@ moretrees.sequoia_biome = {
 | 
				
			|||||||
	temp_max = -0.4,
 | 
						temp_max = -0.4,
 | 
				
			||||||
	rarity = 90,
 | 
						rarity = 90,
 | 
				
			||||||
	max_count = 5,
 | 
						max_count = 5,
 | 
				
			||||||
	fill_ratio = 0.0001,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.birch_biome = {
 | 
					moretrees.birch_biome = {
 | 
				
			||||||
@@ -113,7 +108,6 @@ moretrees.birch_biome = {
 | 
				
			|||||||
	temp_max = 0.3,
 | 
						temp_max = 0.3,
 | 
				
			||||||
	rarity = 50,
 | 
						rarity = 50,
 | 
				
			||||||
	max_count = 10,
 | 
						max_count = 10,
 | 
				
			||||||
	fill_ratio = 0.001,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.willow_biome = {
 | 
					moretrees.willow_biome = {
 | 
				
			||||||
@@ -131,7 +125,10 @@ moretrees.willow_biome = {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.rubber_tree_biome = {
 | 
					moretrees.rubber_tree_biome = {
 | 
				
			||||||
	surface = "default:dirt_with_grass",
 | 
						surface = {
 | 
				
			||||||
 | 
							"default:dirt_with_grass",
 | 
				
			||||||
 | 
							"default:sand",
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	avoid_nodes = moretrees.avoidnodes,
 | 
						avoid_nodes = moretrees.avoidnodes,
 | 
				
			||||||
	avoid_radius = 10,
 | 
						avoid_radius = 10,
 | 
				
			||||||
	seed_diff = 338,
 | 
						seed_diff = 338,
 | 
				
			||||||
@@ -151,8 +148,7 @@ moretrees.jungletree_biome = {
 | 
				
			|||||||
		"default:dirt_with_grass",
 | 
							"default: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"},
 | 
						avoid_nodes = {"moretrees:jungletree_trunk"},
 | 
				
			||||||
	max_count = 12,
 | 
						max_count = 12,
 | 
				
			||||||
@@ -165,7 +161,6 @@ moretrees.jungletree_biome = {
 | 
				
			|||||||
	near_nodes_vertical = 2,
 | 
						near_nodes_vertical = 2,
 | 
				
			||||||
	near_nodes_count = 1,
 | 
						near_nodes_count = 1,
 | 
				
			||||||
	plantlife_limit = -0.9,
 | 
						plantlife_limit = -0.9,
 | 
				
			||||||
	biomes = {"rainforest", "rainforest_swamp"},
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.spruce_biome = {
 | 
					moretrees.spruce_biome = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ ftrunk.after_destruct = function(pos, oldnode)
 | 
				
			|||||||
		-- 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, {name = "air"})
 | 
							minetest.swap_node(coconutpos, biome_lib.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
 | 
				
			||||||
@@ -82,8 +82,8 @@ minetest.register_abm({
 | 
				
			|||||||
	nodenames = { "moretrees:palm_fruit_trunk_gen" },
 | 
						nodenames = { "moretrees:palm_fruit_trunk_gen" },
 | 
				
			||||||
	interval = 6,
 | 
						interval = 6,
 | 
				
			||||||
	chance = 1,
 | 
						chance = 1,
 | 
				
			||||||
	min_y = -16,
 | 
						min_y = biome_lib.mapgen_elevation_limit.min,
 | 
				
			||||||
	max_y = 48,
 | 
						max_y = biome_lib.mapgen_elevation_limit.max,
 | 
				
			||||||
	label = "converts palm trunk to a regular fruit trunk, and spawns some coconuts",
 | 
						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"})
 | 
				
			||||||
@@ -130,7 +130,7 @@ local coconut_growfn = function(pos, elapsed)
 | 
				
			|||||||
					minetest.add_item(pos, itemname)
 | 
										minetest.add_item(pos, itemname)
 | 
				
			||||||
				end
 | 
									end
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			minetest.swap_node(pos, {name = "air"})
 | 
								minetest.swap_node(pos, biome_lib.air)
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		-- Grow coconuts to the next stage
 | 
							-- Grow coconuts to the next stage
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,7 +52,7 @@ ftrunk.after_destruct = function(pos, oldnode)
 | 
				
			|||||||
	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, {name = "air"})
 | 
							minetest.swap_node(datespos, biome_lib.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
 | 
				
			||||||
@@ -83,10 +83,7 @@ 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(
 | 
							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")
 | 
				
			||||||
			{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...
 | 
				
			||||||
@@ -231,8 +228,7 @@ 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
 | 
								and t0us - sect_search_stats.last_us < moretrees.dates_blossom_search_iload * (sect_search_stats.sum / sect_search_stats.count) then
 | 
				
			||||||
			* (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
 | 
				
			||||||
@@ -485,10 +481,7 @@ 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(
 | 
								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})
 | 
				
			||||||
				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
 | 
				
			||||||
@@ -554,7 +547,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, {name = "air"})
 | 
								minetest.swap_node(pos, biome_lib.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
 | 
				
			||||||
@@ -594,7 +587,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, {name = "air"})
 | 
								minetest.swap_node(pos, biome_lib.air)
 | 
				
			||||||
			return "stemdrop"
 | 
								return "stemdrop"
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
		action = "nostemdrop"
 | 
							action = "nostemdrop"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										172
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								init.lua
									
									
									
									
									
								
							@@ -55,7 +55,7 @@ end
 | 
				
			|||||||
local worldpath=minetest.get_worldpath()
 | 
					local worldpath=minetest.get_worldpath()
 | 
				
			||||||
local modpath=minetest.get_modpath("moretrees")
 | 
					local modpath=minetest.get_modpath("moretrees")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dofile(modpath.."/settings.lua")
 | 
					dofile(modpath.."/default_settings.txt")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if io.open(worldpath.."/moretrees_settings.txt","r") then
 | 
					if io.open(worldpath.."/moretrees_settings.txt","r") then
 | 
				
			||||||
	io.close()
 | 
						io.close()
 | 
				
			||||||
@@ -95,139 +95,111 @@ 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
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
local deco_ids = {}
 | 
					if moretrees.spawn_saplings then
 | 
				
			||||||
 | 
						moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen"
 | 
				
			||||||
function translate_biome_defs(def, treename, index)
 | 
						moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen"
 | 
				
			||||||
	if not index then index = 1 end
 | 
						moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen"
 | 
				
			||||||
	local deco_def = {
 | 
						moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen"
 | 
				
			||||||
		name = treename .. "_" .. index,
 | 
						moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen"
 | 
				
			||||||
		deco_type = "simple",
 | 
						moretrees.spawn_date_palm_object = "moretrees:date_palm_sapling_ongen"
 | 
				
			||||||
		place_on = def.place_on or def.surface,
 | 
						moretrees.spawn_cedar_object = "moretrees:cedar_sapling_ongen"
 | 
				
			||||||
		sidelen = 16,
 | 
						moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen"
 | 
				
			||||||
		fill_ratio = def.fill_ratio or 0.001,
 | 
						moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen"
 | 
				
			||||||
		--biomes eventually?
 | 
						moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen"
 | 
				
			||||||
		y_min = def.min_elevation,
 | 
						moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen"
 | 
				
			||||||
		y_max = def.max_elevation,
 | 
						moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen"
 | 
				
			||||||
		spawn_by = def.near_nodes,
 | 
						moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen"
 | 
				
			||||||
		num_spawn_by = def.near_nodes_count,
 | 
						moretrees.spawn_fir_snow_object = "snow:sapling_pine"
 | 
				
			||||||
		decoration = "moretrees:"..treename.."_sapling_ongen"
 | 
						moretrees.spawn_poplar_object = "moretrees:poplar_sapling_ongen"
 | 
				
			||||||
	}
 | 
						moretrees.spawn_poplar_small_object = "moretrees:poplar_small_sapling_ongen"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
	deco_ids[#deco_ids+1] = treename .. ("_" .. index or "_1")
 | 
						moretrees.spawn_beech_object = moretrees.beech_model
 | 
				
			||||||
 | 
						moretrees.spawn_apple_tree_object = moretrees.apple_tree_model
 | 
				
			||||||
	return deco_def
 | 
						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
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_beech then
 | 
					if moretrees.enable_beech then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech"))
 | 
						biome_lib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_apple_tree then
 | 
					if moretrees.enable_apple_tree then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree"))
 | 
						biome_lib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_oak then
 | 
					if moretrees.enable_oak then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak"))
 | 
						biome_lib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_sequoia then
 | 
					if moretrees.enable_sequoia then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia"))
 | 
						biome_lib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_palm then
 | 
					if moretrees.enable_palm then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.palm_biome, "palm"))
 | 
						biome_lib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_date_palm then
 | 
					if moretrees.enable_date_palm then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "palm", 1))
 | 
						biome_lib:register_generate_plant(moretrees.date_palm_biome, moretrees.spawn_date_palm_object)
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "palm", 2))
 | 
						biome_lib:register_generate_plant(moretrees.date_palm_biome_2, moretrees.spawn_date_palm_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_cedar then
 | 
					if moretrees.enable_cedar then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar"))
 | 
						biome_lib:register_generate_plant(moretrees.cedar_biome, moretrees.spawn_cedar_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_rubber_tree then
 | 
					if moretrees.enable_rubber_tree then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "ruber"))
 | 
						biome_lib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_willow then
 | 
					if moretrees.enable_willow then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow"))
 | 
						biome_lib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_birch then
 | 
					if moretrees.enable_birch then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch"))
 | 
						biome_lib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_spruce then
 | 
					if moretrees.enable_spruce then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.spruce_biome, "spruce"))
 | 
						biome_lib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_jungle_tree then
 | 
					if moretrees.enable_jungle_tree then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree"))
 | 
						biome_lib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_fir then
 | 
					if moretrees.enable_fir then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.fir_biome, "fir", 1))
 | 
						biome_lib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object)
 | 
				
			||||||
	if minetest.get_modpath("snow") then
 | 
						if minetest.get_modpath("snow") then
 | 
				
			||||||
		minetest.register_decoration(translate_biome_defs(moretrees.fir_biome_snow, "fir", 2))
 | 
							biome_lib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moretrees.enable_poplar then
 | 
					if moretrees.enable_poplar then
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "popular", 1))
 | 
						biome_lib:register_generate_plant(moretrees.poplar_biome, moretrees.spawn_poplar_object)
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "popular", 2))
 | 
						biome_lib:register_generate_plant(moretrees.poplar_biome_2, moretrees.spawn_poplar_object)
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "popular", 3))
 | 
						biome_lib:register_generate_plant(moretrees.poplar_biome_3, moretrees.spawn_poplar_object)
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome, "popular", 4))
 | 
						biome_lib:register_generate_plant(moretrees.poplar_small_biome, moretrees.spawn_poplar_small_object)
 | 
				
			||||||
	minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome_2, "popular", 5))
 | 
						biome_lib:register_generate_plant(moretrees.poplar_small_biome_2, moretrees.spawn_poplar_small_object)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for k, v in pairs(deco_ids) do
 | 
					 | 
				
			||||||
	deco_ids[k] = minetest.get_decoration_id(v)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
minetest.set_gen_notify("decoration", deco_ids)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
minetest.register_on_generated(function(minp, maxp, blockseed)
 | 
					 | 
				
			||||||
    local g = minetest.get_mapgen_object("gennotify")
 | 
					 | 
				
			||||||
	--minetest.chat_send_all(dump(g))
 | 
					 | 
				
			||||||
    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
 | 
					 | 
				
			||||||
		--minetest.chat_send_all("yay")
 | 
					 | 
				
			||||||
        local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z})
 | 
					 | 
				
			||||||
        timer:start(math.random(2,10))
 | 
					 | 
				
			||||||
		--minetest.set_node(pos, {name="default:stone"})
 | 
					 | 
				
			||||||
    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, {name = "air"})
 | 
						minetest.swap_node(pos, biome_lib.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
 | 
				
			||||||
@@ -238,7 +210,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, {name = "air"})
 | 
						minetest.swap_node(pos, biome_lib.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
 | 
				
			||||||
@@ -253,7 +225,6 @@ 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -293,13 +264,10 @@ 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, {name = "air"})
 | 
						minetest.swap_node(pos, biome_lib.air)
 | 
				
			||||||
	local leaves = minetest.find_nodes_in_area(
 | 
						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")
 | 
				
			||||||
		{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"
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	for leaf in ipairs(leaves) do
 | 
						for leaf in ipairs(leaves) do
 | 
				
			||||||
			minetest.swap_node(leaves[leaf], {name = "air"})
 | 
								minetest.swap_node(leaves[leaf], biome_lib.air)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	minetest.spawn_tree(pos, moretrees.jungletree_model)
 | 
						minetest.spawn_tree(pos, moretrees.jungletree_model)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@@ -323,14 +291,10 @@ 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, {name = "air"})
 | 
						minetest.swap_node(pos, biome_lib.air)
 | 
				
			||||||
	local leaves = minetest.find_nodes_in_area(
 | 
						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")
 | 
				
			||||||
		{x = pos.x, y = pos.y, z = pos.z},
 | 
					 | 
				
			||||||
		{x = pos.x, y = pos.y+5, z = pos.z},
 | 
					 | 
				
			||||||
		"default:leaves"
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	for leaf in ipairs(leaves) do
 | 
						for leaf in ipairs(leaves) do
 | 
				
			||||||
		minetest.swap_node(leaves[leaf], {name = "air"})
 | 
							minetest.swap_node(leaves[leaf], biome_lib.air)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	minetest.spawn_tree(pos,moretrees.fir_model)
 | 
						minetest.spawn_tree(pos,moretrees.fir_model)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@@ -354,14 +318,10 @@ 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, {name = "air"})
 | 
						minetest.swap_node(pos, biome_lib.air)
 | 
				
			||||||
	local leaves = minetest.find_nodes_in_area(
 | 
						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")
 | 
				
			||||||
		{x = pos.x, y = pos.y, z = pos.z},
 | 
					 | 
				
			||||||
		{x = pos.x, y = pos.y+5, z = pos.z},
 | 
					 | 
				
			||||||
		"default:leaves"
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	for leaf in ipairs(leaves) do
 | 
						for leaf in ipairs(leaves) do
 | 
				
			||||||
			minetest.swap_node(leaves[leaf], {name = "air"})
 | 
								minetest.swap_node(leaves[leaf], biome_lib.air)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	minetest.spawn_tree(pos,moretrees.fir_model)
 | 
						minetest.spawn_tree(pos,moretrees.fir_model)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								mod.conf
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
name = moretrees
 | 
					name = moretrees
 | 
				
			||||||
depends = default, vessels
 | 
					depends = default, biome_lib, vessels
 | 
				
			||||||
optional_depends = doors, stairs, moreblocks, farming, ethereal
 | 
					optional_depends = doors, stairs, moreblocks, farming
 | 
				
			||||||
min_minetest_version = 5.2.0
 | 
					min_minetest_version = 5.2.0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,19 +5,19 @@ moretrees.avoidnodes = {}
 | 
				
			|||||||
moretrees.treelist = {
 | 
					moretrees.treelist = {
 | 
				
			||||||
	{"beech",        S("Beech Tree")},
 | 
						{"beech",        S("Beech Tree")},
 | 
				
			||||||
	{"apple_tree",   S("Apple Tree")},
 | 
						{"apple_tree",   S("Apple Tree")},
 | 
				
			||||||
	{"oak",          S("Oak Tree"),       "acorn",                S("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",      S("Giant Sequoia")},
 | 
						{"sequoia",      S("Giant Sequoia")},
 | 
				
			||||||
	{"birch",        S("Birch Tree")},
 | 
						{"birch",        S("Birch Tree")},
 | 
				
			||||||
	{"palm",         S("Palm Tree"),      "palm_fruit_trunk_gen", S("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",    S("Date Palm Tree"), "date_palm_fruit_trunk",S("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",       S("Spruce Tree"),    "spruce_cone",          S("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",        S("Cedar Tree"),     "cedar_cone",           S("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",       S("Poplar Tree")},
 | 
						{"poplar",       S("Poplar Tree")},
 | 
				
			||||||
	{"poplar_small", S("Poplar Tree")},
 | 
						{"poplar_small", S("Poplar Tree")},
 | 
				
			||||||
	{"willow",       S("Willow Tree")},
 | 
						{"willow",       S("Willow Tree")},
 | 
				
			||||||
	{"rubber_tree",  S("Rubber Tree")},
 | 
						{"rubber_tree",  S("Rubber Tree")},
 | 
				
			||||||
	{"fir",          S("Douglas Fir"),    "fir_cone",             S("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",   S("Jungle Tree"),     nil,                   nil, nil, nil, "default_junglesapling.png"  },
 | 
						{"jungletree",   S("Jungle Tree"),     nil,                    nil, nil, nil, "default_junglesapling.png"  },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
moretrees.treedesc = {
 | 
					moretrees.treedesc = {
 | 
				
			||||||
@@ -215,6 +215,7 @@ local dirs2 = { 12, 9, 18, 7, 12 }
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
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"
 | 
				
			||||||
@@ -292,11 +293,6 @@ for i in ipairs(moretrees.treelist) do
 | 
				
			|||||||
			sounds = default.node_sound_wood_defaults(),
 | 
								sounds = default.node_sound_wood_defaults(),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		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", {
 | 
							minetest.register_node("moretrees:"..treename.."_sapling", {
 | 
				
			||||||
			description = moretrees.treedesc[treename].sapling,
 | 
								description = moretrees.treedesc[treename].sapling,
 | 
				
			||||||
			drawtype = "plantlike",
 | 
								drawtype = "plantlike",
 | 
				
			||||||
@@ -310,7 +306,7 @@ 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 = regular_groups,
 | 
								groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
 | 
				
			||||||
			sounds = default.node_sound_defaults(),
 | 
								sounds = default.node_sound_defaults(),
 | 
				
			||||||
			on_place = function(itemstack, placer, pointed_thing)
 | 
								on_place = function(itemstack, placer, pointed_thing)
 | 
				
			||||||
				itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
 | 
									itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
 | 
				
			||||||
@@ -324,32 +320,12 @@ for i in ipairs(moretrees.treelist) do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				return itemstack
 | 
									return itemstack
 | 
				
			||||||
			end,
 | 
								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,
 | 
					 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		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", {
 | 
				
			||||||
@@ -468,11 +444,6 @@ for i in ipairs(moretrees.treelist) do
 | 
				
			|||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local ongen_groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=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", {
 | 
						minetest.register_node("moretrees:"..treename.."_sapling_ongen", {
 | 
				
			||||||
		description = S("@1 (fast growth)", moretrees.treedesc[treename].sapling),
 | 
							description = S("@1 (fast growth)", moretrees.treedesc[treename].sapling),
 | 
				
			||||||
		drawtype = "plantlike",
 | 
							drawtype = "plantlike",
 | 
				
			||||||
@@ -486,38 +457,21 @@ 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 = ongen_groups,
 | 
							groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
 | 
				
			||||||
		sounds = default.node_sound_defaults(),
 | 
							sounds = default.node_sound_defaults(),
 | 
				
			||||||
		drop = "moretrees:"..treename.."_sapling",
 | 
							drop = "moretrees:"..treename.."_sapling",
 | 
				
			||||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
							on_place = function(itemstack, placer, pointed_thing)
 | 
				
			||||||
			itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
 | 
									itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
 | 
				
			||||||
				"moretrees:" ..treename.. "_sapling_ongen",
 | 
										"moretrees:" ..treename.. "_sapling_ongen",
 | 
				
			||||||
				-- minp, maxp to be checked, relative to sapling pos
 | 
										-- minp, maxp to be checked, relative to sapling pos
 | 
				
			||||||
				-- minp_relative.y = 1 because sapling pos has been checked
 | 
										-- minp_relative.y = 1 because sapling pos has been checked
 | 
				
			||||||
				{x = -3, y = 1, z = -3},
 | 
										{x = -3, y = 1, z = -3},
 | 
				
			||||||
				{x = 3, y = 6, z = 3},
 | 
										{x = 3, y = 6, z = 3},
 | 
				
			||||||
				-- maximum interval of interior volume check
 | 
										-- maximum interval of interior volume check
 | 
				
			||||||
				4)
 | 
										4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return itemstack
 | 
									return itemstack
 | 
				
			||||||
		end,
 | 
								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
 | 
				
			||||||
@@ -622,8 +576,6 @@ 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, {
 | 
				
			||||||
@@ -651,7 +603,8 @@ end
 | 
				
			|||||||
-- 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"])
 | 
					local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"])
 | 
				
			||||||
jungle_tree.drop = "default:jungletree"
 | 
					jungle_tree.drop = jungle_tree.drop or { items = {} }
 | 
				
			||||||
 | 
					table.insert(jungle_tree.drop.items, { items = {"default:jungletree"}})
 | 
				
			||||||
minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
 | 
					minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
default.register_leafdecay({
 | 
					default.register_leafdecay({
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								saplings.lua
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								saplings.lua
									
									
									
									
									
								
							@@ -6,6 +6,9 @@
 | 
				
			|||||||
local dirt_surfaces = {
 | 
					local dirt_surfaces = {
 | 
				
			||||||
	set = true,
 | 
						set = true,
 | 
				
			||||||
	["default:dirt"] = true,
 | 
						["default:dirt"] = true,
 | 
				
			||||||
 | 
						["default:dirt_with_snow"] = true,
 | 
				
			||||||
 | 
						["default:dry_dirt"] = true,
 | 
				
			||||||
 | 
						["default:dry_dirt_with_dry_grass"] = true,
 | 
				
			||||||
	["default:dirt_with_grass"] = true,
 | 
						["default:dirt_with_grass"] = true,
 | 
				
			||||||
	["default:dirt_with_dry_grass"] = true,
 | 
						["default:dirt_with_dry_grass"] = true,
 | 
				
			||||||
	["default:dirt_with_coniferous_litter"] = true,
 | 
						["default:dirt_with_coniferous_litter"] = true,
 | 
				
			||||||
@@ -13,7 +16,8 @@ local dirt_surfaces = {
 | 
				
			|||||||
	["woodsoils:dirt_with_leaves_1"] = true,
 | 
						["woodsoils:dirt_with_leaves_1"] = true,
 | 
				
			||||||
	["woodsoils:dirt_with_leaves_2"] = true,
 | 
						["woodsoils:dirt_with_leaves_2"] = true,
 | 
				
			||||||
	["woodsoils:grass_with_leaves_1"] = true,
 | 
						["woodsoils:grass_with_leaves_1"] = true,
 | 
				
			||||||
	["woodsoils:grass_with_leaves_2"] = true
 | 
						["woodsoils:grass_with_leaves_2"] = true,
 | 
				
			||||||
 | 
						["meditteranean_biome:dirt_with_mediterranean_grass"] = true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local conifer_surfaces =  {
 | 
					local conifer_surfaces =  {
 | 
				
			||||||
@@ -27,7 +31,8 @@ local conifer_surfaces =  {
 | 
				
			|||||||
	["woodsoils:dirt_with_leaves_2"] = true,
 | 
						["woodsoils:dirt_with_leaves_2"] = true,
 | 
				
			||||||
	["woodsoils:grass_with_leaves_1"] = true,
 | 
						["woodsoils:grass_with_leaves_1"] = true,
 | 
				
			||||||
	["woodsoils:grass_with_leaves_2"] = true,
 | 
						["woodsoils:grass_with_leaves_2"] = true,
 | 
				
			||||||
	["default:dirt_with_snow"] = true
 | 
						["default:dirt_with_snow"] = true,
 | 
				
			||||||
 | 
						["meditteranean_biome:dirt_with_mediterranean_grass"] = true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local sand_surfaces = {
 | 
					local sand_surfaces = {
 | 
				
			||||||
@@ -35,32 +40,12 @@ local sand_surfaces = {
 | 
				
			|||||||
	["default:sand"] = true,
 | 
						["default:sand"] = true,
 | 
				
			||||||
	["default:desert_sand"] = true,
 | 
						["default:desert_sand"] = true,
 | 
				
			||||||
	["cottages:loam"] = true,
 | 
						["cottages:loam"] = true,
 | 
				
			||||||
 | 
						["darkage:mud"] = true,
 | 
				
			||||||
	-- note, no silver sand here.
 | 
						-- note, no silver sand here.
 | 
				
			||||||
	-- too cold for a palm, too... well... sandy for anything else.
 | 
						-- too cold for a palm, too... well... sandy for anything else.
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function moretrees.can_grow(pos, treename)
 | 
					for i in ipairs(moretrees.treelist) do
 | 
				
			||||||
	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"
 | 
				
			||||||
@@ -102,4 +87,4 @@ end
 | 
				
			|||||||
		grow_nodes = surfaces,
 | 
							grow_nodes = surfaces,
 | 
				
			||||||
		grow_function = grow_function,
 | 
							grow_function = grow_function,
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
end ]]
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,8 +145,7 @@ 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
 | 
					s/.*\(\(moretrees\|default\)[^ ]*\) at (\([-0-9]\+\),\([-0-9]\+\),\([-0-9]\+\)).*/\t\tminetest.place_node({x=\3, y=\4, z=\5}, {name="\1"})/
 | 
				
			||||||
	(\([-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)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										79
									
								
								settings.lua
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								settings.lua
									
									
									
									
									
								
							@@ -1,79 +0,0 @@
 | 
				
			|||||||
local stg = minetest.settings
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--enable/disable different trees
 | 
					 | 
				
			||||||
moretrees.enable_apple_tree		= stg:get_bool("moretrees.enable_apple_tree", true)
 | 
					 | 
				
			||||||
moretrees.enable_oak			= stg:get_bool("moretrees.enable_oak", true)
 | 
					 | 
				
			||||||
moretrees.enable_sequoia		= stg:get_bool("moretrees.enable_sequoia", true)
 | 
					 | 
				
			||||||
moretrees.enable_palm			= stg:get_bool("moretrees.enable_palm", true)
 | 
					 | 
				
			||||||
moretrees.enable_date_palm		= stg:get_bool("moretrees.enable_date_palm", true)
 | 
					 | 
				
			||||||
moretrees.enable_cedar			= stg:get_bool("moretrees.enable_cedar", true)
 | 
					 | 
				
			||||||
moretrees.enable_rubber_tree	= stg:get_bool("moretrees.enable_rubber_tree", true)
 | 
					 | 
				
			||||||
moretrees.enable_willow			= stg:get_bool("moretrees.enable_willow", true)
 | 
					 | 
				
			||||||
moretrees.enable_birch			= stg:get_bool("moretrees.enable_birch", true)
 | 
					 | 
				
			||||||
moretrees.enable_spruce			= stg:get_bool("moretrees.enable_spruce", true)
 | 
					 | 
				
			||||||
moretrees.enable_jungle_tree	= stg:get_bool("moretrees.enable_jungle_tree", true)
 | 
					 | 
				
			||||||
moretrees.enable_fir			= stg:get_bool("moretrees.enable_fir", true)
 | 
					 | 
				
			||||||
moretrees.enable_poplar			= stg:get_bool("moretrees.enable_poplar", true)
 | 
					 | 
				
			||||||
moretrees.enable_beech			= stg:get_bool("moretrees.enable_beech", false)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--spawns tree on mapgen as saplings, legacy setting
 | 
					 | 
				
			||||||
moretrees.spawn_saplings		= stg:get_bool("moretrees.spawn_saplings", true)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--turn on/off stair varients of nodes via moreblocks or the stair api
 | 
					 | 
				
			||||||
moretrees.enable_stairs			= stg:get_bool("moretrees.enable_stairs", true)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- If this variable is set to true, register fences for moretrees wood
 | 
					 | 
				
			||||||
moretrees.enable_fences         = stg:get_bool("moretrees.enable_fences", 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)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Set this to true to enable leaf decay of all trees except the default ones.
 | 
					 | 
				
			||||||
moretrees.enable_leafdecay		= stg:get_bool("moretrees.enable_leafdecay", true)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- various related settings to configure leaf decay.
 | 
					 | 
				
			||||||
moretrees.leafdecay_delay		= tonumber(stg:get("moretrees.leafdecay_delay")) or 2
 | 
					 | 
				
			||||||
moretrees.leafdecay_chance		= tonumber(stg:get("moretrees.leafdecay_chance")) or 5
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 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	= stg:get_bool("moretrees.firs_remove_default_trees", false)
 | 
					 | 
				
			||||||
moretrees.firs_remove_interval		= tonumber(stg:get("moretrees.firs_remove_interval")) or 2
 | 
					 | 
				
			||||||
moretrees.firs_remove_chance		= tonumber(stg:get("moretrees.firs_remove_chance")) or 150
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- 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)
 | 
					 | 
				
			||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
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="/",
 | 
				
			||||||
@@ -76,7 +75,6 @@ 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="/",
 | 
				
			||||||
@@ -168,7 +166,6 @@ 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]",
 | 
				
			||||||
@@ -186,7 +183,6 @@ 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]",
 | 
				
			||||||
@@ -221,7 +217,6 @@ 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",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user