Compare commits
	
		
			9 Commits
		
	
	
		
			master
			...
			replace_bi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 99d58e0876 | ||
|  | 59c483fd4f | ||
|  | 640cfd3ac7 | ||
|  | cdfbf20ab0 | ||
|  | 85569605f5 | ||
|  | a154cb9904 | ||
|  | d55f066686 | ||
|  | 252c2bd1d2 | ||
|  | 15f62452b8 | 
							
								
								
									
										13
									
								
								.github/workflows/luacheck.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,13 +0,0 @@ | ||||
| name: luacheck | ||||
| on: [push, pull_request] | ||||
| jobs: | ||||
|   luacheck: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@master | ||||
|     - 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 ./ | ||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| *~ | ||||
							
								
								
									
										23
									
								
								.luacheckrc
									
									
									
									
									
								
							
							
						
						| @@ -1,21 +1,14 @@ | ||||
| unused_args = false | ||||
| allow_defined_top = true | ||||
| max_line_length = 185 | ||||
|  | ||||
| exclude_files = {".luacheckrc"} | ||||
|  | ||||
| globals = { | ||||
| 	"biome_lib", | ||||
| 	"bushes_classic", | ||||
| } | ||||
|  | ||||
| read_globals = { | ||||
| 	table = {fields = {"copy"}}, | ||||
|  | ||||
| 	"minetest", "ItemStack", | ||||
| 	"vector", | ||||
|  | ||||
| 	"default", | ||||
| 	"moretrees", | ||||
| 	"biome_lib", | ||||
| 	"DIR_DELIM", | ||||
| 	"minetest", "core", | ||||
| 	"dump", | ||||
| 	"vector", "nodeupdate", | ||||
| 	"VoxelManip", "VoxelArea", | ||||
| 	"PseudoRandom", "ItemStack", | ||||
| 	"default", | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| -- 3D Mushroom mod by VanessaE | ||||
|  | ||||
| mushroom = {} | ||||
|  | ||||
| -- support for i18n | ||||
| local S = minetest.get_translator("3dmushrooms") | ||||
|  | ||||
| minetest.override_item("flowers:mushroom_fertile_brown", { | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "3dmushrooms.obj", | ||||
| @@ -63,3 +68,5 @@ minetest.register_alias("mushroom:spore1", "flowers:mushroom_spores_red") | ||||
| minetest.register_alias("mushroom:poison", "flowers:mushroom_red") | ||||
|  | ||||
| minetest.register_alias("mushroom:identifier", "default:mese_crystal_fragment") | ||||
|  | ||||
| minetest.log("info", S("[3D Mushrooms] loaded.")) | ||||
|   | ||||
							
								
								
									
										8
									
								
								3dmushrooms/locale/3dmushrooms.de.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| # textdomain: 3dmushrooms | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # reusityback, 2022. | ||||
|  | ||||
| [3D Mushrooms] loaded.=[3D Mushrooms] geladen. | ||||
							
								
								
									
										8
									
								
								3dmushrooms/locale/3dmushrooms.eo.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| # textdomain: 3dmushrooms | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Jolesh, 2022. | ||||
|  | ||||
| [3D Mushrooms] loaded.=[3D Mushrooms] ŝargis. | ||||
							
								
								
									
										8
									
								
								3dmushrooms/locale/template.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| # textdomain: 3dmushrooms | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
|  | ||||
| [3D Mushrooms] loaded.= | ||||
| @@ -1,2 +1,2 @@ | ||||
| name = 3dmushrooms | ||||
| depends = flowers | ||||
| depends = default, flowers | ||||
|   | ||||
| Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 5.0 KiB | 
| Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.2 KiB | 
							
								
								
									
										219
									
								
								bushes/init.lua
									
									
									
									
									
								
							
							
						
						| @@ -8,9 +8,14 @@ | ||||
|  | ||||
| -- support for i18n | ||||
| local S = minetest.get_translator("bushes") | ||||
| abstract_bushes = {} | ||||
|  | ||||
| local bushes_bush_rarity = tonumber(minetest.settings:get("bushes_bush_rarity")) or 99.9 | ||||
| local bushes_bush_rarity_fertility = tonumber(minetest.settings:get("bushes_bush_rarity_fertility")) or 1.5 | ||||
|  | ||||
| local bushes_youngtrees_rarity = tonumber(minetest.settings:get("bushes_youngtrees_rarity")) or 100 | ||||
| local bushes_youngtrees_rarity_fertility = tonumber(minetest.settings:get("bushes_youngtrees_rarity_fertility")) or 0.6 | ||||
|  | ||||
| local bush_rarity = minetest.settings:get("bushes.bush_rarity") or 0.008 | ||||
| local youngtree_rarity = minetest.settings:get("youngtree.bush_rarity") or 0.006 | ||||
|  | ||||
| minetest.register_node("bushes:youngtree2_bottom", { | ||||
| 	description = S("Young Tree 2 (bottom)"), | ||||
| @@ -24,6 +29,7 @@ minetest.register_node("bushes:youngtree2_bottom", { | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			--{0.375000,-0.500000,-0.500000,0.500000,0.500000,-0.375000}, --NodeBox 1 | ||||
| 			{-0.0612,-0.500000,-0.500000,0.0612,0.500000,-0.375000}, --NodeBox 1 | ||||
| 		} | ||||
| 	}, | ||||
| @@ -32,10 +38,10 @@ minetest.register_node("bushes:youngtree2_bottom", { | ||||
| 	drop = 'default:stick' | ||||
| }) | ||||
|  | ||||
| local BushBranchCenter = { {1,1}, {3,2} } | ||||
| local BushBranchCenter			= { {1,1}, {3,2} } | ||||
| for i in pairs(BushBranchCenter) do | ||||
| 	local Num = BushBranchCenter[i][1] | ||||
| 	local TexNum = BushBranchCenter[i][2] | ||||
| 	local Num		= BushBranchCenter[i][1] | ||||
| 	local TexNum	= BushBranchCenter[i][2] | ||||
| 	minetest.register_node("bushes:bushbranches"..Num, { | ||||
| 		description = S("Bush Branches @1", Num), | ||||
| 		drawtype = "nodebox", | ||||
| @@ -71,10 +77,10 @@ for i in pairs(BushBranchCenter) do | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| local BushBranchSide = { {2,1}, {4,2} } | ||||
| local BushBranchSide			= { {2,1}, {4,2} } | ||||
| for i in pairs(BushBranchSide) do | ||||
| 	local Num = BushBranchSide[i][1] | ||||
| 	local TexNum = BushBranchSide[i][2] | ||||
| 	local Num		= BushBranchSide[i][1] | ||||
| 	local TexNum	= BushBranchSide[i][2] | ||||
| 	minetest.register_node("bushes:bushbranches"..Num, { | ||||
| 		description = S("Bush Branches @1", Num), | ||||
| 		drawtype = "nodebox", | ||||
| @@ -116,7 +122,7 @@ for i in pairs(BushBranchSide) do | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| local BushLeafNode = { {1}, {2}} | ||||
| local BushLeafNode			= { {1}, {2}} | ||||
| for i in pairs(BushLeafNode) do | ||||
| 	local Num = BushLeafNode[i][1] | ||||
| 	minetest.register_node("bushes:BushLeaves"..Num, { | ||||
| @@ -135,12 +141,44 @@ for i in pairs(BushLeafNode) do | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| local function grow_bush_node(pos, dir, leaf_type) | ||||
| abstract_bushes.grow_bush = function(pos) | ||||
| 	local leaf_type = math.random(1,2) | ||||
| 	local bush_side_height = math.random(0,1) | ||||
| 		local chance_of_bush_node_right = math.random(1,10) | ||||
| 		if chance_of_bush_node_right> 5 then | ||||
| 			local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z} | ||||
| 			abstract_bushes.grow_bush_node(right_pos,3,leaf_type) | ||||
| 		end | ||||
| 		local chance_of_bush_node_left = math.random(1,10) | ||||
| 		if chance_of_bush_node_left> 5 then | ||||
| 			bush_side_height = math.random(0,1) | ||||
| 			local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z} | ||||
| 			abstract_bushes.grow_bush_node(left_pos,1,leaf_type) | ||||
| 		end | ||||
| 		local chance_of_bush_node_front = math.random(1,10) | ||||
| 		if chance_of_bush_node_front> 5 then | ||||
| 			bush_side_height = math.random(0,1) | ||||
| 			local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1} | ||||
| 			abstract_bushes.grow_bush_node(front_pos,2,leaf_type) | ||||
| 		end | ||||
| 		local chance_of_bush_node_back = math.random(1,10) | ||||
| 		if chance_of_bush_node_back> 5 then | ||||
| 			bush_side_height = math.random(0,1) | ||||
| 			local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1} | ||||
| 			abstract_bushes.grow_bush_node(back_pos,0,leaf_type) | ||||
| 		end | ||||
|  | ||||
| abstract_bushes.grow_bush_node(pos,5,leaf_type) | ||||
| end | ||||
|  | ||||
|  | ||||
| abstract_bushes.grow_bush_node = function(pos,dir, leaf_type) | ||||
| 	local right_here = {x=pos.x, y=pos.y+1, z=pos.z} | ||||
| 	local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z} | ||||
|  | ||||
| 	local bush_branch_type = 2 | ||||
|  | ||||
| 	-- MM: I'm not sure if it's slower now than before... | ||||
| 	if dir ~= 5 and leaf_type == 1 then | ||||
| 		bush_branch_type = 2 | ||||
| 	end | ||||
| @@ -156,108 +194,52 @@ local function grow_bush_node(pos, dir, leaf_type) | ||||
| 		dir = 1 | ||||
| 	end | ||||
|  | ||||
| 	local nodename = minetest.get_node(right_here).name | ||||
| 	if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true, | ||||
| 	if minetest.get_node(right_here).name == "air"	-- instead of check_air = true, | ||||
| 	or minetest.get_node(right_here).name == "default:junglegrass" then | ||||
| 		minetest.swap_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir}) | ||||
| 						--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")") | ||||
| 		minetest.swap_node(above_right_here, {name="bushes:BushLeaves"..leaf_type}) | ||||
|  | ||||
| 		local chance_of_high_leaves = math.random(1,10) | ||||
| 		if chance_of_high_leaves > 5 then | ||||
| 		if chance_of_high_leaves> 5 then | ||||
| 			local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z} | ||||
| 							--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")") | ||||
| 			minetest.swap_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type}) | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function grow_bush(pos) | ||||
| 	-- replace possible grass nodes | ||||
| 	minetest.swap_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="air"}) | ||||
|  | ||||
| 	local leaf_type = math.random(1,2) | ||||
| 	local bush_side_height = math.random(0,1) | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:peat", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({rarity = bushes_bush_rarity, rarity_fertility = bushes_bush_rarity_fertility}), | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 	}, | ||||
| 	"bushes:bushes", | ||||
| 	abstract_bushes.grow_bush | ||||
| ) | ||||
|  | ||||
| 	local chance_of_bush_node_right = math.random(1,10) | ||||
| 	if chance_of_bush_node_right > 5 then | ||||
| 		local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z} | ||||
| 		grow_bush_node(right_pos,3,leaf_type) | ||||
| 	end | ||||
|  | ||||
| 	local chance_of_bush_node_left = math.random(1,10) | ||||
| 	if chance_of_bush_node_left > 5 then | ||||
| 		local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z} | ||||
| 		grow_bush_node(left_pos,1,leaf_type) | ||||
| 	end | ||||
|  | ||||
| 	local chance_of_bush_node_front = math.random(1,10) | ||||
| 	if chance_of_bush_node_front > 5 then | ||||
| 		local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1} | ||||
| 		grow_bush_node(front_pos,2,leaf_type) | ||||
| 	end | ||||
|  | ||||
| 	local chance_of_bush_node_back = math.random(1,10) | ||||
| 	if chance_of_bush_node_back > 5 then | ||||
| 		local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1} | ||||
| 		grow_bush_node(back_pos,0,leaf_type) | ||||
| 	end | ||||
|  | ||||
| 	grow_bush_node(pos,5,leaf_type) | ||||
| abstract_bushes.grow_youngtree2 = function(pos) | ||||
| 	local height = math.random(4,5) | ||||
| 	abstract_bushes.grow_youngtree_node2(pos,height) | ||||
| end | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	name = "bushes:bush", | ||||
| 	decoration = { | ||||
| 		"air" | ||||
| 	}, | ||||
| 	fill_ratio = bush_rarity, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| }) | ||||
|  | ||||
| --[[ | ||||
| 	this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids | ||||
| 	if other mods clear the registered decorations | ||||
| ]] | ||||
| local did | ||||
| minetest.register_on_mods_loaded(function() | ||||
| 	did = minetest.get_decoration_id("bushes:bush") | ||||
| 	minetest.set_gen_notify("decoration", {did}) | ||||
| end) | ||||
|  | ||||
| minetest.register_on_generated(function(minp, maxp, blockseed) | ||||
| 	local g = minetest.get_mapgen_object("gennotify") | ||||
| 	local locations = {} | ||||
|  | ||||
| 	local deco_locations = g["decoration#" .. did] or {} | ||||
| 	for _, pos in pairs(deco_locations) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
|  | ||||
| 	if #locations == 0 then return end | ||||
| 	for _, pos in ipairs(locations) do | ||||
| 		grow_bush(pos) | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| local function grow_youngtree_node2(pos, height) | ||||
| abstract_bushes.grow_youngtree_node2 = function(pos, height) | ||||
| 	local right_here = {x=pos.x, y=pos.y+1, z=pos.z} | ||||
| 	local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z} | ||||
| 	local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z} | ||||
| 	local three_above_right_here = {x=pos.x, y=pos.y+4, z=pos.z} | ||||
|  | ||||
| 	local nodename = minetest.get_node(right_here).name | ||||
| 	if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true, | ||||
| 	if minetest.get_node(right_here).name == "air"	-- instead of check_air = true, | ||||
| 	or minetest.get_node(right_here).name == "default:junglegrass" then | ||||
| 		if height == 4 then | ||||
| 			local two_above_right_here_south = {x=pos.x, y=pos.y+3, z=pos.z-1} | ||||
| 			local three_above_right_here_south = {x=pos.x, y=pos.y+4, z=pos.z-1} | ||||
|  | ||||
| 			minetest.swap_node(right_here, {name="bushes:youngtree2_bottom"}) | ||||
| 			minetest.swap_node(above_right_here, {name="bushes:youngtree2_bottom"}) | ||||
| 			minetest.swap_node(two_above_right_here, {name="bushes:bushbranches2"	, param2=2}) | ||||
| @@ -268,50 +250,17 @@ local function grow_youngtree_node2(pos, height) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function grow_youngtree2(pos) | ||||
| 	local height = math.random(4,5) | ||||
| 	grow_youngtree_node2(pos,height) | ||||
| end | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	name = "bushes:youngtree", | ||||
| 	decoration = { | ||||
| 		"air" | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:peat", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({rarity = bushes_youngtrees_rarity, rarity_fertility = bushes_youngtrees_rarity_fertility}), | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 	}, | ||||
| 	fill_ratio = youngtree_rarity, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| }) | ||||
|  | ||||
| --[[ | ||||
| 	this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids | ||||
| 	if other mods clear the registered decorations | ||||
| ]] | ||||
| local did2 | ||||
| minetest.register_on_mods_loaded(function() | ||||
| 	did2 = minetest.get_decoration_id("bushes:youngtree") | ||||
| 	minetest.set_gen_notify("decoration", {did2}) | ||||
| end) | ||||
|  | ||||
| minetest.register_on_generated(function(minp, maxp, blockseed) | ||||
| 	local g = minetest.get_mapgen_object("gennotify") | ||||
| 	local locations = {} | ||||
|  | ||||
| 	local deco_locations = g["decoration#" .. did2] or {} | ||||
| 	for _, pos in pairs(deco_locations) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
|  | ||||
| 	if #locations == 0 then return end | ||||
| 	for _, pos in ipairs(locations) do | ||||
| 		grow_youngtree2(pos) | ||||
| 	end | ||||
| end) | ||||
| 	"bushes:youngtrees", | ||||
| 	abstract_bushes.grow_youngtree2 | ||||
| ) | ||||
|   | ||||
| @@ -1,4 +1,10 @@ | ||||
| # textdomain: bushes | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
|  | ||||
| Young Tree 2 (bottom)=Strauch 2 (Ansatz) | ||||
| Bush Branches @1=Buschäste @1 | ||||
| Bush Leaves @1=Buschblätter @1 | ||||
|   | ||||
| @@ -1,4 +1,10 @@ | ||||
| # textdomain: bushes | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Jolesh, 2022. | ||||
|  | ||||
| Young Tree 2 (bottom)=Juna Arbo 2 (malsupro) | ||||
| Bush Branches @1=Arbustaj Branĉoj @1 | ||||
| Bush Leaves @1=Arbustaj Folioj @1 | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: bushes | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # fat115 <fat115@framasoft.org>, 2017. | ||||
| # | ||||
|  | ||||
| Young Tree 2 (bottom)=Arbuste 2 (bas) | ||||
| Bush Branches @1=Branches de buisson @1 | ||||
| Bush Leaves @1=Feuilles de buisson @1 | ||||
|   | ||||
| @@ -1,4 +1,10 @@ | ||||
| # textdomain: bushes | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
|  | ||||
| Young Tree 2 (bottom)= | ||||
| Bush Branches @1= | ||||
| Bush Leaves @1= | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| name = bushes | ||||
| title = Bushes | ||||
| depends = default | ||||
| optional_depends = stoneage, sumpf, ebiomes | ||||
| depends = default, biome_lib | ||||
| optional_depends = stoneage, sumpf | ||||
|   | ||||
| @@ -1,5 +1,17 @@ | ||||
| # Bush rarity (higher number -> higher probability) | ||||
| bushes.bush_rarity (Bush rarity) float 0.008 0.0001 1 | ||||
| #Bush rarity % | ||||
| bushes_bush_rarity (Bush rarity %) float 99.9 0 100 | ||||
|  | ||||
| # Youngtree rarity (higher number -> higher probability) | ||||
| bushes.youngtree_rarity (Youngtree rarity) float 0.006 0.0001 1 | ||||
| #How much the rarity is reduced by fertility % | ||||
| bushes_bush_rarity_fertility (Bush rarity fertility reduction %) float 1.5 0 100 | ||||
|  | ||||
| #Bush minimum fertility (-1 to +1) | ||||
| bushes_bush_fertility (Bush minimum fertility) float -0.7 -1 1 | ||||
|  | ||||
| #Youngtree (from bushes mod) rarity % | ||||
| bushes_youngtrees_rarity (Youngtree bush rarity %) float 100 0 100 | ||||
|  | ||||
| #How much the rarity is reduced by fertility % | ||||
| bushes_youngtrees_rarity_fertility (Youngtree bush rarity fertility reduction %) float 0.6 0 100 | ||||
|  | ||||
| #Youngtree (from bushes mod) minimum fertility (-1 to +1) | ||||
| bushes_youngtrees_fertility (Youngtree bush minimum fertility) float -0.5 -1 1 | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BlockBranch1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 72 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BlockBranch1L.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 33 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BlockBranch1R.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 39 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranches1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 52 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranches1sm.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 609 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranches1sm2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 620 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranches1sm3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 396 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranches1sm4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 540 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranchesCenter.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 285 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranchesSide1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 657 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/BushBranchesSide2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 693 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/blank.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 83 B | 
							
								
								
									
										
											BIN
										
									
								
								bushes/textures/old & unused/moretrees_pine_leaves3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 525 B | 
