mirror of
				https://github.com/mt-mods/plantlife_modpack.git
				synced 2025-10-31 05:45:24 +01:00 
			
		
		
		
	Compare commits
	
		
			43 Commits
		
	
	
		
			replace_bi
			...
			ferns-clea
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3b524b01d7 | ||
|  | 06c8d1c5ea | ||
|  | b815ffc578 | ||
|  | 85dd10e88a | ||
|  | ccee13df66 | ||
|  | d7d56ec1b0 | ||
|  | 97f7b11f86 | ||
|  | e34dc49f07 | ||
|  | 329f6eb5d5 | ||
|  | aa8668f69b | ||
|  | 5b5652c552 | ||
|  | 6b7b15ba4f | ||
|  | d3daa28b06 | ||
|  | 6b2a7785da | ||
|  | 9a6491a366 | ||
|  | 4eb20c03c2 | ||
|  | 77d0a1040c | ||
|  | 13a249369d | ||
|  | 69ce1ff826 | ||
|  | 282e3c3317 | ||
|  | 878c5dd449 | ||
|  | 9ad737f951 | ||
|  | 4fb3cdfffb | ||
|  | 174096ac87 | ||
|  | 7357524224 | ||
|  | c5f6d6831e | ||
|  | a3e926421a | ||
|  | 62b27570f4 | ||
|  | 76414325cf | ||
|  | 549d39d4d2 | ||
|  | b72f1dd5eb | ||
|  | d1369c25cf | ||
|  | 1d0543b435 | ||
|  | 38d972d58e | ||
|  | cd0735203a | ||
|  | 27156fdd71 | ||
|  | 655cff9f76 | ||
|  | abdf76566a | ||
|  | b069341d33 | ||
|  | 64471c9bfc | ||
|  | fc3363d439 | ||
|  | 786a28a5e9 | ||
|  | 25c8c8aeb0 | 
| @@ -1,42 +0,0 @@ | ||||
| -- In case you don't wanna have errors: | ||||
|  | ||||
| -- Only change what's behind a "=" (or "--").  | ||||
| -- Don't use caps (behind a "="). | ||||
|  | ||||
| -- If there's a "false" (behind a "=") you can change it to "true" (and the other way around). | ||||
| -- Spelling is important. | ||||
| -- If "true" or "false" is necessary as setting, everything(!) which is not spelled "true" will be read as if it were "false" (even "1", "True"...) | ||||
|  | ||||
| -- If you wanna comment something (for example to remember the default value), you can do this by putting "--" in front of the comment. | ||||
| -- You can put "--" at the end of a line with "=" in it, or at the beginning of an empty/new line (minetest will ignore what's behind it then). | ||||
| -- But don't put "--" in front of a line with "=" in it (or else minetest will ignore the setting and you might get an error). | ||||
|  | ||||
| -- If something is still unclear, don't hesitate to post your question @ https://forum.minetest.net/viewtopic.php?id=6921 | ||||
|  | ||||
|  | ||||
| -- Which plants should generate/spawn? | ||||
| Lady_fern		= true | ||||
| Horsetails 		= true | ||||
| Tree_Fern 		= true | ||||
| Giant_Tree_Fern = true | ||||
|  | ||||
| -- Where should they generate/spawn? (if they generate/spawn) | ||||
| -- | ||||
| --  Lady-Fern | ||||
| Ferns_near_Tree = true				 | ||||
| Ferns_near_Rock = true				 | ||||
| Ferns_near_Ores = true				-- if there's a bunch of ferns there's ores nearby, this one causes a huge fps drop | ||||
| Ferns_in_Groups = false				-- this one is meant as a replacement of Ferns_near_Ores: ferns tend to generate in groups, less fps drop, no hint for nearby ores | ||||
| -- | ||||
| --	Horsetails | ||||
| Horsetails_Spawning = false			-- horsetails will grow in already explored areas, over time, near water or gravel | ||||
| Horsetails_on_Grass = true			-- on dirt with grass and swamp (sumpf mod) | ||||
| Horsetails_on_Stony = true			-- on gravel, mossy cobble and silex (stoneage mod) | ||||
| -- | ||||
| -- Tree_Fern | ||||
| Tree_Ferns_in_Jungle = true			 | ||||
| Tree_Ferns_for_Oases = true			-- for oases and tropical beaches | ||||
| -- | ||||
| -- Giant_Tree_Fern | ||||
| Giant_Tree_Ferns_in_Jungle = true	 | ||||
| Giant_Tree_Ferns_for_Oases = true	-- for oases and tropical beaches | ||||
							
								
								
									
										371
									
								
								ferns/fern.lua
									
									
									
									
									
								
							
							
						
						
									
										371
									
								
								ferns/fern.lua
									
									
									
									
									
								
							| @@ -13,237 +13,184 @@ | ||||
| -- http://www.mygarden.net.au/gardening/athyrium-yokoscense/3900/1 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| abstract_ferns.grow_fern = function(pos) | ||||
| 	local fern_size = math.random(1,4) | ||||
| 	local right_here = {x=pos.x, y=pos.y+1, z=pos.z} | ||||
| 	 | ||||
| 	if minetest.get_node(right_here).name == "air"  -- instead of check_air = true, | ||||
| 	or minetest.get_node(right_here).name == "default:junglegrass" then | ||||
| 	 | ||||
| 		if fern_size == 1 then | ||||
| 			minetest.set_node(right_here, {name="ferns:fern_01"}) | ||||
| 		elseif fern_size <= 3 then | ||||
| 			minetest.set_node(right_here, {name="ferns:fern_02"}) | ||||
| 		else -- fern_size == 4 then | ||||
| 			minetest.set_node(right_here, {name="ferns:fern_03"}) | ||||
| assert(abstract_ferns.config.enable_lady_fern == true) | ||||
|  | ||||
| -- Maintain backward compatibilty | ||||
| minetest.register_alias("archaeplantae:fern",		"ferns:fern_03") | ||||
| minetest.register_alias("archaeplantae:fern_mid",	"ferns:fern_02") | ||||
| minetest.register_alias("archaeplantae:fern_small",	"ferns:fern_01") | ||||
| minetest.register_alias("ferns:fern_04",      		"ferns:fern_02") -- for placing | ||||
|  | ||||
| local nodenames = {} | ||||
|  | ||||
| local function create_nodes() | ||||
| 	local images 	= { "ferns_fern.png", "ferns_fern_mid.png", "ferns_fern_big.png" } | ||||
| 	local vscales	= { 1, 2, 2.2 } | ||||
| 	local descs		= { "Lady-fern (Athyrium)", nil, nil } | ||||
|  | ||||
| 	for i = 1, 3 do | ||||
| 		local node_on_place = nil | ||||
| 		if i == 1 then | ||||
| 			node_on_place = function(itemstack, placer, pointed_thing) | ||||
| 				-- place a random fern | ||||
| 				local stack = ItemStack("ferns:fern_0"..math.random(1,4)) | ||||
| 				local ret = minetest.item_place(stack, placer, pointed_thing) | ||||
| 				return ItemStack("ferns:fern_01 "..itemstack:get_count()-(1-ret:get_count()))	-- TODO FIXME? | ||||
| 			end | ||||
| 		end | ||||
| 		nodenames[i] = "ferns:fern_"..string.format("%02d", i) | ||||
| 		minetest.register_node(nodenames[i], { | ||||
| 			description = descs[i] or ("Lady-fern (Athyrium) " .. string.format("%02d", i)), | ||||
| 			inventory_image = "ferns_fern.png", | ||||
| 			drawtype = "plantlike", | ||||
| 			visual_scale = vscales[i], | ||||
| 			paramtype = "light", | ||||
| 			tiles = { images[i] }, | ||||
| 			walkable = false, | ||||
| 			buildable_to = true, | ||||
| 			groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, | ||||
| 			sounds = default.node_sound_leaves_defaults(), | ||||
| 			selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, | ||||
| 			}, | ||||
| 			drop = "ferns:fern_01", | ||||
| 			on_place = node_on_place | ||||
| 		}) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- FERN (large) | ||||
| -- Init | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_alias("archaeplantae:fern",      "ferns:fern_03") -- support old versions | ||||
|  | ||||
| minetest.register_node("ferns:fern_03", { | ||||
| 	drawtype = "plantlike", | ||||
| 	visual_scale = 2, | ||||
| 	paramtype = "light", | ||||
| 	--tiles = {"[combine:32x32:0,0=top_left.png:0,16=bottom_left.png:16,0=top_right.png:16,16=bottom_right.png"}, | ||||
| 	tiles = {"ferns_fern_big.png"}, | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, | ||||
| 	}, | ||||
| 	drop = "ferns:fern_01", | ||||
| }) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- FERN (medium) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_alias("archaeplantae:fern_mid",      "ferns:fern_02") -- support old versions | ||||
| create_nodes() | ||||
|  | ||||
| minetest.register_node("ferns:fern_02", { | ||||
| 	drawtype = "plantlike", | ||||
| 	visual_scale = 2, | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_fern_mid.png"}, | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, | ||||
| 	}, | ||||
| 	drop = "ferns:fern_01", | ||||
| }) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- FERN (small) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_alias("archaeplantae:fern_small",      "ferns:fern_01") -- support old versions | ||||
| minetest.register_alias("ferns:fern_04",      "ferns:fern_02") -- for placing | ||||
|  | ||||
| minetest.register_node("ferns:fern_01", { | ||||
| 	description = "Lady-fern (Athyrium)", -- divinationis | ||||
| 	drawtype = "plantlike", | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_fern.png"}, | ||||
| 	inventory_image = "ferns_fern.png", | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, | ||||
| 	}, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		-- place a random fern | ||||
| 		local stack = ItemStack("ferns:fern_0"..math.random(1,4)) | ||||
| 		local ret = minetest.item_place(stack, placer, pointed_thing) | ||||
| 		return ItemStack("ferns:fern_01 "..itemstack:get_count()-(1-ret:get_count())) | ||||
| 	end, | ||||
| }) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Spawning | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| --[[plantslib:spawn_on_surfaces({ | ||||
| 	spawn_delay = 1200, | ||||
| 	spawn_plants = {"ferns:fern"}, | ||||
| 	spawn_chance = 800, | ||||
| 	spawn_surfaces = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble",  | ||||
| 		"dryplants:grass_short",  | ||||
| 		"default:jungletree", | ||||
| 		"stoneage:grass_with_silex" | ||||
|  | ||||
| if abstract_ferns.config.lady_ferns_near_tree == true then | ||||
| 	plantslib:register_generate_plant({ -- near trees (woodlands) | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:mossycobble", | ||||
| 			"default:desert_sand", | ||||
| 			"default:sand", | ||||
| 			"default:jungletree", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		max_count = 30, | ||||
| 		rarity = 62,--63, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"group:tree"}, | ||||
| 		near_nodes_size = 3,--4, | ||||
| 		near_nodes_vertical = 2,--3, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
| 		temp_min = 0.75, -- -12 <20>C | ||||
| 		random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
| 	seed_diff = 329, | ||||
| }) | ||||
| plantslib:spawn_on_surfaces({ | ||||
| 	spawn_delay = 1200, | ||||
| 	spawn_plants = {"ferns:fern_mid"}, | ||||
| 	spawn_chance = 400, | ||||
| 	spawn_surfaces = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble",  | ||||
| 		"dryplants:grass_short",  | ||||
| 		"default:jungletree", | ||||
| 		"stoneage:grass_with_silex" | ||||
| 	}, | ||||
| 	seed_diff = 329, | ||||
| })]] | ||||
| if Ferns_near_Tree == true then | ||||
| plantslib:register_generate_plant({ -- near trees (woodlands) | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble",  | ||||
| 		"default:desert_sand", | ||||
| 		"default:sand", | ||||
| 		"default:jungletree", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
|     max_count = 30, | ||||
|     rarity = 62,--63, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	near_nodes = {"group:tree"}, | ||||
| 	near_nodes_size = 3,--4, | ||||
| 	near_nodes_vertical = 2,--3, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
|     temp_min = 0.75, -- -12 <20>C | ||||
|   }, | ||||
|   abstract_ferns.grow_fern | ||||
| ) | ||||
| 	nodenames | ||||
| 	) | ||||
| end | ||||
|  | ||||
| if Ferns_near_Rock == true then | ||||
| plantslib:register_generate_plant({ -- near stone (mountains) | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble",  | ||||
| 		"group:falling_node",  | ||||
| 		--"default:jungletree", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:sumpf" | ||||
| if abstract_ferns.config.lady_ferns_near_rock == true then | ||||
| 	plantslib:register_generate_plant({ -- near stone (mountains) | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:mossycobble", | ||||
| 			"group:falling_node", | ||||
| 			--"default:jungletree", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		max_count = 35, | ||||
| 		rarity = 40, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"group:stone"}, | ||||
| 		near_nodes_size = 1, | ||||
| 		near_nodes_count = 16, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
| 		temp_min = 0.75, -- -12 <20>C | ||||
| 		random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
|     max_count = 35, | ||||
|     rarity = 40, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	near_nodes = {"group:stone"}, | ||||
| 	near_nodes_size = 1, | ||||
| 	near_nodes_count = 16, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
|     temp_min = 0.75, -- -12 <20>C | ||||
|   }, | ||||
|   abstract_ferns.grow_fern | ||||
| ) | ||||
| 	nodenames | ||||
| 	) | ||||
| end | ||||
|  | ||||
| if Ferns_near_Ores == true then -- this one causes a huge fps drop | ||||
| plantslib:register_generate_plant({ -- near ores (potential mining sites) | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble", | ||||
| 		"default:stone_with_coal", | ||||
| 		"default:stone_with_iron", | ||||
| 		"moreores:mineral_tin", | ||||
| 		"moreores:mineral_silver", | ||||
| 		"sumpf:sumpf" | ||||
| if abstract_ferns.config.lady_ferns_near_ores == true then -- this one causes a huge fps drop | ||||
| 	plantslib:register_generate_plant({ -- near ores (potential mining sites) | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:mossycobble", | ||||
| 			"default:stone_with_coal", | ||||
| 			"default:stone_with_iron", | ||||
| 			"moreores:mineral_tin", | ||||
| 			"moreores:mineral_silver", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		max_count = 1200,--1600, -- maybe too much? :D | ||||
| 		rarity = 25,--15, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = { | ||||
| 			"default:stone_with_iron", | ||||
| 			--"default:stone_with_copper", | ||||
| 			--"default:stone_with_mese", | ||||
| 			--"default:stone_with_gold", | ||||
| 			--"default:stone_with_diamond", | ||||
| 			"moreores:mineral_tin", | ||||
| 			"moreores:mineral_silver" | ||||
| 			--"moreores:mineral_mithril" | ||||
| 		}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 4,--5,--6, | ||||
| 		near_nodes_count = 2,--3, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
| 		temp_min = 0.75, -- -12 <20>C | ||||
| 		random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
|     max_count = 1200,--1600, -- maybe too much? :D | ||||
|     rarity = 25,--15, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	near_nodes = { | ||||
| 		"default:stone_with_iron", | ||||
| 		--"default:stone_with_copper", | ||||
| 		--"default:stone_with_mese", | ||||
| 		--"default:stone_with_gold", | ||||
| 		--"default:stone_with_diamond", | ||||
| 		"moreores:mineral_tin", | ||||
| 		"moreores:mineral_silver" | ||||
| 		--"moreores:mineral_mithril" | ||||
| 	}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 4,--5,--6, | ||||
| 	near_nodes_count = 2,--3, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
|     temp_min = 0.75, -- -12 <20>C | ||||
|   }, | ||||
|   abstract_ferns.grow_fern | ||||
| ) | ||||
| 	nodenames | ||||
| 	) | ||||
| end | ||||
|  | ||||
| if Ferns_in_Groups == true then -- this one is meant as a replacement of Ferns_near_Ores | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:mossycobble", | ||||
| 		"default:stone_with_coal", | ||||
| 		"default:stone_with_iron", | ||||
| 		"moreores:mineral_tin", | ||||
| 		"moreores:mineral_silver", | ||||
| 		"sumpf:sumpf" | ||||
| if abstract_ferns.config.lady_ferns_in_groups == true then -- this one is meant as a replacement of Ferns_near_Ores | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:mossycobble", | ||||
| 			"default:stone_with_coal", | ||||
| 			"default:stone_with_iron", | ||||
| 			"moreores:mineral_tin", | ||||
| 			"moreores:mineral_silver", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		max_count = 70, | ||||
| 		rarity = 25,--15, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = { | ||||
| 			"default:stone" | ||||
| 		}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 2,--6, | ||||
| 		near_nodes_count = 3, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
| 		temp_min = 0.75, -- -12 <20>C | ||||
| 		random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
|     max_count = 70, | ||||
|     rarity = 25,--15, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	near_nodes = { | ||||
| 		"default:stone" | ||||
| 	}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 2,--6, | ||||
| 	near_nodes_count = 3, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C (too hot?) | ||||
|     temp_min = 0.75, -- -12 <20>C | ||||
|   }, | ||||
|   abstract_ferns.grow_fern | ||||
| ) | ||||
| 	nodenames | ||||
| 	) | ||||
| end | ||||
|   | ||||
| @@ -8,117 +8,86 @@ | ||||
| -- Supports:				vines			 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| assert(abstract_ferns.config.enable_giant_treefern == true) | ||||
|  | ||||
| -- lot of code, lot to load | ||||
|  | ||||
| abstract_ferns.grow_giant_tree_fern = function(pos) | ||||
| 	local size = math.random(12,16)	-- min of range must be >= 4 | ||||
| 	local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	 | ||||
| 	local leave_a_1 = {x = pos.x + 1, y = pos.y + size - 1, z = pos.z    } | ||||
| 	local leave_a_2 = {x = pos.x + 2, y = pos.y + size    , z = pos.z    } | ||||
| 	local leave_a_3 = {x = pos.x + 3, y = pos.y + size - 1, z = pos.z    } | ||||
| 	local leave_a_4 = {x = pos.x + 4, y = pos.y + size - 2, z = pos.z    } | ||||
| 	 | ||||
| 	local leave_b_1 = {x = pos.x - 1, y = pos.y + size - 1, z = pos.z    } | ||||
| 	local leave_b_2 = {x = pos.x - 2, y = pos.y + size,     z = pos.z    } | ||||
| 	local leave_b_3 = {x = pos.x - 3, y = pos.y + size - 1, z = pos.z    } | ||||
| 	local leave_b_4 = {x = pos.x - 4, y = pos.y + size - 2, z = pos.z    } | ||||
| 	 | ||||
| 	local leave_c_1 = {x = pos.x    , y = pos.y + size - 1, z = pos.z + 1} | ||||
| 	local leave_c_2 = {x = pos.x    , y = pos.y + size    , z = pos.z + 2} | ||||
| 	local leave_c_3 = {x = pos.x    , y = pos.y + size - 1, z = pos.z + 3} | ||||
| 	local leave_c_4 = {x = pos.x    , y = pos.y + size - 2, z = pos.z + 4} | ||||
| 	 | ||||
| 	local leave_d_1 = {x = pos.x    , y = pos.y + size - 1, z = pos.z - 1} | ||||
| 	local leave_d_2 = {x = pos.x    , y = pos.y + size    , z = pos.z - 2} | ||||
| 	local leave_d_3 = {x = pos.x    , y = pos.y + size - 1, z = pos.z - 3} | ||||
| 	local leave_d_4 = {x = pos.x    , y = pos.y + size - 2, z = pos.z - 4} | ||||
| 	 | ||||
| 	if minetest.get_node(pos_01).name == "air"  -- instead of check_air = true, | ||||
| 	or minetest.get_node(pos_01).name == "ferns:sapling_giant_tree_fern" | ||||
| 	or minetest.get_node(pos_01).name == "default:junglegrass" then | ||||
| 		 | ||||
| 		for i = 1, size-3 do | ||||
| 			minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"}) | ||||
| 		end | ||||
| 		minetest.set_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"}) | ||||
| 		minetest.set_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"}) | ||||
| 	if minetest.get_node(pos_01).name ~= "air" | ||||
| 			and minetest.get_node(pos_01).name ~= "ferns:sapling_giant_tree_fern" | ||||
| 			and minetest.get_node(pos_01).name ~= "default:junglegrass" then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 		-- all the checking for air below is to prevent some ugly bugs (incomplete trunks of neighbouring trees), it's a bit slower, but worth the result | ||||
| 		 | ||||
| 		if minetest.get_node(leave_a_1).name == "air" then	 | ||||
| 			minetest.set_node(leave_a_1, {name="ferns:tree_fern_leave_big"}) | ||||
| 			if minetest.get_node(leave_a_2).name == "air" then | ||||
| 				minetest.set_node(leave_a_2, {name="ferns:tree_fern_leave_big"}) | ||||
| 				if minetest.get_node(leave_a_3).name == "air" then | ||||
| 					minetest.set_node(leave_a_3, {name="ferns:tree_fern_leave_big"}) | ||||
| 					if minetest.get_node(leave_a_4).name == "air" then | ||||
| 						minetest.set_node(leave_a_4, {name="ferns:tree_fern_leave_big_end", param2=3}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 		 | ||||
| 		if minetest.get_node(leave_b_1).name == "air" then | ||||
| 			minetest.set_node(leave_b_1, {name="ferns:tree_fern_leave_big"}) | ||||
| 			if minetest.get_node(leave_b_2).name == "air" then | ||||
| 				minetest.set_node(leave_b_2, {name="ferns:tree_fern_leave_big"}) | ||||
| 				if minetest.get_node(leave_b_3).name == "air" then | ||||
| 					minetest.set_node(leave_b_3, {name="ferns:tree_fern_leave_big"}) | ||||
| 					if minetest.get_node(leave_b_4).name == "air" then | ||||
| 						minetest.set_node(leave_b_4, {name="ferns:tree_fern_leave_big_end", param2=1}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 		 | ||||
| 		if minetest.get_node(leave_c_1).name == "air" then | ||||
| 			minetest.set_node(leave_c_1, {name="ferns:tree_fern_leave_big"}) | ||||
| 			if minetest.get_node(leave_c_2).name == "air" then | ||||
| 				minetest.set_node(leave_c_2, {name="ferns:tree_fern_leave_big"}) | ||||
| 				if minetest.get_node(leave_c_3).name == "air" then | ||||
| 					minetest.set_node(leave_c_3, {name="ferns:tree_fern_leave_big"}) | ||||
| 					if minetest.get_node(leave_c_4).name == "air" then | ||||
| 						minetest.set_node(leave_c_4, {name="ferns:tree_fern_leave_big_end", param2=2}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 			 | ||||
| 		if minetest.get_node(leave_d_1).name == "air" then | ||||
| 			minetest.set_node(leave_d_1, {name="ferns:tree_fern_leave_big"}) | ||||
| 			if minetest.get_node(leave_d_2).name == "air" then | ||||
| 				minetest.set_node(leave_d_2, {name="ferns:tree_fern_leave_big"}) | ||||
| 				if minetest.get_node(leave_d_3).name == "air" then | ||||
| 					minetest.set_node(leave_d_3, {name="ferns:tree_fern_leave_big"}) | ||||
| 					if minetest.get_node(leave_d_4).name == "air" then | ||||
| 						minetest.set_node(leave_d_4, {name="ferns:tree_fern_leave_big_end", param2=0}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 	local size = math.random(12,16)	-- min of range must be >= 4 | ||||
| 	 | ||||
| 	local leafchecks = { | ||||
| 		{ | ||||
| 			direction  = 3, | ||||
| 			positions = { | ||||
| 				{x = pos.x + 1, y = pos.y + size - 1, z = pos.z    }, | ||||
| 				{x = pos.x + 2, y = pos.y + size    , z = pos.z    }, | ||||
| 				{x = pos.x + 3, y = pos.y + size - 1, z = pos.z    }, | ||||
| 				{x = pos.x + 4, y = pos.y + size - 2, z = pos.z    } | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			direction  = 1, | ||||
| 			positions = { | ||||
| 				{x = pos.x - 1, y = pos.y + size - 1, z = pos.z    }, | ||||
| 				{x = pos.x - 2, y = pos.y + size,     z = pos.z    }, | ||||
| 				{x = pos.x - 3, y = pos.y + size - 1, z = pos.z    }, | ||||
| 				{x = pos.x - 4, y = pos.y + size - 2, z = pos.z    } | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			direction  = 2, | ||||
| 			positions = { | ||||
| 				{x = pos.x    , y = pos.y + size - 1, z = pos.z + 1}, | ||||
| 				{x = pos.x    , y = pos.y + size    , z = pos.z + 2}, | ||||
| 				{x = pos.x    , y = pos.y + size - 1, z = pos.z + 3}, | ||||
| 				{x = pos.x    , y = pos.y + size - 2, z = pos.z + 4} | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			direction  = 0, | ||||
| 			positions = { | ||||
| 				{x = pos.x    , y = pos.y + size - 1, z = pos.z - 1}, | ||||
| 				{x = pos.x    , y = pos.y + size    , z = pos.z - 2}, | ||||
| 				{x = pos.x    , y = pos.y + size - 1, z = pos.z - 3}, | ||||
| 				{x = pos.x    , y = pos.y + size - 2, z = pos.z - 4} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 		-- bug fixes # 2 - doesn't really work, so disabled for now | ||||
| 		--[[if minetest.get_node(leave_a_4).name == "ferns:tree_fern_leave_big_end" | ||||
| 		and minetest.get_node(leave_a_3).name == "ferns:fern_trunk_big" then | ||||
| 			minetest.set_node(leave_a_4, {name="air"}) | ||||
| 	for i = 1, size-3 do | ||||
| 		minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"}) | ||||
| 	end | ||||
| 	minetest.set_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"}) | ||||
| 	minetest.set_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"}) | ||||
|  | ||||
| 	-- all the checking for air below is to prevent some ugly bugs (incomplete trunks of neighbouring trees), it's a bit slower, but worth the result | ||||
|  | ||||
| 	-- assert(#leafchecks == 4) | ||||
| 	for i = 1, 4 do | ||||
| 		local positions = leafchecks[i].positions | ||||
| 		local rot = leafchecks[i].direction | ||||
| 		local endpos = 4	-- If the loop below adds all intermediate leaves then the "terminating" leaf will be at positions[4] | ||||
| 		-- assert(#positions == 4) | ||||
| 		-- add leaves so long as the destination nodes are air | ||||
| 		for j = 1, 3 do | ||||
| 			if minetest.get_node(positions[j]).name == "air" then | ||||
| 				minetest.set_node(positions[j], {name="ferns:tree_fern_leave_big"}) | ||||
| 			else | ||||
| 				endpos = j | ||||
| 				break | ||||
| 			end | ||||
| 		end | ||||
| 		 | ||||
| 		if minetest.get_node(leave_b_4).name == "ferns:tree_fern_leave_big_end" | ||||
| 		and minetest.get_node(leave_b_3).name == "ferns:fern_trunk_big" then | ||||
| 			minetest.set_node(leave_b_4, {name="air"}) | ||||
| 		-- add the terminating leaf if required and possible | ||||
| 		if endpos == 4 and minetest.get_node(positions[endpos]).name == "air" then | ||||
| 			minetest.set_node(positions[endpos], {name="ferns:tree_fern_leave_big_end", param2=rot}) | ||||
| 		end | ||||
| 		 | ||||
| 		if minetest.get_node(leave_c_4).name == "ferns:tree_fern_leave_big_end" | ||||
| 		and minetest.get_node(leave_c_3).name == "ferns:fern_trunk_big" then | ||||
| 			minetest.set_node(leave_c_4, {name="air"}) | ||||
| 		end | ||||
| 		 | ||||
| 		if minetest.get_node(leave_d_4).name == "ferns:tree_fern_leave_big_end" | ||||
| 		and minetest.get_node(leave_d_3).name == "ferns:fern_trunk_big" then | ||||
| 			minetest.set_node(leave_d_4, {name="air"}) | ||||
| 		end]] | ||||
| 		 | ||||
| 	end | ||||
| end | ||||
|  | ||||
| @@ -131,8 +100,6 @@ minetest.register_node("ferns:tree_fern_leaves_giant", { | ||||
| 	visual_scale = math.sqrt(8), | ||||
| 	wield_scale = {x=0.175, y=0.175, z=0.175}, | ||||
| 	paramtype = "light", | ||||
| 	--paramtype2 = "facedir", | ||||
| 	--tiles = {"[combine:"..TSS..T1.."ferns_5.png"..T2.."ferns_6.png"..T3.."ferns_7.png"..T4.."ferns_8.png^[transformFX^[combine:"..TSS..T1.."ferns_5.png"..T2.."ferns_6.png"..T3.."ferns_7.png"..T4.."ferns_8.png"}, | ||||
| 	tiles = {"ferns_fern_tree_giant.png"}, | ||||
| 	inventory_image = "ferns_fern_tree.png", | ||||
| 	walkable = false, | ||||
| @@ -309,58 +276,55 @@ minetest.register_abm({ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- GENERATE GIANT TREE FERN | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- in jungles | ||||
| if Giant_Tree_Ferns_in_Jungle == true then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:sand",  | ||||
| 		"default:desert_sand"--,  | ||||
| 		--"dryplants:grass_short" | ||||
| if abstract_ferns.config.enable_giant_treeferns_in_jungle == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:sand", | ||||
| 			"default:desert_sand"--, | ||||
| 			--"dryplants:grass_short" | ||||
| 		}, | ||||
| 		max_count = 12,--27, | ||||
| 		avoid_nodes = {"group:tree"}, | ||||
| 		avoid_radius = 3,--4, | ||||
| 		rarity = 85, | ||||
| 		seed_diff = 329, | ||||
| 		min_elevation = 1, | ||||
| 		near_nodes = {"default:jungletree"}, | ||||
| 		near_nodes_size = 6, | ||||
| 		near_nodes_vertical = 2,--4, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 	}, | ||||
|     max_count = 12,--27, | ||||
|     avoid_nodes = {"group:tree"}, | ||||
|     avoid_radius = 3,--4, | ||||
|     rarity = 85, | ||||
|     seed_diff = 329, | ||||
|     min_elevation = 1, | ||||
| 	near_nodes = {"default:jungletree"}, | ||||
| 	near_nodes_size = 6, | ||||
| 	near_nodes_vertical = 2,--4, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     --humidity_max = 0.39,--1.0, | ||||
|     --humidity_min = 0.5, | ||||
|     --temp_max = -1,-- -1.2,-- -0.5, -- ~ 55C | ||||
|     --temp_min = -0.35,-- -0.07, -- ~ 25C | ||||
|   }, | ||||
|   abstract_ferns.grow_giant_tree_fern | ||||
| ) | ||||
| 	abstract_ferns.grow_giant_tree_fern | ||||
| 	) | ||||
| end | ||||
|  | ||||
| -- for oases & tropical beaches | ||||
| if Giant_Tree_Ferns_for_Oases == true then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:sand"--, | ||||
| 		--"default:desert_sand" | ||||
| if abstract_ferns.config.enable_giant_treeferns_in_oases == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:sand"--, | ||||
| 			--"default:desert_sand" | ||||
| 		}, | ||||
| 		max_count = 10,--27, | ||||
| 		rarity = 90, | ||||
| 		seed_diff = 329, | ||||
| 		neighbors = {"default:desert_sand"}, | ||||
| 		ncount = 1, | ||||
| 		min_elevation = 1, | ||||
| 		near_nodes = {"default:water_source"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 1.0, | ||||
| 		temp_max = -1.0, | ||||
| 		temp_min = 1.0, | ||||
| 	}, | ||||
|     max_count = 10,--27, | ||||
|     rarity = 90, | ||||
|     seed_diff = 329, | ||||
| 	neighbors = {"default:desert_sand"}, | ||||
| 	ncount = 1, | ||||
|     min_elevation = 1, | ||||
| 	near_nodes = {"default:water_source"}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 1, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 1.0, | ||||
|     temp_max = -1.0, | ||||
|     temp_min = 1.0, | ||||
|   }, | ||||
|   abstract_ferns.grow_giant_tree_fern | ||||
| ) | ||||
| 	abstract_ferns.grow_giant_tree_fern | ||||
| 	) | ||||
| end | ||||
|   | ||||
| @@ -9,170 +9,148 @@ | ||||
| -- Supports:				dryplants, stoneage, sumpf			 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| abstract_ferns.grow_horsetail = function(pos) | ||||
| 	local horsetail_size = math.random(1,4) | ||||
| 	if 	   horsetail_size == 1 then | ||||
| 		minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_01"}) | ||||
| 	elseif horsetail_size == 2 then | ||||
| 		minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_02"}) | ||||
| 	elseif horsetail_size == 3 then | ||||
| 		minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_03"}) | ||||
| 	elseif horsetail_size == 4 then | ||||
| 		minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_04"}) | ||||
| 	end | ||||
| end | ||||
| assert(abstract_ferns.config.enable_horsetails == true) | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- HORSETAIL  (EQUISETUM) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_node("ferns:horsetail_01", {  | ||||
| 	description = "Young Horsetail (Equisetum)", | ||||
| 	drawtype = "plantlike", | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_horsetail_01.png"}, | ||||
| 	inventory_image = "ferns_horsetail_01.png", | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.15, -1/2, -0.15, 0.15, -1/16, 0.15 }, | ||||
| 	}, | ||||
| 	on_use = minetest.item_eat(1), -- young ones edible https://en.wikipedia.org/wiki/Equisetum | ||||
| }) | ||||
| minetest.register_node("ferns:horsetail_02", { | ||||
| 	drawtype = "plantlike", | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_horsetail_02.png"}, | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,horsetail=1,not_in_creative_inventory=1}, | ||||
| 	drop = "ferns:horsetail_04", | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.15, -1/2, -0.15, 0.15, 1/16, 0.15 }, | ||||
| 	}, | ||||
| }) | ||||
| minetest.register_node("ferns:horsetail_03", { | ||||
| 	drawtype = "plantlike", | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_horsetail_03.png"}, | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,horsetail=1,not_in_creative_inventory=1}, | ||||
| 	drop = "ferns:horsetail_04", | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.15, -1/2, -0.15, 0.15, 4/16, 0.15 }, | ||||
| 	}, | ||||
| }) | ||||
| minetest.register_node("ferns:horsetail_04", { -- the one in inventory | ||||
| 	description = "Horsetail (Equisetum)", | ||||
| 	drawtype = "plantlike", | ||||
| 	paramtype = "light", | ||||
| 	tiles = {"ferns_horsetail_04.png"}, | ||||
| 	inventory_image = "ferns_horsetail_04.png", | ||||
| 	walkable = false, | ||||
| 	buildable_to = true, | ||||
| 	groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.15, -1/2, -0.15, 0.15, 7/16, 0.15 }, | ||||
| 	}, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		-- place a random horsetail | ||||
| 		local stack = ItemStack("ferns:horsetail_0"..math.random(2,4)) | ||||
| 		local ret = minetest.item_place(stack, placer, pointed_thing) | ||||
| 		return ItemStack("ferns:horsetail_04 "..itemstack:get_count()-(1-ret:get_count())) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| local node_names = {} | ||||
|  | ||||
| local function create_nodes() | ||||
| 	local selection_boxes = { | ||||
| 		{ -0.15, -1/2, -0.15, 0.15, -1/16, 0.15 }, | ||||
| 		{ -0.15, -1/2, -0.15, 0.15, 1/16, 0.15 }, | ||||
| 		{ -0.15, -1/2, -0.15, 0.15, 4/16, 0.15 }, | ||||
| 		{ -0.15, -1/2, -0.15, 0.15, 7/16, 0.15 }, | ||||
| 	} | ||||
|  | ||||
| 	for i = 1, 4 do | ||||
| 		local node_name = "ferns:horsetail_" .. string.format("%02d", i) | ||||
| 		local node_img = "ferns_horsetail_" .. string.format("%02d", i) .. ".png" | ||||
| 		local node_desc | ||||
| 		local node_on_use = nil | ||||
| 		local node_drop = "ferns:horsetail_04" | ||||
|  | ||||
| 		if i == 1 then | ||||
| 			node_desc = "Young Horsetail (Equisetum)" | ||||
| 			node_on_use = minetest.item_eat(1) -- young ones edible https://en.wikipedia.org/wiki/Equisetum | ||||
| 			node_drop = node_name | ||||
| 		elseif i == 4 then | ||||
| 			node_desc = "Horsetail (Equisetum)" | ||||
| 		else | ||||
| 			node_desc = "Horsetail (Equisetum) ".. string.format("%02d", i) | ||||
| 		end | ||||
|  | ||||
| 		node_names[i] = node_name | ||||
|  | ||||
| 		minetest.register_node(node_name, { | ||||
| 			description = node_desc, | ||||
| 			drawtype = "plantlike", | ||||
| 			paramtype = "light", | ||||
| 			tiles = { node_img }, | ||||
| 			inventory_image = node_img, | ||||
| 			walkable = false, | ||||
| 			buildable_to = true, | ||||
| 			groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, | ||||
| 			sounds = default.node_sound_leaves_defaults(), | ||||
| 			selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = selection_boxes[i], | ||||
| 			}, | ||||
| 			on_use = node_on_use, | ||||
| 			drop = node_drop, | ||||
| 		}) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Init | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| create_nodes() | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Spawning | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| if Horsetails_Spawning == true then | ||||
| plantslib:spawn_on_surfaces({ | ||||
| 	spawn_delay = 1200, | ||||
| 	spawn_plants = { | ||||
| 		"ferns:horsetail_01",  | ||||
| 		"ferns:horsetail_02",  | ||||
| 		"ferns:horsetail_03",  | ||||
| 		"ferns:horsetail_04" | ||||
| 	}, | ||||
| 	spawn_chance = 400, | ||||
| 	spawn_surfaces = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"default:desert_sand", | ||||
| 		"default:sand", | ||||
| 		"dryplants:grass_short", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"default:mossycobble", | ||||
| 		"default:gravel" | ||||
| 	}, | ||||
| 	seed_diff = 329, | ||||
| 	min_elevation = 1, -- above sea level | ||||
| 	near_nodes = {"default:water_source","default:gravel"}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 1, | ||||
| 	near_nodes_count = 1, | ||||
| }) | ||||
| if abstract_ferns.config.enable_horsetails_spawning == true then | ||||
| 	plantslib:spawn_on_surfaces({ | ||||
| 		spawn_delay = 1200, | ||||
| 		spawn_plants = node_names, | ||||
| 		spawn_chance = 400, | ||||
| 		spawn_surfaces = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:desert_sand", | ||||
| 			"default:sand", | ||||
| 			"dryplants:grass_short", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"default:mossycobble", | ||||
| 			"default:gravel" | ||||
| 		}, | ||||
| 		seed_diff = 329, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"default:water_source","default:gravel"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 		--random_facedir = { 0, 179 }, | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Generating | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| if Horsetails_on_Grass == true then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"sumpf:sumpf" | ||||
|  | ||||
| if abstract_ferns.config.enable_horsetails_on_grass == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		max_count = 35, | ||||
| 		rarity = 40, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = { | ||||
| 			"group:water", -- likes water (of course) | ||||
| 			"default:gravel", -- near those on gravel | ||||
| 			"default:sand", -- some like sand | ||||
| 			"default:clay", -- some like clay | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"default:mossycobble", | ||||
| 			"default:cobble", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		near_nodes_size = 3, | ||||
| 		near_nodes_vertical = 2,--3, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C | ||||
| 		temp_min = 0.53, -- 0 <20>C, dies back in winter | ||||
| 		--random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
|     max_count = 35, | ||||
|     rarity = 40, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	near_nodes = { | ||||
| 		"group:water", -- likes water (of course) | ||||
| 		"default:gravel", -- near those on gravel | ||||
| 		"default:sand", -- some like sand | ||||
| 		"default:clay", -- some like clay | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"default:mossycobble", | ||||
| 		"default:cobble", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	near_nodes_size = 3, | ||||
| 	near_nodes_vertical = 2,--3, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C | ||||
|     temp_min = 0.53, -- 0 <20>C, dies back in winter | ||||
|   }, | ||||
|   abstract_ferns.grow_horsetail | ||||
| ) | ||||
| 	node_names | ||||
| 	) | ||||
| end | ||||
|  | ||||
| if Horsetails_on_Stony == true then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:gravel", -- roots go deep | ||||
| 		"default:mossycobble", | ||||
| 		"stoneage:dirt_with_silex", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"stoneage:sand_with_silex"--, -- roots go deep | ||||
| 		--"sumpf:sumpf" | ||||
| if abstract_ferns.config.enable_horsetails_on_stones == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:gravel", -- roots go deep | ||||
| 			"default:mossycobble", | ||||
| 			"stoneage:dirt_with_silex", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"stoneage:sand_with_silex", -- roots go deep | ||||
| 		}, | ||||
| 		max_count = 35, | ||||
| 		rarity = 20, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, -- 55 <20>C | ||||
| 		temp_min = 0.53, -- 0 <20>C, dies back in winter | ||||
| 		--random_facedir = { 0, 179 }, | ||||
| 	}, | ||||
|     max_count = 35, | ||||
|     rarity = 20, | ||||
|     min_elevation = 1, -- above sea level | ||||
| 	plantlife_limit = -0.9, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, -- 55 <20>C | ||||
|     temp_min = 0.53, -- 0 <20>C, dies back in winter | ||||
|   }, | ||||
|   abstract_ferns.grow_horsetail | ||||
| ) | ||||
| 	node_names | ||||
| 	) | ||||
| end | ||||
|   | ||||
| @@ -1,33 +1,69 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| local title		= "Ferns" -- former "Archae Plantae" | ||||
| local version 	= "0.1.2" | ||||
| local version 	= "0.2.0" | ||||
| local mname		= "ferns" -- former "archaeplantae" | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- (by Mossmanikin) | ||||
| -- License (everything): 	WTFPL			 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| abstract_ferns = {} | ||||
|  | ||||
| dofile(minetest.get_modpath("ferns").."/SeTTiNGS.txt") | ||||
| dofile(minetest.get_modpath("ferns").."/settings.lua") | ||||
|  | ||||
| if Lady_fern == true then | ||||
| dofile(minetest.get_modpath("ferns").."/fern.lua") | ||||
| if abstract_ferns.config.enable_lady_fern == true then | ||||
| 	dofile(minetest.get_modpath("ferns").."/fern.lua") | ||||
| end | ||||
|  | ||||
| if Horsetails == true then | ||||
| if abstract_ferns.config.enable_horsetails == true then | ||||
| 	dofile(minetest.get_modpath("ferns").."/horsetail.lua") | ||||
| end | ||||
|  | ||||
| if Tree_Fern == true then | ||||
| if abstract_ferns.config.enable_treefern == true then | ||||
| 	dofile(minetest.get_modpath("ferns").."/treefern.lua") | ||||
| end | ||||
|  | ||||
| if Giant_Tree_Fern == true then | ||||
| if abstract_ferns.config.enable_giant_treefern == true then | ||||
| 	dofile(minetest.get_modpath("ferns").."/gianttreefern.lua") | ||||
| end | ||||
|  | ||||
| dofile(minetest.get_modpath("ferns").."/crafting.lua") | ||||
|  | ||||
|  | ||||
| ----------------------------------------------------------------------------- | ||||
| -- TESTS | ||||
| ----------------------------------------------------------------------------- | ||||
| local run_tests = true	-- set to false to skip | ||||
|  | ||||
| if run_tests then | ||||
|  | ||||
| 	-- These are, essentially, unit tests to make sure that all required item | ||||
| 	-- strings are registered. The init sequence is not time critical so leaving | ||||
| 	-- them here won't affect performance. | ||||
|  | ||||
| 	-- Check node names | ||||
| 	if abstract_ferns.config.enable_horsetails then | ||||
| 		print("[Mod] " ..title.. " Checking horsetail item strings") | ||||
| 		assert(minetest.registered_items["ferns:horsetail_01"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:horsetail_02"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:horsetail_03"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:horsetail_04"] ~= nil) | ||||
| 	end | ||||
| 	if abstract_ferns.config.enable_lady_fern then | ||||
| 		print("[Mod] ".. title .." Checking lady fern item strings") | ||||
| 		assert(minetest.registered_items["ferns:fern_01"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:fern_02"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:fern_03"] ~= nil) | ||||
| 	end | ||||
| 	if abstract_ferns.config.enable_treefern then | ||||
| 		print("[Mod] ".. title .." Checking tree fern item strings") | ||||
| 		assert(minetest.registered_items["ferns:tree_fern_leaves"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:tree_fern_leaves_02"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:fern_trunk"] ~= nil) | ||||
| 		assert(minetest.registered_items["ferns:sapling_tree_fern"] ~= nil) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|   | ||||
							
								
								
									
										43
									
								
								ferns/settings.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ferns/settings.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| -- In case you don't wanna have errors: | ||||
|  | ||||
| -- Only change what's behind a "=" (or "--").  | ||||
| -- Don't use caps (behind a "="). | ||||
|  | ||||
| -- If there's a "false" (behind a "=") you can change it to "true" (and the other way around). | ||||
| -- Spelling is important. | ||||
| -- If "true" or "false" is necessary as setting, everything(!) which is not spelled "true" will be read as if it were "false" (even "1", "True"...) | ||||
|  | ||||
| -- If you wanna comment something (for example to remember the default value), you can do this by putting "--" in front of the comment. | ||||
| -- You can put "--" at the end of a line with "=" in it, or at the beginning of an empty/new line (minetest will ignore what's behind it then). | ||||
| -- But don't put "--" in front of a line with "=" in it (or else minetest will ignore the setting and you might get an error). | ||||
|  | ||||
| -- If something is still unclear, don't hesitate to post your question @ https://forum.minetest.net/viewtopic.php?id=6921 | ||||
|  | ||||
| abstract_ferns.config = {} | ||||
|  | ||||
| -- Which plants should generate/spawn? | ||||
| abstract_ferns.config.enable_lady_fern			= true | ||||
| abstract_ferns.config.enable_horsetails			= true | ||||
| abstract_ferns.config.enable_treefern			= true | ||||
| abstract_ferns.config.enable_giant_treefern		= true | ||||
|  | ||||
| -- Where should they generate/spawn? (if they generate/spawn) | ||||
| -- | ||||
| --  Lady-Fern | ||||
| abstract_ferns.config.lady_ferns_near_tree = true | ||||
| abstract_ferns.config.lady_ferns_near_rock = true | ||||
| abstract_ferns.config.lady_ferns_near_ores = true				-- if there's a bunch of ferns there's ores nearby, this one causes a huge fps drop | ||||
| abstract_ferns.config.lady_ferns_in_groups = false				-- this one is meant as a replacement of Ferns_near_Ores: ferns tend to generate in groups, less fps drop, no hint for nearby ores | ||||
| -- | ||||
| --	Horsetails | ||||
| abstract_ferns.config.enable_horsetails_spawning	= false		-- horsetails will grow in already explored areas, over time, near water or gravel | ||||
| abstract_ferns.config.enable_horsetails_on_grass 	= true		-- on dirt with grass and swamp (sumpf mod) | ||||
| abstract_ferns.config.enable_horsetails_on_stones 	= true		-- on gravel, mossy cobble and silex (stoneage mod) | ||||
| -- | ||||
| -- Tree_Fern | ||||
| abstract_ferns.config.enable_treeferns_in_jungle	= true | ||||
| abstract_ferns.config.enable_treeferns_in_oases 	= true		-- for oases and tropical beaches | ||||
| -- | ||||
| -- Giant_Tree_Fern | ||||
| abstract_ferns.config.enable_giant_treeferns_in_jungle	= true | ||||
| abstract_ferns.config.enable_giant_treeferns_in_oases	= true	-- for oases and tropical beaches | ||||
| @@ -7,71 +7,38 @@ | ||||
| -- Looked at code from:		default	, trees			 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| assert(abstract_ferns.config.enable_treefern == true) | ||||
|  | ||||
| abstract_ferns.grow_tree_fern = function(pos) | ||||
| 	local size = math.random(1,5) | ||||
| 	local crown = math.random(1,2) | ||||
|  | ||||
| 	local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z} | ||||
| 	local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z} | ||||
| 	local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z} | ||||
| 	local pos_05 = {x = pos.x, y = pos.y + 5, z = pos.z} | ||||
| 	 | ||||
| 	if minetest.get_node(pos_01).name == "air"  -- instead of check_air = true, | ||||
| 	or minetest.get_node(pos_01).name == "ferns:sapling_tree_fern" | ||||
| 	or minetest.get_node(pos_01).name == "default:junglegrass" then | ||||
| 	 | ||||
| 		if minetest.get_node(pos_02).name ~= "air" | ||||
| 		or size == 1 then | ||||
| 			minetest.set_node(pos_01, {name="ferns:tree_fern_leaves"}) | ||||
| 			 | ||||
| 		elseif minetest.get_node(pos_03).name ~= "air"  | ||||
| 		or size == 2 then | ||||
| 			minetest.set_node(pos_01, {name="ferns:fern_trunk"}) | ||||
| 			if crown == 1 then | ||||
| 				minetest.set_node(pos_02, {name="ferns:tree_fern_leaves"}) | ||||
| 			else | ||||
| 				minetest.set_node(pos_02, {name="ferns:tree_fern_leaves_02"}) | ||||
| 			end | ||||
| 			 | ||||
| 		elseif minetest.get_node(pos_04).name ~= "air" | ||||
| 		or size == 3 then | ||||
| 			minetest.set_node(pos_01, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_02, {name="ferns:fern_trunk"}) | ||||
| 			if crown == 1 then | ||||
| 				minetest.set_node(pos_03, {name="ferns:tree_fern_leaves"}) | ||||
| 			else | ||||
| 				minetest.set_node(pos_03, {name="ferns:tree_fern_leaves_02"}) | ||||
| 			end | ||||
| 			 | ||||
| 		elseif minetest.get_node(pos_05).name ~= "air" | ||||
| 		or size == 4 then | ||||
| 			minetest.set_node(pos_01, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_02, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_03, {name="ferns:fern_trunk"}) | ||||
| 			if crown == 1 then | ||||
| 				minetest.set_node(pos_04, {name="ferns:tree_fern_leaves"}) | ||||
| 			else | ||||
| 				minetest.set_node(pos_04, {name="ferns:tree_fern_leaves_02"}) | ||||
| 			end | ||||
| 		 | ||||
| 		elseif size == 5 then | ||||
| 			minetest.set_node(pos_01, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_02, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_03, {name="ferns:fern_trunk"}) | ||||
| 			minetest.set_node(pos_04, {name="ferns:fern_trunk"}) | ||||
| 			if crown == 1 then | ||||
| 				minetest.set_node(pos_05, {name="ferns:tree_fern_leaves"}) | ||||
| 			else | ||||
| 				minetest.set_node(pos_05, {name="ferns:tree_fern_leaves_02"}) | ||||
| 			end | ||||
| 			 | ||||
| 		end | ||||
| 	if minetest.get_node(pos_01).name ~= "air" | ||||
| 			and minetest.get_node(pos_01).name ~= "ferns:sapling_tree_fern" | ||||
| 			and minetest.get_node(pos_01).name ~= "default:junglegrass" then | ||||
| 		return | ||||
| 	end | ||||
| 		 | ||||
| 	local size = math.random(1, 5) | ||||
| 	local crown = ({ "ferns:tree_fern_leaves", "ferns:tree_fern_leaves_02" })[math.random(1, 2)] | ||||
| 	 | ||||
| 	local i = 1 | ||||
| 	while (i < size-1) do | ||||
| 		if minetest.get_node({x = pos.x, y = pos.y + i + 1, z = pos.z}).name ~= "air" then | ||||
| 			break | ||||
| 		end | ||||
| 		minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = "ferns:fern_trunk" }) | ||||
| 		i = i + 1 | ||||
| 	end | ||||
|  | ||||
| 	minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = crown }) | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- TREE FERN LEAVES | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- TODO: Both of these nodes look the same? | ||||
|  | ||||
| minetest.register_node("ferns:tree_fern_leaves", { | ||||
| 	description = "Tree Fern Crown (Dicksonia)", | ||||
| 	drawtype = "plantlike", | ||||
| @@ -188,58 +155,58 @@ minetest.register_abm({ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- GENERATE TREE FERN | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- in jungles | ||||
| if Tree_Ferns_in_Jungle == true	then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:dirt_with_grass",  | ||||
| 		"default:sand",  | ||||
| 		"default:desert_sand"--,  | ||||
| 		--"dryplants:grass_short" | ||||
| if abstract_ferns.config.enable_treeferns_in_jungle == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:sand", | ||||
| 			"default:desert_sand", | ||||
| 		}, | ||||
| 		max_count = 35,--27, | ||||
| 		avoid_nodes = {"default:tree"}, | ||||
| 		avoid_radius = 4, | ||||
| 		rarity = 50, | ||||
| 		seed_diff = 329, | ||||
| 		min_elevation = -10, | ||||
| 		near_nodes = {"default:jungletree"}, | ||||
| 		near_nodes_size = 6, | ||||
| 		near_nodes_vertical = 2,--4, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 0.4, | ||||
| 		temp_max = -0.5, | ||||
| 		temp_min = 0.13, | ||||
| 	}, | ||||
|     max_count = 35,--27, | ||||
|     avoid_nodes = {"default:tree"}, | ||||
|     avoid_radius = 4, | ||||
|     rarity = 50, | ||||
|     seed_diff = 329, | ||||
|     min_elevation = -10, | ||||
| 	near_nodes = {"default:jungletree"}, | ||||
| 	near_nodes_size = 6, | ||||
| 	near_nodes_vertical = 2,--4, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 0.4, | ||||
|     temp_max = -0.5, | ||||
|     temp_min = 0.13, | ||||
|   }, | ||||
|   abstract_ferns.grow_tree_fern | ||||
| ) | ||||
| 	abstract_ferns.grow_tree_fern | ||||
| 	) | ||||
| end | ||||
|  | ||||
| -- for oases & tropical beaches | ||||
| if Tree_Ferns_for_Oases == true then | ||||
| plantslib:register_generate_plant({ | ||||
|     surface = { | ||||
| 		"default:sand"--, | ||||
| 		--"default:desert_sand" | ||||
| if abstract_ferns.config.enable_treeferns_in_oases == true then | ||||
| 	plantslib:register_generate_plant({ | ||||
| 		surface = { | ||||
| 			"default:sand"--, | ||||
| 			--"default:desert_sand" | ||||
| 		}, | ||||
| 		max_count = 35, | ||||
| 		rarity = 50, | ||||
| 		seed_diff = 329, | ||||
| 		neighbors = {"default:desert_sand"}, | ||||
| 		ncount = 1, | ||||
| 		min_elevation = 1, | ||||
| 		near_nodes = {"default:water_source"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 		plantlife_limit = -0.9, | ||||
| 		humidity_max = -1.0, | ||||
| 		humidity_min = 1.0, | ||||
| 		temp_max = -1.0, | ||||
| 		temp_min = 1.0, | ||||
| 	}, | ||||
|     max_count = 35, | ||||
|     rarity = 50, | ||||
|     seed_diff = 329, | ||||
| 	neighbors = {"default:desert_sand"}, | ||||
| 	ncount = 1, | ||||
|     min_elevation = 1, | ||||
| 	near_nodes = {"default:water_source"}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 1, | ||||
| 	near_nodes_count = 1, | ||||
|     plantlife_limit = -0.9, | ||||
|     humidity_max = -1.0, | ||||
|     humidity_min = 1.0, | ||||
|     temp_max = -1.0, | ||||
|     temp_min = 1.0, | ||||
|   }, | ||||
|   abstract_ferns.grow_tree_fern | ||||
| 	abstract_ferns.grow_tree_fern | ||||
| ) | ||||
| end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user