| @@ -33,12 +33,9 @@ end | ||||
|  | ||||
| -- override farming_plus strawberry and add food_ group | ||||
| if minetest.get_modpath("farming_plus") then | ||||
| 	local groups = table.copy(minetest.registered_items["farming_plus:strawberry_item"].groups) | ||||
| 	groups["food_strawberry"] = 1 | ||||
| 	groups["food_berry"] = 1 | ||||
|  | ||||
| 	minetest.override_item("farming_plus:strawberry_item", { | ||||
| 		groups = groups, | ||||
| 		groups = {food_strawberry = 1, food_berry = 1, flammable = 2}, | ||||
| 	}) | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ bushes_classic = {} | ||||
| local S = minetest.get_translator("bushes_classic") | ||||
|  | ||||
| bushes_classic.bushes = { | ||||
| 	"strawberry", | ||||
|   "strawberry", | ||||
| 	"blackberry", | ||||
| 	"blueberry", | ||||
| 	"raspberry", | ||||
| @@ -30,19 +30,12 @@ local modpath = minetest.get_modpath('bushes_classic') | ||||
| dofile(modpath..'/cooking.lua') | ||||
| dofile(modpath..'/nodes.lua') | ||||
|  | ||||
| local spawn_plants = bushes_classic.spawn_list | ||||
|  | ||||
| local function get_biome_data(pos, perlin_fertile) | ||||
| 	local fertility = perlin_fertile:get_2d({x=pos.x, y=pos.z}) | ||||
|  | ||||
| 	local data = minetest.get_biome_data(pos) | ||||
| 	-- Original values this method returned were +1 (lowest) to -1 (highest) | ||||
| 	-- so we need to convert the 0-100 range from get_biome_data() to that. | ||||
| 	return fertility, 1 - (data.heat / 100 * 2), 1 - (data.humidity / 100 * 2) | ||||
| end | ||||
|  | ||||
| minetest.register_abm({ | ||||
| 	nodenames = { | ||||
| biome_lib.register_active_spawner({ | ||||
| 	spawn_delay = 3600, | ||||
| 	spawn_plants = bushes_classic.spawn_list, | ||||
| 	avoid_radius = 10, | ||||
| 	spawn_chance = 100, | ||||
| 	spawn_surfaces = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"woodsoils:dirt_with_leaves_1", | ||||
| 		"woodsoils:grass_with_leaves_1", | ||||
| @@ -50,31 +43,16 @@ minetest.register_abm({ | ||||
| 		"farming:soil", | ||||
| 		"farming:soil_wet" | ||||
| 	}, | ||||
| 	interval = 3600, | ||||
| 	chance = 100, | ||||
| 	label = "[bushes_classic] spawn bushes", | ||||
| 	min_y = -16, | ||||
| 	max_y = 48, | ||||
| 	action = function(pos, node) | ||||
| 		local p_top = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 		local n_top = minetest.get_node_or_nil(p_top) | ||||
| 		if not n_top or n_top.name ~= "air" then return end | ||||
|  | ||||
| 		local perlin_fertile_area = minetest.get_perlin(545342534, 3, 0.6, 100) | ||||
|  | ||||
| 		local fertility, temperature, humidity = get_biome_data(pos, perlin_fertile_area) | ||||
|  | ||||
| 		local pos_biome_ok = fertility > -0.1 and temperature <= 0.15 and temperature >= -0.15 and humidity <= 0 and humidity >= -1 | ||||
| 		if not pos_biome_ok then return end | ||||
|  | ||||
| 		if minetest.find_node_near(p_top, 10 + math.random(-1.5,2), {"group:bush"}) then | ||||
| 			return -- Nodes to avoid are nearby | ||||
| 		end | ||||
|  | ||||
| 		local plant_to_spawn = spawn_plants[math.random(1, #spawn_plants)] | ||||
|  | ||||
| 		minetest.swap_node(p_top, {name = plant_to_spawn, param2 = 0}) | ||||
| 	end | ||||
| 	avoid_nodes = {"group:bush"}, | ||||
| 	seed_diff = 545342534, -- chosen by a fair mashing of the keyboard - guaranteed to be random :P | ||||
| 	plantlife_limit = -0.1, | ||||
| 	light_min = 10, | ||||
| 	temp_min = 0.15, -- approx 20C | ||||
| 	temp_max = -0.15, -- approx 35C | ||||
| 	humidity_min = 0, -- 50% RH | ||||
| 	humidity_max = -1, -- 100% RH | ||||
| }) | ||||
|  | ||||
| minetest.register_alias("bushes:basket_pies", "bushes:basket_strawberry") | ||||
|  | ||||
| print("[Bushes] Loaded.") | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Xanthin, 2017. | ||||
| # | ||||
|  | ||||
| Sugar=Zucker | ||||
| Strawberry=Erdbeere | ||||
| Raw Strawberry pie=Rohe Erdbeertorte | ||||
| Cooked Strawberry pie=Erdbeertorte | ||||
| Slice of Strawberry pie=Erdbeertortenstück | ||||
| Basket with Strawberry pies=Korb mit Erdbeertorten | ||||
| Cooked Strawberry pie=Erdbeertorte | ||||
| Raw Strawberry pie=Rohe Erdbeertorte | ||||
| Slice of Strawberry pie=Erdbeertortenstueck | ||||
| Strawberry=Erdbeere | ||||
| Strawberry Bush=Erdbeerbusch | ||||
| Blackberry=Brombeere | ||||
| Raw Blackberry pie=Rohe Brombeertorte | ||||
| Cooked Blackberry pie=Brombeertorte | ||||
| Slice of Blackberry pie=Brombeertortenstück | ||||
| Basket with Blackberry pies=Korb mit Brombeertorten | ||||
| Blackberry=Brombeere | ||||
| Blackberry Bush=Brombeerbusch | ||||
| Blueberry=Blaubeere | ||||
| Raw Blueberry pie=Rohe Blaubeertorte | ||||
| Cooked Blueberry pie=Blaubeertorte | ||||
| Slice of Blueberry pie=Blaubeertortenstück | ||||
| Cooked Blackberry pie=Brombeertorte | ||||
| Raw Blackberry pie=Rohe Brombeertorte | ||||
| Slice of Blackberry pie=Brombeertortenstueck | ||||
| Basket with Blueberry pies=Korb mit Blaubeertorten | ||||
| Blueberry=Blaubeere | ||||
| Blueberry Bush=Blaubeerbusch | ||||
| Raspberry=Himbeere | ||||
| Raw Raspberry pie=Rohe Himbeertorte | ||||
| Cooked Raspberry pie=Himbeertorte | ||||
| Slice of Raspberry pie=Himbeertortenstück | ||||
| Cooked Blueberry pie=Blaubeertorte | ||||
| Raw Blueberry pie=Rohe Blaubeertorte | ||||
| Slice of Blueberry pie=Blaubeertortenstueck | ||||
| Basket with Raspberry pies=Korb mit Himbeertorten | ||||
| Cooked Raspberry pie=Himbeertorte | ||||
| Raspberry=Himbeere | ||||
| Raspberry Bush=Himbeerbusch | ||||
| Gooseberry=Stachelbeere | ||||
| Raw Gooseberry pie=Rohe Stachelbeertorte | ||||
| Cooked Gooseberry pie=Stachelbeertorte | ||||
| Slice of Gooseberry pie=Stachelbeertortenstück | ||||
| Raw Raspberry pie=Rohe Himbeertorte | ||||
| Slice of Raspberry pie=Himbeertortenstueck | ||||
| Basket with Gooseberry pies=Korb mit Stachelbeertorten | ||||
| Cooked Gooseberry pie=Stachelbeertorte | ||||
| Gooseberry=Stachelbeere | ||||
| Gooseberry Bush=Stachelbeerbusch | ||||
| Raw Gooseberry pie=Rohe Stachelbeertorte | ||||
| Slice of Gooseberry pie=Stachelbeertortenstueck | ||||
| Basket with Mixed Berry pies=Korb mit Beerenmixtorten | ||||
| Cooked Mixed Berry pie=Beerenmixtorte | ||||
| Currently fruitless Bush=zur Zeit fruechteloser | ||||
| Mixed Berry=Beerenmix | ||||
| Raw Mixed Berry pie=Rohe Beerenmixtorte | ||||
| Cooked Mixed Berry pie=Beerenmixtorte | ||||
| Slice of Mixed Berry pie=Beerenmixtortenstück | ||||
| Basket with Mixed Berry pies=Korb mit Beerenmixtorten | ||||
| Currently fruitless Bush=Zur Zeit früchteloser Busch | ||||
| Slice of Mixed Berry pie=Beerenmixtortenstueck | ||||
| Basket=Korb | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Jolesh, 2022. | ||||
| # | ||||
|  | ||||
| Sugar=Sukero | ||||
| Strawberry=Frago | ||||
| Raw Strawberry pie=Kruda Fragokuko | ||||
| Cooked Strawberry pie=Kuirita Fragokuko | ||||
| Slice of Strawberry pie=Tranĉaĵo de Fragokuko | ||||
| Basket with Strawberry pies=Korbo kun Fragokukoj | ||||
| Cooked Strawberry pie=Kuirita Fragokuko | ||||
| Raw Strawberry pie=Kruda Fragokuko | ||||
| Slice of Strawberry pie=Tranĉaĵo de Fragokuko | ||||
| Strawberry=Frago | ||||
| Strawberry Bush=Fraga Arbusto | ||||
| Blackberry=Rubuso | ||||
| Raw Blackberry pie=Kruda Rubusokuko | ||||
| Cooked Blackberry pie=Kuirita Rubusokuko | ||||
| Slice of Blackberry pie=Tranĉaĵo de Rubusokuko | ||||
| Basket with Blackberry pies=Korbo kun Rubusokukoj | ||||
| Cooked Blackberry pie=Kuirita Rubusokuko | ||||
| Raw Blackberry pie=Kruda Rubusokuko | ||||
| Slice of Blackberry pie=Tranĉaĵo de Rubusokuko | ||||
| Blackberry=Rubuso | ||||
| Blackberry Bush=Rubusa Arbusto | ||||
| Blueberry=Mirtelo | ||||
| Raw Blueberry pie=Kruda Mirtelokuko | ||||
| Cooked Blueberry pie=Kuirita Mirtelokuko | ||||
| Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko | ||||
| Basket with Blueberry pies=Korbo kun Mirtelokukoj | ||||
| Blueberry=Mirtelo | ||||
| Blueberry Bush=Mirtela Arbusto | ||||
| Raspberry=Frambo | ||||
| Raw Raspberry pie=Kruda Frambokuko | ||||
| Cooked Raspberry pie=Kuirita Frambokuko | ||||
| Slice of Raspberry pie=Tranĉaĵo de Frambokuko | ||||
| Cooked Blueberry pie=Kuirita Mirtelokuko | ||||
| Raw Blueberry pie=Kruda Mirtelokuko | ||||
| Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko | ||||
| Basket with Raspberry pies=Korbo kun Frambokukoj | ||||
| Cooked Raspberry pie=Kuirita Frambokuko | ||||
| Raspberry=Frambo | ||||
| Raspberry Bush=Framba Arbusto | ||||
| Gooseberry=Grosbero | ||||
| Raw Gooseberry pie=Kruda Grosberkuko | ||||
| Cooked Gooseberry pie=Kuirita Grosberkuko | ||||
| Slice of Gooseberry pie=Tranĉaĵo de Grosberkuko | ||||
| Raw Raspberry pie=Kruda Frambokuko | ||||
| Slice of Raspberry pie=Tranĉaĵo de Frambokuko | ||||
| Basket with Gooseberry pies=Korbo kun Grosberkuko | ||||
| Cooked Gooseberry pie=Kuirita Grosberkuko | ||||
| Gooseberry=Grosbero | ||||
| Gooseberry Bush=Grosberarbusto | ||||
| Raw Gooseberry pie=Kruda Grosberkuko | ||||
| Slice of Gooseberry pie=Tranĉaĵo de Grosberkuko | ||||
| Basket with Mixed Berry pies=Korbo kun Miksitaj Beraj Kukoj | ||||
| Cooked Mixed Berry pie=Kuirita Miksa Beraj Kukoj | ||||
| Currently fruitless Bush=Nuntempe senfrukta Arbusto | ||||
| Mixed Berry=Miksita Bero | ||||
| Raw Mixed Berry pie=Kruda Miksita Bera Kuko | ||||
| Cooked Mixed Berry pie=Kuirita Miksa Beraj Kukoj | ||||
| Slice of Mixed Berry pie=Tranĉaĵo de Miksita Bera Kuko | ||||
| Basket with Mixed Berry pies=Korbo kun Miksitaj Beraj Kukoj | ||||
| Currently fruitless Bush=Nuntempe senfrukta Arbusto | ||||
| Basket=Korbo | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Carlos Barraza <carlosbarrazaes@gmail.com>, 2017. | ||||
| # | ||||
|  | ||||
| Sugar=Azúcar | ||||
| Strawberry=Frutilla | ||||
| Raw Strawberry pie=Pastel de Frutilla Crudo | ||||
| Cooked Strawberry pie=Pastel de Frutilla Cocido | ||||
| Slice of Strawberry pie=Rebanada de Pastel de Frutilla | ||||
| Basket with Strawberry pies=Cesta con Pasteles de Frutilla | ||||
| Cooked Strawberry pie=Pastel de Frutilla Cocido | ||||
| Raw Strawberry pie=Pastel de Frutilla Crudo | ||||
| Slice of Strawberry pie=Rebanada de Pastel de Frutilla | ||||
| Strawberry=Frutilla | ||||
| Strawberry Bush=Arbusto de Frutilla | ||||
| Blackberry=Mora | ||||
| Raw Blackberry pie=Pastel de Mora Crudo | ||||
| Cooked Blackberry pie=Pastel de Mora Cocido | ||||
| Slice of Blackberry pie=Rebanada de Pastel de Mora | ||||
| Basket with Blackberry pies=Cesta con Pasteles de Mora | ||||
| Blackberry=Mora | ||||
| Blackberry Bush=Arbusto de Mora | ||||
| Blueberry=Arándano | ||||
| Raw Blueberry pie=Pastel de Arándano Crudo | ||||
| Cooked Blueberry pie=Pastel de Arándano Cocido | ||||
| Slice of Blueberry pie=Rebanada de Pastel de Arándano | ||||
| Cooked Blackberry pie=Pastel de Mora Cocido | ||||
| Raw Blackberry pie=Pastel de Mora Crudo | ||||
| Slice of Blackberry pie=Rebanada de Pastel de Mora | ||||
| Basket with Blueberry pies=Cesta con Pasteles de Arándano | ||||
| Blueberry=Arándano | ||||
| Blueberry Bush=Arbusto de Arándano | ||||
| Raspberry=Frambuesa | ||||
| Raw Raspberry pie=Pastel de Frambuesa Crudo | ||||
| Cooked Raspberry pie=Pastel de Frambuesa Cocido | ||||
| Slice of Raspberry pie=Rebanada de Pastel de Frambuesa | ||||
| Cooked Blueberry pie=Pastel de Arándano Cocido | ||||
| Raw Blueberry pie=Pastel de Arándano Crudo | ||||
| Slice of Blueberry pie=Rebanada de Pastel de Arándano | ||||
| Basket with Raspberry pies=Cesta con Pasteles de Frambuesa | ||||
| Cooked Raspberry pie=Pastel de Frambuesa Cocido | ||||
| Raspberry=Frambuesa | ||||
| Raspberry Bush=Arbusto de Frambuesa | ||||
| Gooseberry=Grosella | ||||
| Raw Gooseberry pie=Pastel de Grosella Crudo | ||||
| Cooked Gooseberry pie=Pastel de Grosella Cocido | ||||
| Slice of Gooseberry pie=Rebanada de Pastel de Grosella | ||||
| Raw Raspberry pie=Pastel de Frambuesa Crudo | ||||
| Slice of Raspberry pie=Rebanada de Pastel de Frambuesa | ||||
| Basket with Gooseberry pies=Cesta con Pasteles de Grosella | ||||
| Cooked Gooseberry pie=Pastel de Grosella Cocido | ||||
| Gooseberry=Grosella | ||||
| Gooseberry Bush=Arbusto de Grosella | ||||
| Raw Gooseberry pie=Pastel de Grosella Crudo | ||||
| Slice of Gooseberry pie=Rebanada de Pastel de Grosella | ||||
| Basket with Mixed Berry pies=Cesta con Pasteles de Mezcla de Baya | ||||
| Cooked Mixed Berry pie=Pastel de Mezcla de Bayas Cocido | ||||
| Currently fruitless Bush=Arbusto actualmente infructuoso | ||||
| Mixed Berry=Mezcla de Baya | ||||
| Raw Mixed Berry pie=Pastel de Mezcla de Bayas Cruda | ||||
| Cooked Mixed Berry pie=Pastel de Mezcla de Bayas Cocido | ||||
| Slice of Mixed Berry pie=Rebanada de Pastel de Mezcla de Bayas | ||||
| Basket with Mixed Berry pies=Cesta con Pasteles de Mezcla de Baya | ||||
| Currently fruitless Bush=Arbusto actualmente infructuoso | ||||
| Basket=Cesta | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # fat115 <fat115@framasoft.org>, 2017. | ||||
| # | ||||
|  | ||||
| Sugar=Sucre | ||||
| Strawberry=Fraises | ||||
| Raw Strawberry pie=Tarte aux fraises (crue) | ||||
| Cooked Strawberry pie=Tarte aux fraises (cuite) | ||||
| Slice of Strawberry pie=Part de tarte aux fraises | ||||
| Basket with Strawberry pies=Panier de tartes aux fraises | ||||
| Cooked Strawberry pie=Tarte aux fraises (cuite) | ||||
| Raw Strawberry pie=Tarte aux fraises (crue) | ||||
| Slice of Strawberry pie=Part de tarte aux fraises | ||||
| Strawberry=Fraises | ||||
| Strawberry Bush=Buisson de fraises | ||||
| Blackberry=Mûres | ||||
| Raw Blackberry pie=Tarte aux mûres (crue) | ||||
| Cooked Blackberry pie=Tarte aux mûres (cuite) | ||||
| Slice of Blackberry pie=Part de tarte aux mûres | ||||
| Basket with Blackberry pies=Panier de tartes aux fraises | ||||
| Blackberry=Mûres | ||||
| Blackberry Bush=Buisson de mûres | ||||
| Blueberry=Myrtilles | ||||
| Raw Blueberry pie=Tarte aux myrtilles (crue) | ||||
| Cooked Blueberry pie=Tarte aux myrtilles (cuite) | ||||
| Slice of Blueberry pie=Part de tarte aux myrtilles | ||||
| Cooked Blackberry pie=Tarte aux mûres (cuite) | ||||
| Raw Blackberry pie=Tarte aux mûres (crue) | ||||
| Slice of Blackberry pie=Part de tarte aux mûres | ||||
| Basket with Blueberry pies=Panier de tartes aux mûres | ||||
| Blueberry=Myrtilles | ||||
| Blueberry Bush=Buisson de myrtilles | ||||
| Raspberry=Framboises | ||||
| Raw Raspberry pie=Tarte aux framboises (crue) | ||||
| Cooked Raspberry pie=Tarte aux framboises (cuite) | ||||
| Slice of Raspberry pie=Part de tarts aux framboises | ||||
| Cooked Blueberry pie=Tarte aux myrtilles (cuite) | ||||
| Raw Blueberry pie=Tarte aux myrtilles (crue) | ||||
| Slice of Blueberry pie=Part de tarte aux myrtilles | ||||
| Basket with Raspberry pies=Panier de tartes aux framboises | ||||
| Cooked Raspberry pie=Tarte aux framboises (cuite) | ||||
| Raspberry=Framboises | ||||
| Raspberry Bush=Buisson de framboises | ||||
| Gooseberry=Groseilles | ||||
| Raw Gooseberry pie=Tarte aux groseilles (crue) | ||||
| Cooked Gooseberry pie=Tarte aux groseilles (cuite) | ||||
| Slice of Gooseberry pie=Part de tarte aux groseilles | ||||
| Raw Raspberry pie=Tarte aux framboises (crue) | ||||
| Slice of Raspberry pie=Part de tarts aux framboises | ||||
| Basket with Gooseberry pies=Panier de tartes aux groseilles | ||||
| Cooked Gooseberry pie=Tarte aux groseilles (cuite) | ||||
| Gooseberry=Groseilles | ||||
| Gooseberry Bush=Buisson de groseilles | ||||
| Raw Gooseberry pie=Tarte aux groseilles (crue) | ||||
| Slice of Gooseberry pie=Part de tarte aux groseilles | ||||
| Basket with Mixed Berry pies=Panier de tartes aux fruits rouges | ||||
| Cooked Mixed Berry pie=Tarte aux fruits rouges (cuite) | ||||
| Currently fruitless Bush=Buisson sans fruits pour l'instant | ||||
| Mixed Berry=Fruits rouges | ||||
| Raw Mixed Berry pie=Tarte aux fruits rouges (crue) | ||||
| Cooked Mixed Berry pie=Tarte aux fruits rouges (cuite) | ||||
| Slice of Mixed Berry pie=Part de tarte aux fruits rouges | ||||
| Basket with Mixed Berry pies=Panier de tartes aux fruits rouges | ||||
| Currently fruitless Bush=Buisson sans fruits pour l'instant | ||||
| Basket=Panier | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # mahmutelmas06@hotmail.com, 2017. | ||||
| # | ||||
|  | ||||
| Sugar=Şeker | ||||
| Strawberry=Çilek | ||||
| Raw Strawberry pie=Çilekli çiğ pasta | ||||
| Cooked Strawberry pie=Pişmiş çilekli pasta  | ||||
| Slice of Strawberry pie=Çilekli pasta dilimi | ||||
| Basket with Strawberry pies=Çilekli pasta sepeti | ||||
| Cooked Strawberry pie=Pişmiş çilekli pasta  | ||||
| Raw Strawberry pie=Çilekli çiğ pasta | ||||
| Slice of Strawberry pie=Çilekli pasta dilimi | ||||
| Strawberry=Çilek | ||||
| Strawberry Bush=Çilek fidanı | ||||
| Blackberry=Böğürtlen | ||||
| Raw Blackberry pie=Böğürtlenli çiğ pasta | ||||
| Cooked Blackberry pie=Pişmiş böğürtlenli pasta | ||||
| Slice of Blackberry pie=Böğürtlenli pasta dilimi | ||||
| Basket with Blackberry pies=Böğürtlenli pasta sepeti | ||||
| Blackberry=Böğürtlen | ||||
| Blackberry Bush=Böğürtlen fidanı | ||||
| Blueberry=Yaban mersini | ||||
| Raw Blueberry pie=Yaban mersinli çiğ pasta | ||||
| Cooked Blueberry pie=Pişmiş yaban mersinli pasta | ||||
| Slice of Blueberry pie=Yaban mersinli pasta dilimi | ||||
| Cooked Blackberry pie=Pişmiş böğürtlenli pasta | ||||
| Raw Blackberry pie=Böğürtlenli çiğ pasta | ||||
| Slice of Blackberry pie=Böğürtlenli pasta dilimi | ||||
| Basket with Blueberry pies=Yaban mersini pastalı sepet | ||||
| Blueberry=Yaban mersini | ||||
| Blueberry Bush=Yaban mersini fidanı | ||||
| Raspberry=Ahududu | ||||
| Raw Raspberry pie=Ahududulu çiğ pasta | ||||
| Cooked Raspberry pie=Pişmiş ahududulu pasta | ||||
| Slice of Raspberry pie=Ahududulu pasta dilimi | ||||
| Cooked Blueberry pie=Pişmiş yaban mersinli pasta | ||||
| Raw Blueberry pie=Yaban mersinli çiğ pasta | ||||
| Slice of Blueberry pie=Yaban mersinli pasta dilimi | ||||
| Basket with Raspberry pies=Ahududulu pasta sepeti | ||||
| Cooked Raspberry pie=Pişmiş ahududulu pasta | ||||
| Raspberry=Ahududu | ||||
| Raspberry Bush=Ahududu fidanı | ||||
| Gooseberry=Bektaşi üzümü | ||||
| Raw Gooseberry pie=Bektaşi üzümlü çiğ pasta | ||||
| Cooked Gooseberry pie=Pişmiş bektaşi üzümlü pasta | ||||
| Slice of Gooseberry pie=Bektaşi üzümlü pasta dilimi | ||||
| Raw Raspberry pie=Ahududulu çiğ pasta | ||||
| Slice of Raspberry pie=Ahududulu pasta dilimi | ||||
| Basket with Gooseberry pies=Bektaşi üzümlü pasta sepeti | ||||
| Cooked Gooseberry pie=Pişmiş bektaşi üzümlü pasta | ||||
| Gooseberry=Bektaşi üzümü | ||||
| Gooseberry Bush=Bektaşi üzümü fidanı | ||||
| Raw Gooseberry pie=Bektaşi üzümlü çiğ pasta | ||||
| Slice of Gooseberry pie=Bektaşi üzümlü pasta dilimi | ||||
| Basket with Mixed Berry pies=Dutlu pasta sepeti | ||||
| Cooked Mixed Berry pie=Pişmiş dutlu pasta | ||||
| Currently fruitless Bush=Fidanı şu anda meyvesiz | ||||
| Mixed Berry=Dut | ||||
| Raw Mixed Berry pie=Dutlu çiğ pasta | ||||
| Cooked Mixed Berry pie=Pişmiş dutlu pasta | ||||
| Slice of Mixed Berry pie=Dutlu pasta dilimi | ||||
| Basket with Mixed Berry pies=Dutlu pasta sepeti | ||||
| Currently fruitless Bush=Fidanı şu anda meyvesiz | ||||
| Basket=Sepet | ||||
|   | ||||
| @@ -1,39 +1,46 @@ | ||||
| # textdomain: bushes_classic | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
|  | ||||
| Sugar= | ||||
| Strawberry= | ||||
| Raw Strawberry pie= | ||||
| Cooked Strawberry pie= | ||||
| Slice of Strawberry pie= | ||||
| Basket with Strawberry pies= | ||||
| Cooked Strawberry pie= | ||||
| Raw Strawberry pie= | ||||
| Slice of Strawberry pie= | ||||
| Strawberry= | ||||
| Strawberry Bush= | ||||
| Blackberry= | ||||
| Raw Blackberry pie= | ||||
| Cooked Blackberry pie= | ||||
| Slice of Blackberry pie= | ||||
| Basket with Blackberry pies= | ||||
| Blackberry= | ||||
| Blackberry Bush= | ||||
| Blueberry= | ||||
| Raw Blueberry pie= | ||||
| Cooked Blueberry pie= | ||||
| Slice of Blueberry pie= | ||||
| Cooked Blackberry pie= | ||||
| Raw Blackberry pie= | ||||
| Slice of Blackberry pie= | ||||
| Basket with Blueberry pies= | ||||
| Blueberry= | ||||
| Blueberry Bush= | ||||
| Raspberry= | ||||
| Raw Raspberry pie= | ||||
| Cooked Raspberry pie= | ||||
| Slice of Raspberry pie= | ||||
| Cooked Blueberry pie= | ||||
| Raw Blueberry pie= | ||||
| Slice of Blueberry pie= | ||||
| Basket with Raspberry pies= | ||||
| Cooked Raspberry pie= | ||||
| Raspberry= | ||||
| Raspberry Bush= | ||||
| Gooseberry= | ||||
| Raw Gooseberry pie= | ||||
| Cooked Gooseberry pie= | ||||
| Slice of Gooseberry pie= | ||||
| Raw Raspberry pie= | ||||
| Slice of Raspberry pie= | ||||
| Basket with Gooseberry pies= | ||||
| Cooked Gooseberry pie= | ||||
| Gooseberry= | ||||
| Gooseberry Bush= | ||||
| Raw Gooseberry pie= | ||||
| Slice of Gooseberry pie= | ||||
| Basket with Mixed Berry pies= | ||||
| Cooked Mixed Berry pie= | ||||
| Currently fruitless Bush= | ||||
| Mixed Berry= | ||||
| Raw Mixed Berry pie= | ||||
| Cooked Mixed Berry pie= | ||||
| Slice of Mixed Berry pie= | ||||
| Basket with Mixed Berry pies= | ||||
| Currently fruitless Bush= | ||||
| Basket= | ||||
|   | ||||
| @@ -1,2 +1,3 @@ | ||||
| name = bushes_classic | ||||
| depends = biome_lib | ||||
| optional_depends = farming, farming_plus | ||||
|   | ||||
| @@ -159,16 +159,21 @@ for i, bush_name in ipairs(bushes_classic.bushes) do | ||||
| 		paramtype2 = "facedir", | ||||
| 		on_use = minetest.item_eat(18), | ||||
| 		groups = { dig_immediate = 3 }, | ||||
| 		is_ground_content = false, | ||||
| 	}) | ||||
|  | ||||
| 	local texture_top, texture_bottom | ||||
|  | ||||
| 	local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1} | ||||
| 	if bush_name == "mixed_berry" then | ||||
| 		bush_name = "fruitless"; | ||||
| 		texture_top = "bushes_fruitless_bush_top.png" | ||||
| 		texture_bottom = "bushes_fruitless_bush_bottom.png" | ||||
| 		groups.not_in_creative_inventory = 1 | ||||
| 	else | ||||
| 		texture_top = "bushes_bush_top.png" | ||||
| 		texture_bottom = "bushes_bush_bottom.png" | ||||
| 	end | ||||
|  | ||||
| 	 | ||||
| 	local node_dig_prediction | ||||
| 	local node_placement_prediction | ||||
| 	if bush_name ~= "fruitless" then | ||||
| @@ -211,5 +216,4 @@ minetest.register_node(":bushes:basket_empty", { | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
|     groups = { dig_immediate = 3 }, | ||||
| 	is_ground_content = false, | ||||
| }) | ||||
|   | ||||
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.9 KiB | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 8.9 KiB | 
| Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 9.0 KiB | 
| Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 7.7 KiB | 
| Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 9.1 KiB | 
| Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 9.0 KiB | 
| Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 8.9 KiB | 
| @@ -1,2 +1,17 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| local title		= "Cave Stuff" | ||||
| local version	= "0.0.3" | ||||
| local mname		= "cavestuff" | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- support for i18n | ||||
| local S = minetest.get_translator("cavestuff") | ||||
|  | ||||
| cavestuff = {} | ||||
|  | ||||
| dofile(minetest.get_modpath("cavestuff").."/nodes.lua") | ||||
| dofile(minetest.get_modpath("cavestuff").."/mapgen.lua") | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: cavestuff | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # reusityback, 2022. | ||||
| # | ||||
|  | ||||
| Pebble=Kieselstein | ||||
| Desert Pebble=Wüstenkiesel | ||||
| Stalactite=Stalaktit | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: cavestuff | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Jolesh, 2022. | ||||
| # | ||||
|  | ||||
| Pebble=Ŝtoneto | ||||
| Desert Pebble=Dezerta Ŝtoneto | ||||
| Stalactite=Stalaktito | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: cavestuff | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # fat115 <fat115@framasoft.org>, 2017. | ||||
| # | ||||
|  | ||||
| Pebble=Caillou | ||||
| Desert Pebble=Caillou du désert | ||||
| Stalactite=Stalactite | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: cavestuff | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
|  | ||||
| Pebble= | ||||
| Desert Pebble= | ||||
| Stalactite= | ||||
|   | ||||
| @@ -62,4 +62,4 @@ minetest.register_decoration({ | ||||
| 	param2_max = 3, | ||||
| 	y_min = -16, | ||||
| 	y_max = 48 | ||||
| }) | ||||
| }) | ||||
|   | ||||
| @@ -1,2 +1,2 @@ | ||||
| name = cavestuff | ||||
| depends = default | ||||
| depends = default,biome_lib | ||||
|   | ||||
| @@ -12,32 +12,33 @@ minetest.register_node("cavestuff:pebble_1",{ | ||||
| 	description = S("Pebble"), | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "cavestuff_pebble.obj", | ||||
| 	tiles = {"undergrowth_pebble.png"}, | ||||
| 	paramtype = "light", | ||||
| 	 tiles = {"undergrowth_pebble.png"}, | ||||
| 	 paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3}, | ||||
| 	selection_box = cbox, | ||||
| 	collision_box = cbox, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1}, | ||||
| 	 selection_box = cbox, | ||||
| 	 collision_box = cbox, | ||||
| 	 on_place = function(itemstack, placer, pointed_thing) | ||||
| 		-- place a random pebble node | ||||
| 		local stack = ItemStack("cavestuff:pebble_"..math.random(1,2)) | ||||
| 		local ret = minetest.item_place(stack, placer, pointed_thing) | ||||
| 		return ItemStack("cavestuff:pebble_1 "..itemstack:get_count()-(1-ret:get_count())) | ||||
| 	end, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	 sounds = default.node_sound_stone_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("cavestuff:pebble_2",{ | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "cavestuff_pebble.obj", | ||||
| 	tiles = {"undergrowth_pebble.png"}, | ||||
| 	 tiles = {"undergrowth_pebble.png"}, | ||||
| 	drop = "cavestuff:pebble_1", | ||||
| 	paramtype = "light", | ||||
| 	 tiles = {"undergrowth_pebble.png"}, | ||||
| 	 paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3}, | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1}, | ||||
| 	selection_box = cbox, | ||||
| 	collision_box = cbox, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	 sounds = default.node_sound_stone_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("cavestuff:desert_pebble_1",{ | ||||
| @@ -47,7 +48,7 @@ minetest.register_node("cavestuff:desert_pebble_1",{ | ||||
| 	 tiles = {"default_desert_stone.png"}, | ||||
| 	 paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3}, | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1}, | ||||
| 	selection_box = cbox, | ||||
| 	collision_box = cbox, | ||||
| 	 on_place = function(itemstack, placer, pointed_thing) | ||||
| @@ -66,7 +67,7 @@ minetest.register_node("cavestuff:desert_pebble_2",{ | ||||
| 	 tiles = {"default_desert_stone.png"}, | ||||
| 	 paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3}, | ||||
| 	 groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1}, | ||||
| 	selection_box = cbox, | ||||
| 	collision_box = cbox, | ||||
| 	 sounds = default.node_sound_stone_defaults(), | ||||
| @@ -78,7 +79,6 @@ minetest.register_node("cavestuff:stalactite_1",{ | ||||
| 	drawtype="nodebox", | ||||
| 	tiles = {"undergrowth_pebble.png"}, | ||||
| 	groups = {cracky=3,attached_node=1}, | ||||
| 	is_ground_content = false, | ||||
| 	description = S("Stalactite"), | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| @@ -100,7 +100,7 @@ minetest.register_node("cavestuff:stalactite_1",{ | ||||
| 		if not placer then return end | ||||
| 		local playername = placer:get_player_name() | ||||
| 		if minetest.is_protected(place, playername) | ||||
| 		or minetest.is_protected(above, playername) then | ||||
| 		or minetest.is_protected(above, playername) then  | ||||
| 			minetest.record_protection_violation(place, playername) | ||||
| 			return | ||||
| 		end | ||||
| @@ -113,7 +113,7 @@ minetest.register_node("cavestuff:stalactite_1",{ | ||||
| 				name = "cavestuff:stalactite_"..math.random(1,3), | ||||
| 				param2 = minetest.dir_to_wallmounted(vector.multiply(dir, -1)) | ||||
| 			}) | ||||
| 			if not minetest.is_creative_enabled(playername) then | ||||
| 			if not minetest.setting_getbool("creative_mode") then | ||||
| 				itemstack:take_item() | ||||
| 			end | ||||
| 		end | ||||
| @@ -125,7 +125,6 @@ minetest.register_node("cavestuff:stalactite_2",{ | ||||
| 	drawtype="nodebox", | ||||
| 	tiles = {"undergrowth_pebble.png"}, | ||||
| 	groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = "cavestuff:stalactite_1", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| @@ -144,7 +143,6 @@ minetest.register_node("cavestuff:stalactite_3",{ | ||||
| 	drawtype="nodebox", | ||||
| 	tiles = {"undergrowth_pebble.png"}, | ||||
| 	groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = "cavestuff:stalactite_1", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| @@ -158,3 +156,5 @@ minetest.register_node("cavestuff:stalactite_3",{ | ||||
| 		} | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| --Stalagmites | ||||
|   | ||||
| @@ -53,7 +53,7 @@ minetest.register_craft({ | ||||
| 		{"default:stick",""} | ||||
| 	} | ||||
| }) | ||||
| if minetest.get_modpath("flint") then | ||||
| if minetest.get_modpath("flint") ~= nil then | ||||
| 	minetest.register_craft({ | ||||
| 		output = "dryplants:sickle", | ||||
| 		recipe = { | ||||
| @@ -63,7 +63,7 @@ if minetest.get_modpath("flint") then | ||||
| 		} | ||||
| 	}) | ||||
| end | ||||
| if minetest.get_modpath("stoneage") then | ||||
| if minetest.get_modpath("stoneage") ~= nil then | ||||
| 	minetest.register_craft({ | ||||
| 		output = "dryplants:sickle", | ||||
| 		recipe = { | ||||
|   | ||||
| @@ -1,15 +1,33 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| local title		= "Grasses" -- former "Dry plants" | ||||
| local version	= "0.1.5" | ||||
| local mname		= "dryplants" | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- by Mossmanikin | ||||
| -- textures & ideas partly by Neuromancer | ||||
|  | ||||
| -- Contains code from:		default, farming | ||||
| -- Looked at code from:		darkage, sickle, stairs | ||||
| -- Dependencies:			default, farming, biome_lib | ||||
| -- Supports: | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| abstract_dryplants = {} | ||||
|  | ||||
| -- support for i18n | ||||
| local S = minetest.get_translator("dryplants") | ||||
|  | ||||
| abstract_dryplants = {} | ||||
|  | ||||
| dofile(minetest.get_modpath("dryplants").."/crafting.lua") | ||||
| dofile(minetest.get_modpath("dryplants").."/settings.txt") | ||||
| dofile(minetest.get_modpath("dryplants").."/reed.lua") | ||||
|  | ||||
| if REEDMACE_GENERATES == true then | ||||
| dofile(minetest.get_modpath("dryplants").."/reedmace.lua") | ||||
| end | ||||
| if SMALL_JUNCUS_GENERATES == true then | ||||
| dofile(minetest.get_modpath("dryplants").."/juncus.lua") | ||||
| end | ||||
| if EXTRA_TALL_GRASS_GENERATES == true then | ||||
| dofile(minetest.get_modpath("dryplants").."/moregrass.lua") | ||||
|  | ||||
| end | ||||
| --dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua") | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| @@ -119,7 +137,6 @@ minetest.register_node("dryplants:grass", { | ||||
|         fixed = {-0.5   , -0.5   , -0.5   ,   0.5   , -0.4375,  0.5   }, | ||||
|     }, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -128,7 +145,7 @@ minetest.register_node("dryplants:grass", { | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"dryplants:grass"}, | ||||
| 	interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 	interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 	chance = 1, | ||||
| 	action = function(pos) | ||||
| 		minetest.swap_node(pos, {name="dryplants:hay"}) | ||||
| @@ -152,7 +169,6 @@ minetest.register_node("dryplants:hay", { | ||||
|         fixed = {-0.5   , -0.5   , -0.5   ,   0.5   , -0.4375,  0.5   }, | ||||
|     }, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -175,8 +191,8 @@ minetest.register_node("dryplants:grass_short", { | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"dryplants:grass_short"}, | ||||
| 	interval = 1200, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 	chance = 100/1200, | ||||
| 	interval = GRASS_REGROWING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 	chance = 100/GRASS_REGROWING_CHANCE, | ||||
| 	action = function(pos) | ||||
| 		-- Only become dirt with grass if no cut grass or hay lies on top | ||||
| 		local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}) | ||||
| @@ -185,3 +201,7 @@ minetest.register_abm({ | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|   | ||||
| @@ -1,12 +1,21 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Grasses - Juncus 0.0.5 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- by Mossmanikin | ||||
| -- textures & ideas partly by Neuromancer | ||||
|  | ||||
| -- Contains code from:		biome_lib | ||||
| -- Looked at code from:		default | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- support for i18n | ||||
| local S = minetest.get_translator("dryplants") | ||||
|  | ||||
| local function grow_juncus(pos) | ||||
| abstract_dryplants.grow_juncus = function(pos) | ||||
| 	local juncus_type = math.random(2,3) | ||||
| 	local right_here = {x=pos.x, y=pos.y+1, z=pos.z} | ||||
|  | ||||
| 	local nodename = minetest.get_node(right_here).name | ||||
| 	if nodename == "air" or nodename == "default:junglegrass" then | ||||
| 	if minetest.get_node(right_here).name == "air"  -- instead of check_air = true, | ||||
| 	or minetest.get_node(right_here).name == "default:junglegrass" then | ||||
| 		if juncus_type == 2 then | ||||
| 			minetest.swap_node(right_here, {name="dryplants:juncus_02"}) | ||||
| 		else | ||||
| @@ -37,10 +46,6 @@ minetest.register_node("dryplants:juncus", { | ||||
| 		fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, | ||||
| 	}, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		if not itemstack or not placer or not pointed_thing then | ||||
| 			return | ||||
| 		end | ||||
|  | ||||
| 		local playername = placer:get_player_name() | ||||
| 		if minetest.is_protected(pointed_thing.above, playername) or | ||||
| 			minetest.is_protected(pointed_thing.under, playername) then | ||||
| @@ -55,13 +60,12 @@ minetest.register_node("dryplants:juncus", { | ||||
| 		else | ||||
| 			minetest.swap_node(right_here, {name="dryplants:juncus"}) | ||||
| 		end | ||||
| 		if not minetest.is_creative_enabled(playername) then | ||||
| 		if not minetest.setting_getbool("creative_mode") then | ||||
| 			itemstack:take_item() | ||||
| 		end | ||||
| 		return itemstack | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("dryplants:juncus_02", { | ||||
| 	description = S("Juncus"), | ||||
| 	drawtype = "plantlike", | ||||
| @@ -88,69 +92,42 @@ minetest.register_node("dryplants:juncus_02", { | ||||
| -- GENERATE SMALL JUNCUS | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- near water or swamp | ||||
| minetest.register_decoration({ | ||||
| 	name = "dryplants:juncus_water", | ||||
| 	decoration = {"air"}, | ||||
| 	fill_ratio = 0.16, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			--"default:desert_sand", | ||||
| 			--"default:sand", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:peat", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({max_count = JUNCUS_NEAR_WATER_PER_MAPBLOCK, rarity = 101 - JUNCUS_NEAR_WATER_RARITY}), | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| 	spawn_by = { | ||||
| 		"default:water_source", | ||||
| 		"sumpf:dirtywater_source", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	check_offset = -1, | ||||
| 	num_spawn_by = 1 | ||||
| }) | ||||
|  | ||||
| 	"dryplants:juncus_near_water", | ||||
| 	abstract_dryplants.grow_juncus | ||||
| ) | ||||
| -- at dunes/beach | ||||
| minetest.register_decoration({ | ||||
| 	name = "dryplants:juncus_beach", | ||||
| 	decoration = {"air"}, | ||||
| 	fill_ratio = 0.08, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:sand", | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			--"default:dirt_with_grass", | ||||
| 			--"default:desert_sand", | ||||
| 			"default:sand", | ||||
| 			--"stoneage:grass_with_silex", | ||||
| 			--"sumpf:peat", | ||||
| 			--"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({max_count = JUNCUS_AT_BEACH_PER_MAPBLOCK, rarity = 101 - JUNCUS_AT_BEACH_RARITY}), | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"default:dirt_with_grass"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| 	spawn_by = {"default:dirt_with_grass"}, | ||||
| 	check_offset = -1, | ||||
| 	num_spawn_by = 1 | ||||
| }) | ||||
|  | ||||
| local did, did2 | ||||
| minetest.register_on_mods_loaded(function() | ||||
| 	did = minetest.get_decoration_id("dryplants:juncus_water") | ||||
| 	did2 = minetest.get_decoration_id("dryplants:juncus_beach") | ||||
| 	minetest.set_gen_notify("decoration", {did, did2}) | ||||
| end) | ||||
|  | ||||
| minetest.register_on_generated(function(minp, maxp, blockseed) | ||||
| 	local g = minetest.get_mapgen_object("gennotify") | ||||
| 	local locations = {} | ||||
|  | ||||
| 	local deco_locations_1 = g["decoration#" .. did] or {} | ||||
| 	local deco_locations_2 = g["decoration#" .. did2] or {} | ||||
|  | ||||
| 	for _, pos in pairs(deco_locations_1) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
| 	for _, pos in pairs(deco_locations_2) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
|  | ||||
| 	if #locations == 0 then return end | ||||
| 	for _, pos in ipairs(locations) do | ||||
| 		grow_juncus(pos) | ||||
| 	end | ||||
| end) | ||||
| 	"dryplants:junces_at_beach", | ||||
| 	abstract_dryplants.grow_juncus | ||||
| ) | ||||
|   | ||||
| @@ -1,18 +1,25 @@ | ||||
| # textdomain: dryplants | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # reusityback, 2022. | ||||
| # | ||||
|  | ||||
| Sickle=Sichel | ||||
| Cut Grass=Grasschnitt | ||||
| Cut Grass=Gras schneiden | ||||
| Hay=Heu | ||||
| Short Grass=Kurzes Gras | ||||
| Juncus=Binsen | ||||
| Wet Reed=Nasses Schilf | ||||
| Wet Reed Slab=Nasse Schilfplatte | ||||
| Wet Reed Slab=Nasse Schilfstufe | ||||
| Wet Reed Roof=Nasses Schilfdach | ||||
| Wet Reed Roof Corner 1=Nasser Schilfdachwinkel 1 | ||||
| Wet Reed Roof Corner=Nasser Schilfdachwinkel | ||||
| Wet Reed Roof Corner 2=Nasser Schilfdachwinkel 2 | ||||
| Reed=Schilf | ||||
| Reed Slab=Schilfstufe | ||||
| Reed Roof=Schilfdach | ||||
| Reed Roof Corner 1=Schilfdachwinkel 1 | ||||
| Reed Roof Corner=Schilfdachwinkel | ||||
| Reed Roof Corner 2=Schilfdachwinkel | ||||
| Reedmace=Rohrkolben | ||||
| Reedmace, height: 1=Rohrkolben, Höhe: 1 | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: dryplants | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Jolesh, 2022. | ||||
| # | ||||
|  | ||||
| Sickle= | ||||
| Cut Grass=Tranĉita Herbenon | ||||
| Hay=Fojno | ||||
| @@ -7,12 +14,12 @@ Juncus=Junko | ||||
| Wet Reed=Malseka Kano | ||||
| Wet Reed Slab=Slabo de Malseka Kano | ||||
| Wet Reed Roof=Tegmento de Malseka Kano | ||||
| Wet Reed Roof Corner 1=Tegmentangulo 1 de Malseka Kano | ||||
| Wet Reed Roof Corner=Tegmentangulo de Malseka Kano | ||||
| Wet Reed Roof Corner 2=Tegmentangulo 2 de Malseka Kano | ||||
| Reed=Kano | ||||
| Reed Slab=Slabo de Kano | ||||
| Reed Roof=Tegmento de Kano | ||||
| Reed Roof Corner 1=Tegmentangulo 1 de Kano | ||||
| Reed Roof Corner=Tegmentangulo de Kano | ||||
| Reed Roof Corner 2=Tegmentangulo 2 de Kano | ||||
| Reedmace=Tifeo | ||||
| Reedmace, height: 1=Tifeo, alteco: 1 | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: dryplants | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # fat115 <fat115@framasoft.org>, 2017. | ||||
| # | ||||
|  | ||||
| Sickle=Faucille | ||||
| Cut Grass=Herbe coupée | ||||
| Hay=Foin | ||||
| @@ -7,12 +14,12 @@ Juncus=Joncs | ||||
| Wet Reed=Bloc de roseau humide | ||||
| Wet Reed Slab=Dalle en roseau humide | ||||
| Wet Reed Roof=Toit en roseau humide | ||||
| Wet Reed Roof Corner 1=Angle de toit en roseau humide 1 | ||||
| Wet Reed Roof Corner=Angle de toit en roseau humide | ||||
| Wet Reed Roof Corner 2=Angle de toit en roseau humide 2 | ||||
| Reed=Roseau | ||||
| Reed Slab=Dalle en roseau | ||||
| Reed Roof=Toit en roseau | ||||
| Reed Roof Corner 1=Angle de toit en roseau 1 | ||||
| Reed Roof Corner=Angle de toit en roseau | ||||
| Reed Roof Corner 2=Angle de toit en roseau 2 | ||||
| Reedmace=Roseau | ||||
| Reedmace, height: 1=Roseau, 1 de hauteur | ||||
|   | ||||
| @@ -1,4 +1,11 @@ | ||||
| # textdomain: dryplants | ||||
|  | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
|  | ||||
| Sickle= | ||||
| Cut Grass= | ||||
| Hay= | ||||
| @@ -7,12 +14,12 @@ Juncus= | ||||
| Wet Reed= | ||||
| Wet Reed Slab= | ||||
| Wet Reed Roof= | ||||
| Wet Reed Roof Corner 1= | ||||
| Wet Reed Roof Corner= | ||||
| Wet Reed Roof Corner 2= | ||||
| Reed= | ||||
| Reed Slab= | ||||
| Reed Roof= | ||||
| Reed Roof Corner 1= | ||||
| Reed Roof Corner= | ||||
| Reed Roof Corner 2= | ||||
| Reedmace= | ||||
| Reedmace, height: 1= | ||||
|   | ||||
| @@ -1,12 +1,24 @@ | ||||
| -- @reviewer: couldn't even find using biome_lib | ||||
| minetest.register_decoration({ | ||||
| 	decoration = {"dryplants:grass_short"}, | ||||
| 	fill_ratio = 0.8, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors" | ||||
| }) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Grasses - Meadow Variation 0.0.1 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- by Mossmanikin | ||||
|  | ||||
| -- Contains code from:		biome_lib | ||||
| -- Looked at code from:		default | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| abstract_dryplants.grow_grass_variation = function(pos) | ||||
| 	local right_here = {x=pos.x, y=pos.y, z=pos.z} | ||||
| 	minetest.swap_node(right_here, {name="dryplants:grass_short"}) | ||||
| end | ||||
|  | ||||
| pl.register_on_generate({ | ||||
|     surface = { | ||||
|       "default:dirt_with_grass", | ||||
|     }, | ||||
|     noise_params = pl.generate_noise_params({max_count = 4800, rarity = 25}), | ||||
|     min_elevation = 1, -- above sea level | ||||
|   }, | ||||
|   "dryplants:grass", | ||||
|   abstract_dryplants.grow_grass_variation | ||||
| ) | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| name = dryplants | ||||
| depends = default | ||||
| optional_depends = farming, ebiomes | ||||
| depends = default, biome_lib | ||||
| optional_depends = farming | ||||
|   | ||||
| @@ -1,3 +1,12 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Grasses - More Tall Grass 0.0.2 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- by Mossmanikin | ||||
|  | ||||
| -- Contains code from:		biome_lib | ||||
| -- Looked at code from:		default | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| minetest.register_decoration({ | ||||
| 	decoration = { | ||||
| 		"default:grass_1", | ||||
| @@ -6,15 +15,15 @@ minetest.register_decoration({ | ||||
| 		"default:grass_4", | ||||
| 		"default:grass_5" | ||||
| 	}, | ||||
| 	fill_ratio = 0.8, | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	noise_params = pl.generate_noise_params({max_count = TALL_GRASS_PER_MAPBLOCK, rarity = 101 - TALL_GRASS_RARITY}), | ||||
| 	flags = "all_floors", | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors" | ||||
| }) | ||||
| 	y_min = 1, | ||||
| 	y_max = 48 | ||||
| }) | ||||
| @@ -44,7 +44,6 @@ minetest.register_node("dryplants:wetreed_slab", { | ||||
| 		fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2}, | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -73,107 +72,109 @@ minetest.register_node("dryplants:wetreed_roof", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| local CoRNeR = { | ||||
| if AUTO_ROOF_CORNER == true then | ||||
|  | ||||
| 	local CoRNeR = { | ||||
| --		  MaTeRiaL | ||||
| 	{"wetreed"}, | ||||
| 	{"reed"} | ||||
| } | ||||
| 		{"wetreed"}, | ||||
| 		{"reed"} | ||||
| 	} | ||||
|  | ||||
| for i in pairs(CoRNeR) do | ||||
| 	for i in pairs(CoRNeR) do | ||||
|  | ||||
| 	local MaTeRiaL = CoRNeR[i][1] | ||||
| 	local roof = "dryplants:"..MaTeRiaL.."_roof" | ||||
| 	local corner = "dryplants:"..MaTeRiaL.."_roof_corner" | ||||
| 	local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2" | ||||
| 		local MaTeRiaL = CoRNeR[i][1] | ||||
| 		local roof = "dryplants:"..MaTeRiaL.."_roof" | ||||
| 		local corner = "dryplants:"..MaTeRiaL.."_roof_corner" | ||||
| 		local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2" | ||||
|  | ||||
| 	minetest.register_abm({ | ||||
| 		nodenames = {roof}, | ||||
| 		interval = 1, | ||||
| 		chance = 1, | ||||
| 		action = function(pos) | ||||
| 		minetest.register_abm({ | ||||
| 			nodenames = {roof}, | ||||
| 			interval = 1, | ||||
| 			chance = 1, | ||||
| 			action = function(pos) | ||||
|  | ||||
| 			local node_east =			minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z  }) | ||||
| 			local node_west =			minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z  }) | ||||
| 			local node_north =			minetest.get_node({x=pos.x,   y=pos.y, z=pos.z+1}) | ||||
| 			local node_south =			minetest.get_node({x=pos.x,   y=pos.y, z=pos.z-1}) | ||||
| 	-- corner 1 | ||||
| 			if ((node_west.name == roof and node_west.param2 == 0) | ||||
| 			or (node_west.name == corner and node_west.param2 == 1)) | ||||
| 			and ((node_north.name == roof and node_north.param2 == 3) | ||||
| 			or (node_north.name == corner and node_north.param2 == 3)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner, param2=0}) | ||||
| 			end | ||||
| 				local node_east =			minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z  }) | ||||
| 				local node_west =			minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z  }) | ||||
| 				local node_north =			minetest.get_node({x=pos.x,   y=pos.y, z=pos.z+1}) | ||||
| 				local node_south =			minetest.get_node({x=pos.x,   y=pos.y, z=pos.z-1}) | ||||
| 		-- corner 1 | ||||
| 				if ((node_west.name == roof and node_west.param2 == 0) | ||||
| 				or (node_west.name == corner and node_west.param2 == 1)) | ||||
| 				and ((node_north.name == roof and node_north.param2 == 3) | ||||
| 				or (node_north.name == corner and node_north.param2 == 3)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner, param2=0}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_north.name == roof and node_north.param2 == 1) | ||||
| 			or (node_north.name == corner and node_north.param2 == 2)) | ||||
| 			and ((node_east.name == roof and node_east.param2 == 0) | ||||
| 			or (node_east.name == corner and node_east.param2 == 0)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner, param2=1}) | ||||
| 			end | ||||
| 				if ((node_north.name == roof and node_north.param2 == 1) | ||||
| 				or (node_north.name == corner and node_north.param2 == 2)) | ||||
| 				and ((node_east.name == roof and node_east.param2 == 0) | ||||
| 				or (node_east.name == corner and node_east.param2 == 0)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner, param2=1}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_east.name == roof and node_east.param2 == 2) | ||||
| 			or (node_east.name == corner and node_east.param2 == 3)) | ||||
| 			and ((node_south.name == roof and node_south.param2 == 1) | ||||
| 			or (node_south.name == corner and node_south.param2 == 1)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner, param2=2}) | ||||
| 			end | ||||
| 				if ((node_east.name == roof and node_east.param2 == 2) | ||||
| 				or (node_east.name == corner and node_east.param2 == 3)) | ||||
| 				and ((node_south.name == roof and node_south.param2 == 1) | ||||
| 				or (node_south.name == corner and node_south.param2 == 1)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner, param2=2}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_south.name == roof and node_south.param2 == 3) | ||||
| 			or (node_south.name == corner and node_south.param2 == 0)) | ||||
| 			and ((node_west.name == roof and node_west.param2 == 2) | ||||
| 			or (node_west.name == corner and node_west.param2 == 2)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner, param2=3}) | ||||
| 			end | ||||
| 	-- corner 2 | ||||
| 			if ((node_west.name == roof and node_west.param2 == 2) | ||||
| 			or (node_west.name == corner_2 and node_west.param2 == 1)) | ||||
| 			and ((node_north.name == roof and node_north.param2 == 1) | ||||
| 			or (node_north.name == corner_2 and node_north.param2 == 3)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner_2, param2=0}) | ||||
| 			end | ||||
| 				if ((node_south.name == roof and node_south.param2 == 3) | ||||
| 				or (node_south.name == corner and node_south.param2 == 0)) | ||||
| 				and ((node_west.name == roof and node_west.param2 == 2) | ||||
| 				or (node_west.name == corner and node_west.param2 == 2)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner, param2=3}) | ||||
| 				end | ||||
| 		-- corner 2 | ||||
| 				if ((node_west.name == roof and node_west.param2 == 2) | ||||
| 				or (node_west.name == corner_2 and node_west.param2 == 1)) | ||||
| 				and ((node_north.name == roof and node_north.param2 == 1) | ||||
| 				or (node_north.name == corner_2 and node_north.param2 == 3)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner_2, param2=0}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_north.name == roof and node_north.param2 == 3) | ||||
| 			or (node_north.name == corner_2 and node_north.param2 == 2)) | ||||
| 			and ((node_east.name == roof and node_east.param2 == 2) | ||||
| 			or (node_east.name == corner_2 and node_east.param2 == 0)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner_2, param2=1}) | ||||
| 			end | ||||
| 				if ((node_north.name == roof and node_north.param2 == 3) | ||||
| 				or (node_north.name == corner_2 and node_north.param2 == 2)) | ||||
| 				and ((node_east.name == roof and node_east.param2 == 2) | ||||
| 				or (node_east.name == corner_2 and node_east.param2 == 0)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner_2, param2=1}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_east.name == roof and node_east.param2 == 0) | ||||
| 			or (node_east.name == corner_2 and node_east.param2 == 3)) | ||||
| 			and ((node_south.name == roof and node_south.param2 == 3) | ||||
| 			or (node_south.name == corner_2 and node_south.param2 == 1)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner_2, param2=2}) | ||||
| 			end | ||||
| 				if ((node_east.name == roof and node_east.param2 == 0) | ||||
| 				or (node_east.name == corner_2 and node_east.param2 == 3)) | ||||
| 				and ((node_south.name == roof and node_south.param2 == 3) | ||||
| 				or (node_south.name == corner_2 and node_south.param2 == 1)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner_2, param2=2}) | ||||
| 				end | ||||
|  | ||||
| 			if ((node_south.name == roof and node_south.param2 == 1) | ||||
| 			or (node_south.name == corner_2 and node_south.param2 == 0)) | ||||
| 			and ((node_west.name == roof and node_west.param2 == 0) | ||||
| 			or (node_west.name == corner_2 and node_west.param2 == 2)) | ||||
| 			then | ||||
| 				minetest.swap_node(pos, {name=corner_2, param2=3}) | ||||
| 			end | ||||
| 				if ((node_south.name == roof and node_south.param2 == 1) | ||||
| 				or (node_south.name == corner_2 and node_south.param2 == 0)) | ||||
| 				and ((node_west.name == roof and node_west.param2 == 0) | ||||
| 				or (node_west.name == corner_2 and node_west.param2 == 2)) | ||||
| 				then | ||||
| 					minetest.swap_node(pos, {name=corner_2, param2=3}) | ||||
| 				end | ||||
|  | ||||
| 		end, | ||||
| 	}) | ||||
| 			end, | ||||
| 		}) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Wet Reed Roof Corner 1 | ||||
| -- Wet Reed Roof Corner | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_node("dryplants:wetreed_roof_corner", { | ||||
| 	description = S("Wet Reed Roof Corner 1"), | ||||
| 	description = S("Wet Reed Roof Corner"), | ||||
| 	drawtype = "nodebox", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| @@ -196,7 +197,6 @@ minetest.register_node("dryplants:wetreed_roof_corner", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -227,35 +227,37 @@ minetest.register_node("dryplants:wetreed_roof_corner_2", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Wet Reed becomes (dry) Reed over time | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| local DRyiNG = { | ||||
| if REED_WILL_DRY == true then | ||||
|  | ||||
| 	local DRyiNG = { | ||||
| --		  WeT									 DRy | ||||
| 	{"dryplants:wetreed",					"dryplants:reed"}, | ||||
| 	{"dryplants:wetreed_slab",				"dryplants:reed_slab"}, | ||||
| 	{"dryplants:wetreed_roof",				"dryplants:reed_roof"}, | ||||
| 	{"dryplants:wetreed_roof_corner",		"dryplants:reed_roof_corner"}, | ||||
| 	{"dryplants:wetreed_roof_corner_2",		"dryplants:reed_roof_corner_2"} | ||||
| } | ||||
| for i in pairs(DRyiNG) do | ||||
| 		{"dryplants:wetreed",					"dryplants:reed"}, | ||||
| 		{"dryplants:wetreed_slab",				"dryplants:reed_slab"}, | ||||
| 		{"dryplants:wetreed_roof",				"dryplants:reed_roof"}, | ||||
| 		{"dryplants:wetreed_roof_corner",		"dryplants:reed_roof_corner"}, | ||||
| 		{"dryplants:wetreed_roof_corner_2",		"dryplants:reed_roof_corner_2"} | ||||
| 	} | ||||
| 	for i in pairs(DRyiNG) do | ||||
|  | ||||
| 	local WeT = DRyiNG[i][1] | ||||
| 	local DRy = DRyiNG[i][2] | ||||
| 		local WeT = DRyiNG[i][1] | ||||
| 		local DRy = DRyiNG[i][2] | ||||
|  | ||||
| 	minetest.register_abm({ | ||||
| 		nodenames = {WeT}, | ||||
| 		interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 		chance = 1, | ||||
| 		action = function(pos) | ||||
| 			local direction = minetest.get_node(pos).param2 | ||||
| 			minetest.swap_node(pos, {name=DRy, param2=direction}) | ||||
| 		end, | ||||
| 	}) | ||||
| 		minetest.register_abm({ | ||||
| 			nodenames = {WeT}, | ||||
| 			interval = REED_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle | ||||
| 			chance = 1, | ||||
| 			action = function(pos) | ||||
| 				local direction = minetest.get_node(pos).param2 | ||||
| 				minetest.swap_node(pos, {name=DRy, param2=direction}) | ||||
| 			end, | ||||
| 		}) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| @@ -267,7 +269,6 @@ minetest.register_node("dryplants:reed", { | ||||
| 	paramtype2 = "facedir", | ||||
| 	tiles = {"dryplants_reed.png"}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -289,7 +290,6 @@ minetest.register_node("dryplants:reed_slab", { | ||||
| 		fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2}, | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -318,15 +318,14 @@ minetest.register_node("dryplants:reed_roof", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Reed Roof Corner 1 | ||||
| -- Reed Roof Corner | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| minetest.register_node("dryplants:reed_roof_corner", { | ||||
| 	description = S("Reed Roof Corner 1"), | ||||
| 	description = S("Reed Roof Corner"), | ||||
| 	drawtype = "nodebox", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| @@ -349,7 +348,6 @@ minetest.register_node("dryplants:reed_roof_corner", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|  | ||||
| @@ -380,6 +378,5 @@ minetest.register_node("dryplants:reed_roof_corner_2", { | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = {snappy=3, flammable=2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
|   | ||||
| @@ -1,3 +1,13 @@ | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- Grasses - Reedmace 0.1.1 | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- by Mossmanikin | ||||
| -- textures & ideas partly by Neuromancer | ||||
|  | ||||
| -- Contains code from:		biome_lib | ||||
| -- Looked at code from:		default, trees | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- NOTES (from wikipedia, some of this might get implemented) | ||||
| -- rhizomes are edible | ||||
| -- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus | ||||
| @@ -14,16 +24,14 @@ local S = minetest.get_translator("dryplants") | ||||
| -- REEDMACE SHAPES | ||||
| ----------------------------------------------------------------------------------------------- | ||||
|  | ||||
| local function grow_reedmace(pos) | ||||
| abstract_dryplants.grow_reedmace = function(pos) | ||||
| 	local size = math.random(1,3) | ||||
| 	local spikes = math.random(1,3) | ||||
| 	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 nodename = minetest.get_node(pos_01).name | ||||
| 	if nodename == "air"  -- bug fix | ||||
| 	or nodename == "dryplants:reedmace_sapling" then | ||||
| 	if minetest.get_node(pos_01).name == "air"  -- bug fix | ||||
| 	or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then | ||||
| 		if minetest.get_node(pos_02).name ~= "air" then | ||||
| 			minetest.swap_node(pos_01, {name="dryplants:reedmace_top"}) | ||||
| 		elseif minetest.get_node(pos_03).name ~= "air" then | ||||
| @@ -42,16 +50,14 @@ local function grow_reedmace(pos) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function grow_reedmace_water(pos) | ||||
| abstract_dryplants.grow_reedmace_water = function(pos) | ||||
| 	local size = math.random(1,3) | ||||
| 	local spikes = math.random(1,3) | ||||
| 	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} | ||||
|  | ||||
| 	minetest.add_entity(pos_01, "dryplants:reedmace_water_entity") | ||||
|  | ||||
| 	if minetest.get_node(pos_02).name == "air" then -- bug fix | ||||
| 		if minetest.get_node(pos_03).name ~= "air" then | ||||
| 			minetest.swap_node(pos_02, {name="dryplants:reedmace_top"}) | ||||
| @@ -71,8 +77,6 @@ local function grow_reedmace_water(pos) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| abstract_dryplants.grow_reedmace = grow_reedmace -- compatibility | ||||
|  | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- REEDMACE SPIKES | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| @@ -88,7 +92,6 @@ minetest.register_node("dryplants:reedmace_spikes", { | ||||
| 		flammable=2, | ||||
| 		not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -111,7 +114,6 @@ minetest.register_node("dryplants:reedmace_top", { | ||||
| 		flammable=2, | ||||
| 		not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -135,7 +137,6 @@ minetest.register_node("dryplants:reedmace_height_2", { | ||||
| 		flammable=2--, | ||||
| 		--not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -159,7 +160,6 @@ minetest.register_node("dryplants:reedmace_height_3", { | ||||
| 		flammable=2--, | ||||
| 		--not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -183,7 +183,6 @@ minetest.register_node("dryplants:reedmace_height_3_spikes", { | ||||
| 		flammable=2--, | ||||
| 		--not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -206,7 +205,6 @@ minetest.register_node("dryplants:reedmace", { | ||||
| 		flammable=2, | ||||
| 		not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -237,7 +235,6 @@ minetest.register_node("dryplants:reedmace_bottom", { | ||||
| 		flammable=2, | ||||
| 		not_in_creative_inventory=1 | ||||
| 	}, | ||||
| 	is_ground_content = false, | ||||
| 	drop = 'dryplants:reedmace_sapling', | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	selection_box = { | ||||
| @@ -279,19 +276,19 @@ minetest.register_node("dryplants:reedmace_sapling", { | ||||
| -- abm | ||||
| minetest.register_abm({ | ||||
| 	nodenames = "dryplants:reedmace_sapling", | ||||
| 	interval = 600, | ||||
| 	chance = 100/5, | ||||
| 	interval = REEDMACE_GROWING_TIME, | ||||
| 	chance = 100/REEDMACE_GROWING_CHANCE, | ||||
| 	action = function(pos, node, _, _) | ||||
| 		if string.find(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z	 }).name, "default:water") | ||||
| 		or string.find(minetest.get_node({x = pos.x,	 y = pos.y, z = pos.z + 1}).name, "default:water") | ||||
| 		or string.find(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z	 }).name, "default:water") | ||||
| 		or string.find(minetest.get_node({x = pos.x,	 y = pos.y, z = pos.z - 1}).name, "default:water") then | ||||
| 			if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then | ||||
| 				grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z}) | ||||
| 				abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z}) | ||||
| 			end | ||||
| 			minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"}) | ||||
| 		else | ||||
| 			grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z}) | ||||
| 			abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z}) | ||||
| 		end | ||||
|     end | ||||
| }) | ||||
| @@ -321,7 +318,7 @@ minetest.register_entity("dryplants:reedmace_water_entity",{ | ||||
| 	collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}, | ||||
| 	on_punch = function(self, puncher) | ||||
| 		if puncher:is_player() and puncher:get_inventory() then | ||||
| 			if not minetest.is_creative_enabled(puncher:get_player_name()) then | ||||
| 			if not minetest.setting_getbool("creative_mode") then | ||||
| 				puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling") | ||||
| 			end | ||||
| 			self.object:remove() | ||||
| @@ -329,120 +326,86 @@ minetest.register_entity("dryplants:reedmace_water_entity",{ | ||||
| 	end, | ||||
| }) | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- SPAWN REEDMACE | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| --[[biome_lib.register_active_spawner({ | ||||
| 	spawn_delay = 1200, | ||||
| 	spawn_plants = {"dryplants:reedmace_sapling"}, | ||||
| 	spawn_chance = 400, | ||||
| 	spawn_surfaces = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"default:desert_sand", | ||||
| 		"default:sand", | ||||
| 		"dryplants:grass_short", | ||||
| 		"stoneage:grass_with_silex" | ||||
| 	}, | ||||
| 	seed_diff = 329, | ||||
| 	near_nodes = {"default:water_source"}, | ||||
| 	near_nodes_size = 2, | ||||
| 	near_nodes_vertical = 1, | ||||
| 	near_nodes_count = 1, | ||||
| })]] | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- GENERATE REEDMACE | ||||
| ----------------------------------------------------------------------------------------------- | ||||
| -- near water or swamp | ||||
| minetest.register_decoration({ | ||||
| 	name = "dryplants:reedmace_swamp", | ||||
| 	decoration = {"air"}, | ||||
| 	fill_ratio = "0.05", | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:dirt_with_grass", | ||||
| 		"default:desert_sand", | ||||
| 		"stoneage:grass_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:dirt_with_grass", | ||||
| 			"default:desert_sand", | ||||
| 			"stoneage:grass_with_silex", | ||||
| 			"sumpf:peat", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK, rarity = 101 - REEDMACE_NEAR_WATER_RARITY}), | ||||
| 		--rarity = 60, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| 	spawn_by = { | ||||
| 		"default:water_source", | ||||
| 		"sumpf:dirtywater_source", | ||||
| 		"sumpf:sumpf" | ||||
| 	}, | ||||
| 	check_offset = -1, | ||||
| 	num_spawn_by = 1 | ||||
| }) | ||||
|  | ||||
| 	"dryplants:reedmace_near_water", | ||||
| 	abstract_dryplants.grow_reedmace | ||||
| ) | ||||
| -- in water | ||||
| minetest.register_decoration({ | ||||
| 	name = "dryplants:reedmace_water", | ||||
| 	decoration = {"air"}, | ||||
| 	fill_ratio = "0.01", | ||||
| 	y_min = 0, | ||||
| 	y_max = 0, | ||||
| 	place_on = { | ||||
| 		"default:dirt", | ||||
| 		"default:dirt_with_grass", | ||||
| 		"stoneage:sand_with_silex", | ||||
| 		"sumpf:peat", | ||||
| 		"sumpf:sumpf" | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:dirt", | ||||
| 			"default:dirt_with_grass", | ||||
| 			--"default:desert_sand", | ||||
| 			--"stoneage:grass_with_silex", | ||||
| 			"stoneage:sand_with_silex", | ||||
| 			"sumpf:peat", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({max_count = REEDMACE_IN_WATER_PER_MAPBLOCK, rarity = 101 - REEDMACE_IN_WATER_RARITY}), | ||||
| 		--rarity = 35, | ||||
| 		min_elevation = 0, -- a bit below sea level | ||||
| 		max_elevation = 0, -- "" | ||||
| 		near_nodes = {"default:water_source","sumpf:dirtywater_source"}, | ||||
| 		near_nodes_size = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| 	spawn_by = { | ||||
| 		"default:water_source", | ||||
| 		"sumpf:dirtywater_source" | ||||
| 	}, | ||||
| 	check_offset = -1, | ||||
| 	num_spawn_by = 1 | ||||
| }) | ||||
|  | ||||
| 	"dryplants:reedmace_in_water", | ||||
| 	abstract_dryplants.grow_reedmace_water | ||||
| ) | ||||
| -- for oases & tropical beaches & tropical swamps | ||||
| minetest.register_decoration({ | ||||
| 	name = "dryplants:reedmace_beach", | ||||
| 	decoration = {"air"}, | ||||
| 	fill_ratio = "0.05", | ||||
| 	y_min = 1, | ||||
| 	y_max = 40, | ||||
| 	place_on = { | ||||
| 		"default:sand", | ||||
| 		"sumpf:sumpf" | ||||
| pl.register_on_generate({ | ||||
| 		surface = { | ||||
| 			"default:sand", | ||||
| 			"sumpf:sumpf" | ||||
| 		}, | ||||
| 		noise_params = pl.generate_noise_params({max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK, 101 - REEDMACE_FOR_OASES_RARITY}), | ||||
| 		--rarity = 10, | ||||
| 		neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"}, | ||||
| 		ncount = 1, | ||||
| 		min_elevation = 1, -- above sea level | ||||
| 		near_nodes = {"default:desert_sand","sumpf:sumpf"}, | ||||
| 		near_nodes_size = 2, | ||||
| 		near_nodes_vertical = 1, | ||||
| 		near_nodes_count = 1, | ||||
| 	}, | ||||
| 	deco_type = "simple", | ||||
| 	flags = "all_floors", | ||||
| 	spawn_by = { | ||||
| 		"default:water_source", | ||||
| 		"sumpf:dirtywater_source", | ||||
| 		"sumpf:sumpf", | ||||
| 		"default:desert_sand" | ||||
| 	}, | ||||
| 	check_offset = -1, | ||||
| 	num_spawn_by = 1 | ||||
| }) | ||||
|  | ||||
| local did, did2, did3 | ||||
| minetest.register_on_mods_loaded(function() | ||||
| 	did = minetest.get_decoration_id("dryplants:reedmace_swamp") | ||||
| 	did2 = minetest.get_decoration_id("dryplants:reedmace_water") | ||||
| 	did3 = minetest.get_decoration_id("dryplants:reedmace_beach") | ||||
| 	minetest.set_gen_notify("decoration", {did, did2, did3}) | ||||
| end) | ||||
|  | ||||
| minetest.register_on_generated(function(minp, maxp, blockseed) | ||||
| 	local g = minetest.get_mapgen_object("gennotify") | ||||
| 	local locations = {} | ||||
|  | ||||
| 	local deco_locations_1 = g["decoration#" .. did] or {} | ||||
| 	local deco_locations_3 = g["decoration#" .. did3] or {} | ||||
|  | ||||
| 	for _, pos in pairs(deco_locations_1) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
| 	for _, pos in pairs(deco_locations_3) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
|  | ||||
| 	if #locations == 0 then return end | ||||
| 	for _, pos in ipairs(locations) do | ||||
| 		grow_reedmace(pos) | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| minetest.register_on_generated(function(minp, maxp, blockseed) | ||||
| 	local g = minetest.get_mapgen_object("gennotify") | ||||
| 	local locations = {} | ||||
|  | ||||
| 	local deco_locations_2 = g["decoration#" .. did2] or {} | ||||
|  | ||||
| 	for _, pos in pairs(deco_locations_2) do | ||||
| 		locations[#locations+1] = pos | ||||
| 	end | ||||
|  | ||||
| 	if #locations == 0 then return end | ||||
| 	for _, pos in ipairs(locations) do | ||||
| 		grow_reedmace_water(pos) | ||||
| 	end | ||||
| end) | ||||
| 	"dryplants:reemace_oases", | ||||
| 	abstract_dryplants.grow_reedmace | ||||
| ) | ||||
|   | ||||
							
								
								
									
										52
									
								
								dryplants/settings.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,52 @@ | ||||
| -- Here you can enable/disable the different plants | ||||
| REEDMACE_GENERATES 					= 	true | ||||
| SMALL_JUNCUS_GENERATES 				= 	true | ||||
| EXTRA_TALL_GRASS_GENERATES 			= 	true | ||||
|  | ||||
|  | ||||
|  | ||||
| -- Amount of Reedmace near water or swamp | ||||
| REEDMACE_NEAR_WATER_PER_MAPBLOCK	=	35		-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| REEDMACE_NEAR_WATER_RARITY			=	40		-- percent | ||||
|  | ||||
| -- Amount of Reedmace in water | ||||
| REEDMACE_IN_WATER_PER_MAPBLOCK		=	35		-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| REEDMACE_IN_WATER_RARITY			=	65		-- percent | ||||
|  | ||||
| -- Amount of Reedmace for oases, tropical beaches and tropical swamps | ||||
| REEDMACE_FOR_OASES_PER_MAPBLOCK		=	35		-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| REEDMACE_FOR_OASES_RARITY			=	90		-- percent | ||||
|  | ||||
| -- growing of reedmace sapling | ||||
| REEDMACE_GROWING_TIME 				= 	600  	-- seconds | ||||
| REEDMACE_GROWING_CHANCE 			= 	5		-- percent | ||||
|  | ||||
|  | ||||
|  | ||||
| -- Amount of small Juncus near water or swamp | ||||
| JUNCUS_NEAR_WATER_PER_MAPBLOCK		=	70		-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| JUNCUS_NEAR_WATER_RARITY			=	75		-- percent | ||||
|  | ||||
| -- Amount of small Juncus at dunes/beach | ||||
| JUNCUS_AT_BEACH_PER_MAPBLOCK		=	70		-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| JUNCUS_AT_BEACH_RARITY				=	75		-- percent | ||||
|  | ||||
|  | ||||
|  | ||||
| -- Tall Grass on dirt with grass | ||||
| TALL_GRASS_PER_MAPBLOCK				=	4800	-- plants per 80x80x80 nodes (absolute maximum number) | ||||
| TALL_GRASS_RARITY					=	75		-- percent | ||||
|  | ||||
|  | ||||
|  | ||||
| -- short grass becomes dirt with grass again | ||||
| GRASS_REGROWING_TIME 				= 	1200 	-- seconds | ||||
| GRASS_REGROWING_CHANCE 				= 	5		-- percent | ||||
|  | ||||
| HAY_DRYING_TIME 					= 	3600 	-- seconds | ||||
|  | ||||
| REED_WILL_DRY 						= 	false	-- wet reed nodes will become dry reed nodes | ||||
| REED_DRYING_TIME 					= 	3600 	-- seconds | ||||
|  | ||||
| AUTO_ROOF_CORNER 					= 	true | ||||
| 	 | ||||
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/big_pic_8.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/big_pic_9.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_cattailsG_m2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_02_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 352 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_02_right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 393 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_02_whole2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 621 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_03_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 414 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_03_right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 387 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_juncus_03_whole2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 665 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_01.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 362 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_02.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 708 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_03.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_04.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_bottom_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 122 B | 
| After Width: | Height: | Size: 189 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 185 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 196 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_top_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 102 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/dryplants_reedmace_top_right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 147 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/reedmace2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/reedmace3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/reedmace4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/reedtest.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 333 B | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/not_in_use/texturing.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								dryplants/textures/old/dryplants_grass_short_old3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 823 B |