forked from mtcontrib/bonemeal
		
	Compare commits
	
		
			90 Commits
		
	
	
		
			nalc-1.2.0
			...
			57a018cbe4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 57a018cbe4 | |||
| 
						 | 
					c2d76b779d | ||
| edeee0ffbd | |||
| 
						 | 
					0d852bff0a | ||
| 
						 | 
					2a4ddd96db | ||
| 
						 | 
					09fa9d6251 | ||
| 53aefab9a2 | |||
| a5421172d7 | |||
| 
						 | 
					4f8ca6a0a5 | ||
| 
						 | 
					c4ac6f8490 | ||
| 
						 | 
					8e929e5a1c | ||
| 
						 | 
					7c89cd6b70 | ||
| 
						 | 
					862fd2bb1c | ||
| 
						 | 
					2db3f4b026 | ||
| 
						 | 
					6d21268470 | ||
| 
						 | 
					10dbedd1e8 | ||
| 
						 | 
					34e8c4a106 | ||
| 31cf1abfcd | |||
| 
						 | 
					8b98f5e497 | ||
| 
						 | 
					ef937049d2 | ||
| 
						 | 
					6abbd5fb5e | ||
| 0a9668fff1 | |||
| 
						 | 
					e57dc18818 | ||
| 
						 | 
					a93fc5da3d | ||
| 
						 | 
					a1e5d541c4 | ||
| 
						 | 
					0c0f9d1e89 | ||
| 
						 | 
					73082b9fac | ||
| 
						 | 
					2fdc3f09b7 | ||
| 
						 | 
					1935d348c1 | ||
| 
						 | 
					8ccf4a591a | ||
| 
						 | 
					30bd1d708c | ||
| 
						 | 
					b07c76c407 | ||
| 
						 | 
					77fee3c7e1 | ||
| 
						 | 
					b9cf957dcc | ||
| 
						 | 
					9049dbfefa | ||
| 
						 | 
					757b85d02f | ||
| 
						 | 
					70c51d18bb | ||
| 
						 | 
					d459c60d6d | ||
| d357709339 | |||
| 
						 | 
					1f4c1a1fd7 | ||
| 
						 | 
					9ceeb63c8a | ||
| 
						 | 
					1315e2cc5f | ||
| 
						 | 
					4a0eddef02 | ||
| 
						 | 
					e163e815d6 | ||
| 
						 | 
					08ed68a8b7 | ||
| 
						 | 
					1a1c49ba06 | ||
| 
						 | 
					996094dd5c | ||
| 
						 | 
					bb34fbae3d | ||
| 
						 | 
					5f81c3dfa2 | ||
| 131024ee97 | |||
| 
						 | 
					804343f7c0 | ||
| 
						 | 
					4c50a02a0e | ||
| 52a3856f26 | |||
| 
						 | 
					79f9cb3294 | ||
| 52ada84c58 | |||
| 
						 | 
					2d7dbc735c | ||
| a920032dd5 | |||
| 
						 | 
					b6b40c558a | ||
| d534523a1d | |||
| 
						 | 
					75ec006643 | ||
| acea1713b7 | |||
| 
						 | 
					b5819d022e | ||
| 1a9c67b1e3 | |||
| 
						 | 
					05e211a037 | ||
| fdc62f06b0 | |||
| 
						 | 
					807388d632 | ||
| 2658577776 | |||
| 
						 | 
					634d1496aa | ||
| 
						 | 
					8fc57f7746 | ||
| 7c106254d2 | |||
| 
						 | 
					308baf3a17 | ||
| b50f533579 | |||
| 
						 | 
					587e0fbf02 | ||
| 2c90275687 | |||
| 
						 | 
					30d0c02d8c | ||
| 
						 | 
					2ec1168292 | ||
| 
						 | 
					1aba553059 | ||
| 
						 | 
					fefe122dc9 | ||
| 
						 | 
					5ce62f46e7 | ||
| 93a46c05a6 | |||
| 
						 | 
					77c02f1b7a | ||
| afc6d7ef12 | |||
| 
						 | 
					130fffbf97 | ||
| b604ca39da | |||
| 
						 | 
					a5a4798aed | ||
| 97f4b11110 | |||
| 
						 | 
					ebbec592bf | ||
| 
						 | 
					19df0b4036 | ||
| 
						 | 
					e6eaea544c | ||
| 
						 | 
					e4a0a9bfe9 | 
							
								
								
									
										213
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										213
									
								
								README.md
									
									
									
									
									
								
							@@ -1,37 +1,200 @@
 | 
				
			|||||||
Bonemeal mod [bonemeal]
 | 
					minetest mod Bonemeal
 | 
				
			||||||
 | 
					=====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FARM mod that helps and featured the farming to quickly grow samplings, crops, grass, etc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Information
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bonemeal is crushed from bones found in dirt or by using player bones, Mulch is
 | 
				
			||||||
 | 
					made from a tree trunk surrounded by leaves and Fertiliser is a mix of both,
 | 
				
			||||||
 | 
					each of which can be used to quickly grow saplings, crops and grass/decoration,
 | 
				
			||||||
 | 
					papyrus on top of dirt and cactus on sand.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Support for ethereal saplings/crops, farming redo crops and moretrees saplings are included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Technical info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This mod is named `bonemeal` and must be installed with such name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This mod adds four new items into the game, bones which can be dug from normal
 | 
					This mod adds four new items into the game, bones which can be dug from normal
 | 
				
			||||||
dirt which can be made into bonemeal, mulch which is is crafted using a tree and
 | 
					dirt which can be cooked into bonemeal, mulch which is is crafted using a tree
 | 
				
			||||||
8x leaves, and fertiliser which is a mixture of them both.
 | 
					and 8x leaves, and fertiliser which is a mixture of them both.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Each item can be used on saplings and crops for a chance to grow them quicker as
 | 
					Each item can be used on saplings and crops for a chance to grow them quicker
 | 
				
			||||||
well as dirt which will generate random grass, flowers or whichever decoration
 | 
					as well as dirt which will generate random grass, flowers or whichever
 | 
				
			||||||
is registered.
 | 
					decoration is registered.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Mulch has a strength of 1, Bonemeal 2 and Fertiliser 3 which means the stronger
 | 
					Mulch has a strength of 1, Bonemeal 2 and Fertiliser 3. This means the stronger
 | 
				
			||||||
the item, the more chance of growing saplings in low light, making crops sprout
 | 
					the item, the more chance of growing saplings in low light, making crops sprout
 | 
				
			||||||
quicker or simply decorate a larger area with grass and flowers.
 | 
					quicker or simply decorate a larger area with grass and flowers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The api.txt document shows how to add your own saplings, crops and grasses to
 | 
					#### Dependencies
 | 
				
			||||||
the list by using one of the 3 commands included and the mod.lua file gives you
 | 
					
 | 
				
			||||||
many examples by using some of the popular mods available.
 | 
					Dependencies: default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Optional Dependencies: farming, ethereal, moretrees, lucky_block, moretrees, flowers, dye, ferns, dryplants, df_trees, df_farming, df_primordial_items, everness
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Lucky Blocks: 6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The [`api.txt`](api.txt) document shows how to add your own saplings,
 | 
				
			||||||
 | 
					crops and grasses to the list by using one of the 3 commands included and
 | 
				
			||||||
 | 
					the [`mod.lua`](mod.lua) file gives you many examples by using some of the
 | 
				
			||||||
 | 
					popular mods available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
https://forum.minetest.net/viewtopic.php?f=9&t=16446
 | 
					https://forum.minetest.net/viewtopic.php?f=9&t=16446
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changelog:
 | 
					#### Nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 0.1 - Initial release
 | 
					| Node name               | description  | notes |
 | 
				
			||||||
- 0.2 - Added global on_use function for bonemeal growth
 | 
					| ----------------------- | ------------ | --------------------------------------------------- |
 | 
				
			||||||
- 0.3 - Added strength to on_use global for new items (mulch and fertiliser)
 | 
					| bonemeal:mulch          | Mulch        | fertilizer to make grow plants and seeds faster     |
 | 
				
			||||||
- 0.4 - Added Intllib support and fr.txt file
 | 
					| bonemeal:bonemeal       | Bone Meal    | 2 x fertilizer to make grow plants and seeds faster |
 | 
				
			||||||
- 0.5 - Added support for default bush and acacia bush saplings
 | 
					| bonemeal:fertiliser     | Fertiliser   | 3 x fertilizer to make grow plants and seeds faster |
 | 
				
			||||||
- 0.6 - Using newer functions, Minetest 0.4.16 and above needed to run
 | 
					| bonemeal:bone           | Bone         | cook to made fertilizers, found into dirt rarelly   |
 | 
				
			||||||
- 0.7 - Can be used on papyrus and cactus now, added coral recipe, api addition
 | 
					| bone:bone               | Player bones | cook to made fertilizers, found into dirt rarelly   |
 | 
				
			||||||
- 0.8 - Added support for farming redo's new garlic, pepper and onion crops
 | 
					| bonemeal:gelatin_powder | Gelatin Powder | made from bones                             |
 | 
				
			||||||
- 0.9 - Added support for farming redo's pea and beetroot crops, checks for place_param
 | 
					 | 
				
			||||||
- 1.0 - add_deco() now adds to existing item list while set_deco() replaces item list (thanks h-v-smacker)
 | 
					 | 
				
			||||||
- 1.1 - Added {can_bonemeal=1} group for special nodes
 | 
					 | 
				
			||||||
- 1.2 - Added support for minetest 5.0 cactus seedling, blueberry bush sapling and emergent jungle tree saplings, additional flowers and pine bush sapling.
 | 
					 | 
				
			||||||
- 1.3 - Ability to craft dye from mulch, bonemeal and fertiliser (thanks orbea)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Lucky Blocks: 6
 | 
					#### Crafts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:gelatin_powder 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{"group:bone", "group:bone", "group:bone"},
 | 
				
			||||||
 | 
						{"bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water"},
 | 
				
			||||||
 | 
						{"bucket:bucket_water", "default:torch", "bucket:bucket_water"}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:bonemeal 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{{"group:bone"}}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:bonemeal 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{{"bones:bones"}}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:bonemeal 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{{"default:coral_skeleton"}}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:mulch 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{"group:tree", "group:leaves", "group:leaves"},
 | 
				
			||||||
 | 
						{"group:leaves", "group:leaves", "group:leaves"},
 | 
				
			||||||
 | 
						{"group:leaves", "group:leaves", "group:leaves"}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* bonemeal:mulch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{"group:seed", "group:seed", "group:seed"},
 | 
				
			||||||
 | 
						{"group:seed", "group:seed", "group:seed"},
 | 
				
			||||||
 | 
						{"group:seed", "group:seed", "group:seed"}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* fertiliser 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
						{{"bonemeal:bonemeal", "bonemeal:mulch"}}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Initial release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added global `on_use` function for bonemeal growth
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added strength to `on_use` global for new items (mulch and fertiliser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added `Intllib` support and `fr.txt` file for French translation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for default bush and acacia bush saplings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Using newer functions. This means Minetest 0.4.16 and above needed to run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Can be used on papyrus and cactus now
 | 
				
			||||||
 | 
					* Added coral recipe
 | 
				
			||||||
 | 
					* API addition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for farming redo's new garlic
 | 
				
			||||||
 | 
					* Added pepper and onion crops
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 0.9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for farming redo's pea and beetroot crops
 | 
				
			||||||
 | 
					* Checks for `place_param`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `add_deco()` now adds to existing item list while `set_deco()` replaces item
 | 
				
			||||||
 | 
					  list (thanks `h-v-smacker`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added `{can_bonemeal=1}` group for special nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for Minetest 5.0 cactus seedling, blueberry bush sapling and
 | 
				
			||||||
 | 
					  emergent jungle tree saplings, additional flowers and pine bush sapling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added ability to craft dye from mulch, bonemeal and fertiliser (thanks
 | 
				
			||||||
 | 
					  `orbea`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for fern saplings from `plantlife` mod (thanks `nixnoxus`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added support for farming redo's asparagus, eggplant, spinach
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added helper function for position and protection check
 | 
				
			||||||
 | 
					* Added ginger support
 | 
				
			||||||
 | 
					* Added moretrees poplar sapling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Version 1.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Added farming redo's barley, hemp, rye, oat, mint, sunflower, rice seeds
 | 
				
			||||||
 | 
					* Added Everness saplings
 | 
				
			||||||
 | 
					* Update readme (thanks mckaygerhard)
 | 
				
			||||||
 | 
					* Recipe changes, player bones craft into 2x bones, bones must be cooked to
 | 
				
			||||||
 | 
					  give bonemeal
 | 
				
			||||||
 | 
					* Added bushes_classic support
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## LICENSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licence: Code is MIT, Media is CC0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(c) Tenplus1
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								api.txt
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								api.txt
									
									
									
									
									
								
							@@ -15,7 +15,7 @@ Adding Crops
 | 
				
			|||||||
------------
 | 
					------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bonemeal:add_crop({
 | 
					bonemeal:add_crop({
 | 
				
			||||||
	{ nodename_start, growing_steps, seed_name }
 | 
						{ nodename_start, growing_steps, seed_name, ignore_light }
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This command is used to add new crops for bonemeal to work on.
 | 
					This command is used to add new crops for bonemeal to work on.
 | 
				
			||||||
@@ -25,6 +25,7 @@ e.g.
 | 
				
			|||||||
bonemeal:add_crop({
 | 
					bonemeal:add_crop({
 | 
				
			||||||
	{"farming:cotton_", 8, "farming:seed_cotton"},
 | 
						{"farming:cotton_", 8, "farming:seed_cotton"},
 | 
				
			||||||
	{"farming:wheat_", 8, "farming:seed_wheat"},
 | 
						{"farming:wheat_", 8, "farming:seed_wheat"},
 | 
				
			||||||
 | 
						{"mymod:dark_wheat_", 8, "mymod:dark_wheat_seed", true}, -- can grow in darkness
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +33,7 @@ Adding Saplings
 | 
				
			|||||||
---------------
 | 
					---------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bonemeal:add_sapling({
 | 
					bonemeal:add_sapling({
 | 
				
			||||||
	{ sapling_node, function, soil_type[sand, dirt, nodename] }
 | 
						{ sapling_node, function, soil_type["sand", "dirt", nodename, "group:"], ignore_light }
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This command will add new saplings for bonemeal to grow on sand, soil or a
 | 
					This command will add new saplings for bonemeal to grow on sand, soil or a
 | 
				
			||||||
@@ -41,6 +42,7 @@ specified node type.
 | 
				
			|||||||
bonemeal:add_sapling({
 | 
					bonemeal:add_sapling({
 | 
				
			||||||
	{"ethereal:palm_sapling", ethereal.grow_palm_tree, "soil"},
 | 
						{"ethereal:palm_sapling", ethereal.grow_palm_tree, "soil"},
 | 
				
			||||||
	{"ethereal:palm_sapling", ethereal.grow_palm_tree, "sand"},
 | 
						{"ethereal:palm_sapling", ethereal.grow_palm_tree, "sand"},
 | 
				
			||||||
 | 
						{"mymod:dark_tree", mymod.dark_tree, "group:soil", true}, -- can grow in darkness
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
default
 | 
					 | 
				
			||||||
intllib?
 | 
					 | 
				
			||||||
farming?
 | 
					 | 
				
			||||||
ethereal?
 | 
					 | 
				
			||||||
moretrees?
 | 
					 | 
				
			||||||
technic_worldgen?
 | 
					 | 
				
			||||||
lucky_block?
 | 
					 | 
				
			||||||
flowers?
 | 
					 | 
				
			||||||
dye?
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
Adds bone and bonemeal giving the ability to quickly grow plants and saplings.
 | 
					 | 
				
			||||||
							
								
								
									
										425
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										425
									
								
								init.lua
									
									
									
									
									
								
							@@ -1,100 +1,46 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bonemeal = {}
 | 
					bonemeal = {
 | 
				
			||||||
 | 
						item_list = {
 | 
				
			||||||
 | 
							bucket_water = "bucket:bucket_water",
 | 
				
			||||||
 | 
							bucket_empty = "bucket:bucket_empty",
 | 
				
			||||||
 | 
							dirt = "default:dirt",
 | 
				
			||||||
 | 
							torch = "default:torch",
 | 
				
			||||||
 | 
							coral = "default:coral_skeleton"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local a = bonemeal.item_list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("mcl_core") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						a.bucket_water = "mcl_buckets:bucket_water"
 | 
				
			||||||
 | 
						a.bucket_empty = "mcl_buckets:bucker_empty"
 | 
				
			||||||
 | 
						a.dirt = "mcl_core:dirt"
 | 
				
			||||||
 | 
						a.torch = "mcl_torches:torch"
 | 
				
			||||||
 | 
						a.coral = "mcl_ocean:dead_horn_coral_block"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local path = minetest.get_modpath("bonemeal")
 | 
					local path = minetest.get_modpath("bonemeal")
 | 
				
			||||||
local min, max, random = math.min, math.max, math.random
 | 
					local min, max, random = math.min, math.max, math.random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- translation support
 | 
				
			||||||
-- Load support for intllib.
 | 
					local S = minetest.get_translator("bonemeal")
 | 
				
			||||||
local S, NS = dofile(path .. "/intllib.lua")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- creative check
 | 
					-- creative check
 | 
				
			||||||
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
 | 
					local creative_mode_cache = minetest.settings:get_bool("creative_mode")
 | 
				
			||||||
function is_creative(name)
 | 
					function bonemeal.is_creative(name)
 | 
				
			||||||
	return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
 | 
						return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local crops = {}
 | 
				
			||||||
-- default crops
 | 
					local saplings = {}
 | 
				
			||||||
local crops = {
 | 
					local deco = {}
 | 
				
			||||||
	{"farming:cotton_", 8, "farming:seed_cotton"},
 | 
					 | 
				
			||||||
	{"farming:wheat_", 8, "farming:seed_wheat"}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- special pine check for nearby snow
 | 
					 | 
				
			||||||
local function pine_grow(pos)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if minetest.find_node_near(pos, 1,
 | 
					 | 
				
			||||||
		{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		default.grow_new_snowy_pine_tree(pos)
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		default.grow_new_pine_tree(pos)
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- default saplings
 | 
					 | 
				
			||||||
local saplings = {
 | 
					 | 
				
			||||||
	{"default:sapling", default.grow_new_apple_tree, "soil"},
 | 
					 | 
				
			||||||
	{"default:junglesapling", default.grow_new_jungle_tree, "soil"},
 | 
					 | 
				
			||||||
	{"default:emergent_jungle_sapling", default.grow_new_emergent_jungle_tree, "soil"},
 | 
					 | 
				
			||||||
	{"default:acacia_sapling", default.grow_new_acacia_tree, "soil"},
 | 
					 | 
				
			||||||
	{"default:aspen_sapling", default.grow_new_aspen_tree, "soil"},
 | 
					 | 
				
			||||||
	{"default:pine_sapling", pine_grow, "soil"},
 | 
					 | 
				
			||||||
	{"default:bush_sapling", default.grow_bush, "soil"},
 | 
					 | 
				
			||||||
	{"default:acacia_bush_sapling", default.grow_acacia_bush, "soil"},
 | 
					 | 
				
			||||||
	{"default:large_cactus_seedling", default.grow_large_cactus, "sand"},
 | 
					 | 
				
			||||||
	{"default:blueberry_bush_sapling", default.grow_blueberry_bush, "soil"},
 | 
					 | 
				
			||||||
	{"default:pine_bush_sapling", default.grow_pine_bush, "soil"}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- helper tables ( "" denotes a blank item )
 | 
					 | 
				
			||||||
local green_grass = {
 | 
					 | 
				
			||||||
	"default:grass_2", "default:grass_3", "default:grass_4",
 | 
					 | 
				
			||||||
	"default:grass_5", "", ""
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local dry_grass = {
 | 
					 | 
				
			||||||
	"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
 | 
					 | 
				
			||||||
	"default:dry_grass_5", "", ""
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- add all in-game flowers except waterlily
 | 
					 | 
				
			||||||
local flowers = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
for node, def in pairs(minetest.registered_nodes) do
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if def.groups.flower and not node:find("waterlily") then
 | 
					 | 
				
			||||||
		flowers[#flowers + 1] = node
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- add additional bakedclay flowers if enabled
 | 
					 | 
				
			||||||
if minetest.get_modpath("bakedclay") then
 | 
					 | 
				
			||||||
	flowers[#flowers + 1] = "bakedclay:delphinium"
 | 
					 | 
				
			||||||
	flowers[#flowers + 1] = "bakedclay:thistle"
 | 
					 | 
				
			||||||
	flowers[#flowers + 1] = "bakedclay:lazarus"
 | 
					 | 
				
			||||||
	flowers[#flowers + 1] = "bakedclay:mannagrass"
 | 
					 | 
				
			||||||
	flowers[#flowers + 1] = ""
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- default biomes deco
 | 
					 | 
				
			||||||
local deco = {
 | 
					 | 
				
			||||||
	{"default:dirt_with_dry_grass", dry_grass, flowers},
 | 
					 | 
				
			||||||
	{"default:sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
					 | 
				
			||||||
	{"default:desert_sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
					 | 
				
			||||||
	{"default:silver_sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
-- local functions
 | 
					-- local functions
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
-- particles
 | 
					-- particles
 | 
				
			||||||
local function particle_effect(pos)
 | 
					local function particle_effect(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -111,7 +57,8 @@ local function particle_effect(pos)
 | 
				
			|||||||
		maxexptime = 1,
 | 
							maxexptime = 1,
 | 
				
			||||||
		minsize = 1,
 | 
							minsize = 1,
 | 
				
			||||||
		maxsize = 3,
 | 
							maxsize = 3,
 | 
				
			||||||
		texture = "bonemeal_particle.png"
 | 
							texture = "bonemeal_particle.png",
 | 
				
			||||||
 | 
							glow = 5
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -120,15 +67,18 @@ end
 | 
				
			|||||||
local function grow_tree(pos, object)
 | 
					local function grow_tree(pos, object)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if type(object) == "table" and object.axiom then
 | 
						if type(object) == "table" and object.axiom then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- grow L-system tree
 | 
							-- grow L-system tree
 | 
				
			||||||
		minetest.remove_node(pos)
 | 
							minetest.remove_node(pos)
 | 
				
			||||||
		minetest.spawn_tree(pos, object)
 | 
							minetest.spawn_tree(pos, object)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elseif type(object) == "string" and minetest.registered_nodes[object] then
 | 
						elseif type(object) == "string" and minetest.registered_nodes[object] then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- place node
 | 
							-- place node
 | 
				
			||||||
		minetest.set_node(pos, {name = object})
 | 
							minetest.set_node(pos, {name = object})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elseif type(object) == "function" then
 | 
						elseif type(object) == "function" then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- function
 | 
							-- function
 | 
				
			||||||
		object(pos)
 | 
							object(pos)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -136,7 +86,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- sapling check
 | 
					-- sapling check
 | 
				
			||||||
local function check_sapling(pos, nodename)
 | 
					local function check_sapling(pos, sapling_node, strength, light_ok)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- what is sapling placed on?
 | 
						-- what is sapling placed on?
 | 
				
			||||||
	local under =  minetest.get_node({
 | 
						local under =  minetest.get_node({
 | 
				
			||||||
@@ -150,37 +100,39 @@ local function check_sapling(pos, nodename)
 | 
				
			|||||||
	-- check list for sapling and function
 | 
						-- check list for sapling and function
 | 
				
			||||||
	for n = 1, #saplings do
 | 
						for n = 1, #saplings do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if saplings[n][1] == nodename then
 | 
							if saplings[n][1] == sapling_node then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			grow_on = saplings[n][3]
 | 
								grow_on = saplings[n][3] or ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- sapling grows on top of specific node
 | 
								-- backwards compatibility, add 'group:' to older grouping
 | 
				
			||||||
			if grow_on
 | 
								if grow_on == "soil" or grow_on == "sand" then
 | 
				
			||||||
			and grow_on ~= "soil"
 | 
									grow_on = "group:" .. grow_on
 | 
				
			||||||
			and grow_on ~= "sand"
 | 
								end
 | 
				
			||||||
			and grow_on == under.name then
 | 
					
 | 
				
			||||||
 | 
								-- sapling grows on top of specific node group
 | 
				
			||||||
 | 
								if grow_on:find("group:") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									local group = grow_on:split(":")[2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if minetest.get_item_group(under.name, group) > 0 then
 | 
				
			||||||
 | 
										can_grow = true
 | 
				
			||||||
 | 
									end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								-- sapling grows on specific node
 | 
				
			||||||
 | 
								elseif grow_on == under.name then
 | 
				
			||||||
				can_grow = true
 | 
									can_grow = true
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- sapling grows on top of soil (default)
 | 
								-- check if we can grow sapling at current light level
 | 
				
			||||||
			if can_grow == nil
 | 
								if can_grow and (light_ok or saplings[n][4] == true) then
 | 
				
			||||||
			and (grow_on == nil or grow_on == "soil")
 | 
					 | 
				
			||||||
			and minetest.get_item_group(under.name, "soil") > 0 then
 | 
					 | 
				
			||||||
				can_grow = true
 | 
					 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- sapling grows on top of sand
 | 
					 | 
				
			||||||
			if can_grow == nil
 | 
					 | 
				
			||||||
			and grow_on == "sand"
 | 
					 | 
				
			||||||
			and minetest.get_item_group(under.name, "sand") > 0 then
 | 
					 | 
				
			||||||
				can_grow = true
 | 
					 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			-- check if we can grow sapling
 | 
					 | 
				
			||||||
			if can_grow then
 | 
					 | 
				
			||||||
				particle_effect(pos)
 | 
									particle_effect(pos)
 | 
				
			||||||
				grow_tree(pos, saplings[n][2])
 | 
					
 | 
				
			||||||
				return
 | 
									if math.random(5 - strength) == 1 then
 | 
				
			||||||
 | 
										grow_tree(pos, saplings[n][2])
 | 
				
			||||||
 | 
									end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return true
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -188,34 +140,51 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- crops check
 | 
					-- crops check
 | 
				
			||||||
local function check_crops(pos, nodename, strength)
 | 
					local function check_crops(pos, nodename, strength, light_ok)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local mod, crop, stage, nod, def
 | 
						local mod, crop, stage, nod, def
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- grow registered crops
 | 
						-- grow registered crops
 | 
				
			||||||
	for n = 1, #crops do
 | 
						for n = 1, #crops do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if nodename:find(crops[n][1])
 | 
							-- check if crop can grow in current light level
 | 
				
			||||||
		or nodename == crops[n][3] then
 | 
							if (light_ok or crops[n][4] == true)
 | 
				
			||||||
 | 
							and (nodename:find(crops[n][1])
 | 
				
			||||||
 | 
							or nodename == crops[n][3]) then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- separate mod and node name
 | 
								-- separate mod and node name
 | 
				
			||||||
			mod = nodename:split(":")[1] .. ":"
 | 
								mod = nodename:split(":")[1] .. ":"
 | 
				
			||||||
			crop = nodename:split(":")[2]
 | 
								crop = nodename:split(":")[2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- get stage number or set to 0 for seed
 | 
								-- get stage number or set to 0 for seed
 | 
				
			||||||
			stage = tonumber( crop:split("_")[2] ) or 0
 | 
								if crop:split("_")[3] then
 | 
				
			||||||
 | 
									stage = crop:split("_")[3]
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									stage = crop:split("_")[2]
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								stage = tonumber(stage) or 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			stage = min(stage + strength, crops[n][2])
 | 
								stage = min(stage + strength, crops[n][2])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			-- check for place_param setting
 | 
								-- check for place_param setting
 | 
				
			||||||
			nod = crops[n][1] .. stage
 | 
								nod = crops[n][1] .. stage
 | 
				
			||||||
			def = minetest.registered_nodes[nod]
 | 
								def = minetest.registered_nodes[nod]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								-- make sure crop exists or isn't fully grown already
 | 
				
			||||||
 | 
								if not def or nod == nodename then
 | 
				
			||||||
 | 
									return false
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			def = def and def.place_param2 or 0
 | 
								def = def and def.place_param2 or 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			minetest.set_node(pos, {name = nod, param2 = def})
 | 
								minetest.set_node(pos, {name = nod, param2 = def})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			particle_effect(pos)
 | 
								particle_effect(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return
 | 
								minetest.get_node_timer(pos):start(10) -- restart any timers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@@ -227,33 +196,21 @@ local function check_soil(pos, nodename, strength)
 | 
				
			|||||||
	-- set radius according to strength
 | 
						-- set radius according to strength
 | 
				
			||||||
	local side = strength - 1
 | 
						local side = strength - 1
 | 
				
			||||||
	local tall = max(strength - 2, 0)
 | 
						local tall = max(strength - 2, 0)
 | 
				
			||||||
	local floor
 | 
					 | 
				
			||||||
	local groups = minetest.registered_items[nodename]
 | 
					 | 
				
			||||||
		and minetest.registered_items[nodename].groups or {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	-- only place decoration on one type of surface
 | 
					 | 
				
			||||||
	if groups.soil then
 | 
					 | 
				
			||||||
		floor = {"group:soil"}
 | 
					 | 
				
			||||||
	elseif groups.sand then
 | 
					 | 
				
			||||||
		floor = {"group:sand"}
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		floor = {nodename}
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- get area of land with free space above
 | 
						-- get area of land with free space above
 | 
				
			||||||
	local dirt = minetest.find_nodes_in_area_under_air(
 | 
						local dirt = minetest.find_nodes_in_area_under_air(
 | 
				
			||||||
		{x = pos.x - side, y = pos.y - tall, z = pos.z - side},
 | 
							{x = pos.x - side, y = pos.y - tall, z = pos.z - side},
 | 
				
			||||||
		{x = pos.x + side, y = pos.y + tall, z = pos.z + side}, floor)
 | 
							{x = pos.x + side, y = pos.y + tall, z = pos.z + side}, {nodename})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- set default grass and decoration
 | 
						-- set default grass and decoration
 | 
				
			||||||
	local grass = green_grass
 | 
						local grass, decor
 | 
				
			||||||
	local decor = flowers
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- choose grass and decoration to use on dirt patch
 | 
						-- choose grass and decoration to use on dirt patch
 | 
				
			||||||
	for n = 1, #deco do
 | 
						for n = 1, #deco do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- do we have a grass match?
 | 
							-- do we have a grass match?
 | 
				
			||||||
		if nodename == deco[n][1] then
 | 
							if nodename == deco[n][1] then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			grass = deco[n][2] or {}
 | 
								grass = deco[n][2] or {}
 | 
				
			||||||
			decor = deco[n][3] or {}
 | 
								decor = deco[n][3] or {}
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
@@ -265,15 +222,20 @@ local function check_soil(pos, nodename, strength)
 | 
				
			|||||||
	for _, n in pairs(dirt) do
 | 
						for _, n in pairs(dirt) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if random(5) == 5 then
 | 
							if random(5) == 5 then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if decor and #decor > 0 then
 | 
								if decor and #decor > 0 then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				-- place random decoration (rare)
 | 
									-- place random decoration (rare)
 | 
				
			||||||
				local dnum = #decor or 1
 | 
									local dnum = #decor or 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				nod = decor[random(dnum)] or ""
 | 
									nod = decor[random(dnum)] or ""
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			if grass and #grass > 0 then
 | 
								if grass and #grass > 0 then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				-- place random grass (common)
 | 
									-- place random grass (common)
 | 
				
			||||||
				local dgra = #grass or 1
 | 
									local dgra = #grass or 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				nod = #grass > 0 and grass[random(dgra)] or ""
 | 
									nod = #grass > 0 and grass[random(dgra)] or ""
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
@@ -290,7 +252,9 @@ local function check_soil(pos, nodename, strength)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			-- if param2 not preset then get from existing node
 | 
								-- if param2 not preset then get from existing node
 | 
				
			||||||
			if not def then
 | 
								if not def then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				local node = minetest.get_node_or_nil(pos2)
 | 
									local node = minetest.get_node_or_nil(pos2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				def = node and node.param2 or 0
 | 
									def = node and node.param2 or 0
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -302,11 +266,44 @@ local function check_soil(pos, nodename, strength)
 | 
				
			|||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- helper function
 | 
				
			||||||
 | 
					local function use_checks(user, pointed_thing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- make sure we use on node
 | 
				
			||||||
 | 
						if pointed_thing.type ~= "node" then
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- get position and node info
 | 
				
			||||||
 | 
						local pos = pointed_thing.under
 | 
				
			||||||
 | 
						local node = minetest.get_node(pos)
 | 
				
			||||||
 | 
						local def = minetest.registered_items[node.name]
 | 
				
			||||||
 | 
						local dirt = def and def.groups
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- does node have groups set
 | 
				
			||||||
 | 
						if not dirt then
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- if we're using on ground, move position up
 | 
				
			||||||
 | 
						if dirt.soil or dirt.sand or dirt.can_bonemeal then
 | 
				
			||||||
 | 
							pos = pointed_thing.above
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- check if protected
 | 
				
			||||||
 | 
						if minetest.is_protected(pos, user:get_player_name()) then
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return node
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- global functions
 | 
					-- global functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- add to sapling list
 | 
					-- add to sapling list
 | 
				
			||||||
-- {sapling node, schematic or function name, "soil"|"sand"|specific_node}
 | 
					-- {sapling node, schematic or function name, "soil"|"sand"|specific_node|"group:"}
 | 
				
			||||||
--e.g. {"default:sapling", default.grow_new_apple_tree, "soil"}
 | 
					--e.g. {"default:sapling", default.grow_new_apple_tree, "soil"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function bonemeal:add_sapling(list)
 | 
					function bonemeal:add_sapling(list)
 | 
				
			||||||
@@ -402,9 +399,12 @@ function bonemeal:set_deco(list)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			-- replace existing entry
 | 
								-- replace existing entry
 | 
				
			||||||
			if list[l][1] == deco[n][1] then
 | 
								if list[l][1] == deco[n][1] then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				deco[n][2] = list[l][2]
 | 
									deco[n][2] = list[l][2]
 | 
				
			||||||
				deco[n][3] = list[l][3]
 | 
									deco[n][3] = list[l][3]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				list[l] = false
 | 
									list[l] = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
@@ -436,38 +436,54 @@ function bonemeal:on_use(pos, strength, node)
 | 
				
			|||||||
	if node.name == "default:papyrus" then
 | 
						if node.name == "default:papyrus" then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		default.grow_papyrus(pos, node)
 | 
							default.grow_papyrus(pos, node)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		particle_effect(pos)
 | 
							particle_effect(pos)
 | 
				
			||||||
		return
 | 
					
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elseif node.name == "default:cactus" then
 | 
						elseif node.name == "default:cactus" then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		default.grow_cactus(pos, node)
 | 
							default.grow_cactus(pos, node)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		particle_effect(pos)
 | 
							particle_effect(pos)
 | 
				
			||||||
		return
 | 
					
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						elseif node.name == "default:dry_dirt" and strength == 1 then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							minetest.set_node(pos, {name = "default:dry_dirt_with_dry_grass"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							particle_effect(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- grow grass and flowers
 | 
						-- grow grass and flowers
 | 
				
			||||||
	if minetest.get_item_group(node.name, "soil") > 0
 | 
						if minetest.get_item_group(node.name, "soil") > 0
 | 
				
			||||||
	or minetest.get_item_group(node.name, "sand") > 0
 | 
						or minetest.get_item_group(node.name, "sand") > 0
 | 
				
			||||||
	or minetest.get_item_group(node.name, "can_bonemeal") > 0 then
 | 
						or minetest.get_item_group(node.name, "can_bonemeal") > 0 then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		check_soil(pos, node.name, strength)
 | 
							check_soil(pos, node.name, strength)
 | 
				
			||||||
		return
 | 
					
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- light check depending on strength (strength of 4 = no light needed)
 | 
						-- light check depending on strength (strength of 4 = no light needed)
 | 
				
			||||||
 | 
						local light_ok = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (minetest.get_node_light(pos) or 0) < (12 - (strength * 3)) then
 | 
						if (minetest.get_node_light(pos) or 0) < (12 - (strength * 3)) then
 | 
				
			||||||
		return
 | 
							light_ok = nil
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- check for tree growth if pointing at sapling
 | 
						-- check for sapling growth
 | 
				
			||||||
	if minetest.get_item_group(node.name, "sapling") > 0
 | 
						if check_sapling(pos, node.name, strength, light_ok) then
 | 
				
			||||||
	and random(5 - strength) == 1 then
 | 
							return true
 | 
				
			||||||
		check_sapling(pos, node.name)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- check for crop growth
 | 
						-- check for crop growth
 | 
				
			||||||
	check_crops(pos, node.name, strength)
 | 
						if check_crops(pos, node.name, strength, light_ok) then
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -483,23 +499,19 @@ minetest.register_craftitem("bonemeal:mulch", {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	on_use = function(itemstack, user, pointed_thing)
 | 
						on_use = function(itemstack, user, pointed_thing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- did we point at a node?
 | 
							-- use helper function to do checks and return position and node
 | 
				
			||||||
		if pointed_thing.type ~= "node" then
 | 
							local node = use_checks(user, pointed_thing)
 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- is area protected?
 | 
							if node then
 | 
				
			||||||
		if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- take item if not in creative
 | 
								-- call global on_use function with strength of 1
 | 
				
			||||||
		if not is_creative(user:get_player_name()) then
 | 
								local used = bonemeal:on_use(pointed_thing.under, 1, node)
 | 
				
			||||||
			itemstack:take_item()
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- call global on_use function with strength of 1
 | 
								-- take item if not in creative
 | 
				
			||||||
		bonemeal:on_use(pointed_thing.under, 1)
 | 
								if used and not bonemeal.is_creative(user:get_player_name()) then
 | 
				
			||||||
 | 
									itemstack:take_item()
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return itemstack
 | 
							return itemstack
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -513,23 +525,19 @@ minetest.register_craftitem("bonemeal:bonemeal", {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	on_use = function(itemstack, user, pointed_thing)
 | 
						on_use = function(itemstack, user, pointed_thing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- did we point at a node?
 | 
							-- use helper function to do checks and return position and node
 | 
				
			||||||
		if pointed_thing.type ~= "node" then
 | 
							local node = use_checks(user, pointed_thing)
 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- is area protected?
 | 
							if node then
 | 
				
			||||||
		if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- take item if not in creative
 | 
								-- call global on_use function with strength of 2
 | 
				
			||||||
		if not is_creative(user:get_player_name()) then
 | 
								local used = bonemeal:on_use(pointed_thing.under, 2, node)
 | 
				
			||||||
			itemstack:take_item()
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- call global on_use function with strength of 2
 | 
								-- take item if not in creative
 | 
				
			||||||
		bonemeal:on_use(pointed_thing.under, 2)
 | 
								if used and not bonemeal.is_creative(user:get_player_name()) then
 | 
				
			||||||
 | 
									itemstack:take_item()
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return itemstack
 | 
							return itemstack
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -543,23 +551,19 @@ minetest.register_craftitem("bonemeal:fertiliser", {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	on_use = function(itemstack, user, pointed_thing)
 | 
						on_use = function(itemstack, user, pointed_thing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- did we point at a node?
 | 
							-- use helper function to do checks and return position and node
 | 
				
			||||||
		if pointed_thing.type ~= "node" then
 | 
							local node = use_checks(user, pointed_thing)
 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- is area protected?
 | 
							if node then
 | 
				
			||||||
		if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- take item if not in creative
 | 
								-- call global on_use function with strength of 3
 | 
				
			||||||
		if not is_creative(user:get_player_name()) then
 | 
								local used = bonemeal:on_use(pointed_thing.under, 3, node)
 | 
				
			||||||
			itemstack:take_item()
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		-- call global on_use function with strength of 3
 | 
								-- take item if not in creative
 | 
				
			||||||
		bonemeal:on_use(pointed_thing.under, 3)
 | 
								if used and not bonemeal.is_creative(user:get_player_name()) then
 | 
				
			||||||
 | 
									itemstack:take_item()
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return itemstack
 | 
							return itemstack
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -585,61 +589,69 @@ minetest.register_craftitem("bonemeal:gelatin_powder", {
 | 
				
			|||||||
-- crafting recipes
 | 
					-- crafting recipes
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
-- gelatin powder
 | 
					-- gelatin powder
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	output = "bonemeal:gelatin_powder 4",
 | 
						output = "bonemeal:gelatin_powder 4",
 | 
				
			||||||
	recipe = {
 | 
						recipe = {
 | 
				
			||||||
		{"group:bone", "group:bone", "group:bone"},
 | 
							{"group:bone", "group:bone", "group:bone"},
 | 
				
			||||||
		{"bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water"},
 | 
							{a.bucket_water, a.bucket_water, a.bucket_water},
 | 
				
			||||||
		{"bucket:bucket_water", "default:torch", "bucket:bucket_water"},
 | 
							{a.bucket_water, a.torch, a.bucket_water}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	replacements = {
 | 
						replacements = {
 | 
				
			||||||
		{"bucket:bucket_water", "bucket:bucket_empty 5"},
 | 
							{a.bucket_water, a.bucket_empty .. " 5"}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- bonemeal (from bone)
 | 
					-- bonemeal (from bone)
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	type = "shapeless",
 | 
						type = "cooking",
 | 
				
			||||||
	output = "bonemeal:bonemeal 2",
 | 
						output = "bonemeal:bonemeal 2",
 | 
				
			||||||
	recipe = {"group:bone"}
 | 
						recipe = "group:bone",
 | 
				
			||||||
 | 
						cooktime = 4
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- bonemeal (from player bones)
 | 
					-- bonemeal (from player bones)
 | 
				
			||||||
minetest.register_craft({
 | 
					if minetest.settings:get_bool("bonemeal.disable_deathbones_recipe") ~= true then
 | 
				
			||||||
	type = "shapeless",
 | 
					
 | 
				
			||||||
	output = "bonemeal:bonemeal 4",
 | 
						minetest.register_craft({
 | 
				
			||||||
	recipe = {"bones:bones"}
 | 
							output = "bonemeal:bone 2",
 | 
				
			||||||
})
 | 
							recipe = {{"bones:bones"}}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- bonemeal (from coral skeleton)
 | 
					-- bonemeal (from coral skeleton)
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	type = "shapeless",
 | 
					 | 
				
			||||||
	output = "bonemeal:bonemeal 2",
 | 
						output = "bonemeal:bonemeal 2",
 | 
				
			||||||
	recipe = {"default:coral_skeleton"}
 | 
						recipe = {{a.coral}}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- mulch
 | 
					-- mulch
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	type = "shapeless",
 | 
					 | 
				
			||||||
	output = "bonemeal:mulch 4",
 | 
						output = "bonemeal:mulch 4",
 | 
				
			||||||
	recipe = {
 | 
						recipe = {
 | 
				
			||||||
		"group:tree", "group:leaves", "group:leaves",
 | 
							{"group:tree", "group:leaves", "group:leaves"},
 | 
				
			||||||
		"group:leaves", "group:leaves", "group:leaves",
 | 
							{"group:leaves", "group:leaves", "group:leaves"},
 | 
				
			||||||
		"group:leaves", "group:leaves", "group:leaves"
 | 
							{"group:leaves", "group:leaves", "group:leaves"}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					minetest.register_craft({
 | 
				
			||||||
 | 
						output = "bonemeal:mulch",
 | 
				
			||||||
 | 
						recipe = {
 | 
				
			||||||
 | 
							{"group:seed", "group:seed", "group:seed"},
 | 
				
			||||||
 | 
							{"group:seed", "group:seed", "group:seed"},
 | 
				
			||||||
 | 
							{"group:seed", "group:seed", "group:seed"}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- fertiliser
 | 
					-- fertiliser
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	type = "shapeless",
 | 
					 | 
				
			||||||
	output = "bonemeal:fertiliser 2",
 | 
						output = "bonemeal:fertiliser 2",
 | 
				
			||||||
	recipe = {"bonemeal:bonemeal", "bonemeal:mulch"}
 | 
						recipe = {{"bonemeal:bonemeal", "bonemeal:mulch"}}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- NALC: add bones to dirt but without overriding a previous drop definition
 | 
				
			||||||
-- add bones to dirt
 | 
					-- from other mods.
 | 
				
			||||||
local drop = minetest.registered_items["default:dirt"].drop
 | 
					local drop = minetest.registered_items["default:dirt"].drop
 | 
				
			||||||
if drop then
 | 
					if drop then
 | 
				
			||||||
	table.insert(drop.items, 1, {items = {"bonemeal:bone"}, rarity = 30})
 | 
						table.insert(drop.items, 1, {items = {"bonemeal:bone"}, rarity = 30})
 | 
				
			||||||
@@ -658,8 +670,13 @@ else
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- add support for other mods
 | 
					-- add support for mods
 | 
				
			||||||
dofile(path .. "/mods.lua")
 | 
					dofile(path .. "/mods.lua")
 | 
				
			||||||
dofile(path .. "/lucky_block.lua")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
print (S("[MOD] bonemeal loaded"))
 | 
					-- lucky block support
 | 
				
			||||||
 | 
					if minetest.get_modpath("lucky_block") then
 | 
				
			||||||
 | 
						dofile(path .. "/lucky_block.lua")
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print ("[MOD] Bonemeal loaded")
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										45
									
								
								intllib.lua
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								intllib.lua
									
									
									
									
									
								
							@@ -1,45 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
-- Fallback functions for when `intllib` is not installed.
 | 
					 | 
				
			||||||
-- Code released under Unlicense <http://unlicense.org>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Get the latest version of this file at:
 | 
					 | 
				
			||||||
--   https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local function format(str, ...)
 | 
					 | 
				
			||||||
	local args = { ... }
 | 
					 | 
				
			||||||
	local function repl(escape, open, num, close)
 | 
					 | 
				
			||||||
		if escape == "" then
 | 
					 | 
				
			||||||
			local replacement = tostring(args[tonumber(num)])
 | 
					 | 
				
			||||||
			if open == "" then
 | 
					 | 
				
			||||||
				replacement = replacement..close
 | 
					 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
			return replacement
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			return "@"..open..num..close
 | 
					 | 
				
			||||||
		end
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
	return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local gettext, ngettext
 | 
					 | 
				
			||||||
if minetest.get_modpath("intllib") then
 | 
					 | 
				
			||||||
	if intllib.make_gettext_pair then
 | 
					 | 
				
			||||||
		-- New method using gettext.
 | 
					 | 
				
			||||||
		gettext, ngettext = intllib.make_gettext_pair()
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		-- Old method using text files.
 | 
					 | 
				
			||||||
		gettext = intllib.Getter()
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- Fill in missing functions.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gettext = gettext or function(msgid, ...)
 | 
					 | 
				
			||||||
	return format(msgid, ...)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
 | 
					 | 
				
			||||||
	return format(n==1 and msgid or msgid_plural, ...)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
return gettext, ngettext
 | 
					 | 
				
			||||||
@@ -19,3 +19,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
THE SOFTWARE.
 | 
					THE SOFTWARE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Textures by TenPlus1 (CC0)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								locale/bonemeal.de.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.de.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					Bone=Knochen
 | 
				
			||||||
 | 
					Bone Meal=Knochenmehl
 | 
				
			||||||
 | 
					Fertiliser=Dünger
 | 
				
			||||||
 | 
					Gelatin Powder=Gelatinepulver
 | 
				
			||||||
 | 
					Mulch=Mulch
 | 
				
			||||||
							
								
								
									
										6
									
								
								locale/bonemeal.en.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.en.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					#Bone=
 | 
				
			||||||
 | 
					#Bone Meal=
 | 
				
			||||||
 | 
					#Fertiliser=
 | 
				
			||||||
 | 
					#Gelatin Powder=
 | 
				
			||||||
 | 
					#Mulch=
 | 
				
			||||||
							
								
								
									
										6
									
								
								locale/bonemeal.es.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.es.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					Bone=Hueso
 | 
				
			||||||
 | 
					Bone Meal=Comida de hueso
 | 
				
			||||||
 | 
					Fertiliser=Fertilizante
 | 
				
			||||||
 | 
					#Gelatin Powder=
 | 
				
			||||||
 | 
					Mulch=Mantillo
 | 
				
			||||||
							
								
								
									
										6
									
								
								locale/bonemeal.fr.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.fr.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					Bone=Os
 | 
				
			||||||
 | 
					Bone Meal=Poudre d'os
 | 
				
			||||||
 | 
					Fertiliser=Engrais
 | 
				
			||||||
 | 
					Gelatin Powder=Poudre de gélatine
 | 
				
			||||||
 | 
					Mulch=Paillis
 | 
				
			||||||
							
								
								
									
										6
									
								
								locale/bonemeal.it.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.it.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					Bone=Ossa
 | 
				
			||||||
 | 
					Bone Meal=Pasto osseo
 | 
				
			||||||
 | 
					Fertiliser=Fertilizzante
 | 
				
			||||||
 | 
					#Gelatin Powder=
 | 
				
			||||||
 | 
					Mulch=Pacciame
 | 
				
			||||||
							
								
								
									
										6
									
								
								locale/bonemeal.ru.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/bonemeal.ru.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					# textdomain:bonemeal
 | 
				
			||||||
 | 
					Bone=Кость
 | 
				
			||||||
 | 
					Bone Meal=Костная Мука
 | 
				
			||||||
 | 
					Fertiliser=Удобрение
 | 
				
			||||||
 | 
					#Gelatin Powder=
 | 
				
			||||||
 | 
					Mulch=Мульча
 | 
				
			||||||
							
								
								
									
										10
									
								
								locale/bonemeal.uk.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								locale/bonemeal.uk.tr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					# textdomain: bonemeal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bonemeal=Кісткове борошно
 | 
				
			||||||
 | 
					Adds bone and bonemeal giving the ability to quickly grow plants and saplings.=Додає кістки та кісткове борошно, що дає можливість швидко вирощувати рослини та саджанці.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bone=Кістка
 | 
				
			||||||
 | 
					Bone Meal=Кісткове борошно
 | 
				
			||||||
 | 
					Fertiliser=Добриво
 | 
				
			||||||
 | 
					Gelatin Powder=Желатиновий порошок
 | 
				
			||||||
 | 
					Mulch=Мульча
 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# init.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Mulch = Paillis
 | 
					 | 
				
			||||||
Bone Meal = Poudre d'os
 | 
					 | 
				
			||||||
Fertiliser = Engrais
 | 
					 | 
				
			||||||
Bone = Os
 | 
					 | 
				
			||||||
[MOD] bonemeal loaded = [MOD] bonemeal chargé
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# init.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Mulch = Мульча
 | 
					 | 
				
			||||||
Bone Meal = Костная Мука
 | 
					 | 
				
			||||||
Fertiliser = Удобрение
 | 
					 | 
				
			||||||
Bone = Кость
 | 
					 | 
				
			||||||
[MOD] bonemeal loaded = [MOD] костная мука загружена
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# init.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Mulch = 
 | 
					 | 
				
			||||||
Bone Meal = 
 | 
					 | 
				
			||||||
Fertiliser = 
 | 
					 | 
				
			||||||
Bone = 
 | 
					 | 
				
			||||||
[bonemeal] loaded = 
 | 
					 | 
				
			||||||
@@ -11,19 +11,15 @@ local function growy(pos, player)
 | 
				
			|||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if minetest.get_modpath("lucky_block") then
 | 
					lucky_block:add_blocks({
 | 
				
			||||||
 | 
						{"lig"},
 | 
				
			||||||
	lucky_block:add_blocks({
 | 
						{"dro", {"bonemeal:mulch"}, 10},
 | 
				
			||||||
		{"lig"},
 | 
						{"dro", {"bonemeal:bonemeal"}, 10},
 | 
				
			||||||
		{"dro", {"bonemeal:mulch"}, 10},
 | 
						{"dro", {"bonemeal:fertiliser"}, 10},
 | 
				
			||||||
		{"dro", {"bonemeal:bonemeal"}, 10},
 | 
						{"cus", growy},
 | 
				
			||||||
		{"dro", {"bonemeal:fertiliser"}, 10},
 | 
						{"nod", "default:chest", 0, {
 | 
				
			||||||
		{"cus", growy},
 | 
							{name = "bonemeal:mulch", max = 20},
 | 
				
			||||||
		{"nod", "default:chest", 0, {
 | 
							{name = "bonemeal:bonemeal", max = 15},
 | 
				
			||||||
			{name = "bonemeal:mulch", max = 20},
 | 
							{name = "bonemeal:fertiliser", max = 10}
 | 
				
			||||||
			{name = "bonemeal:bonemeal", max = 15},
 | 
						}}
 | 
				
			||||||
			{name = "bonemeal:fertiliser", max = 10},
 | 
					})
 | 
				
			||||||
		}},
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								mod.conf
									
									
									
									
									
								
							@@ -1 +1,4 @@
 | 
				
			|||||||
name = bonemeal
 | 
					name = bonemeal
 | 
				
			||||||
 | 
					description = Adds bone and bonemeal giving the ability to quickly grow plants and saplings.
 | 
				
			||||||
 | 
					optional_depends = default, mcl_core, lucky_block, farming, ethereal, moretrees, technic_worldgen, flowers, dye, ferns, dryplants, df_trees, df_farming, df_primordial_items, everness
 | 
				
			||||||
 | 
					min_minetest_version = 5.0
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										327
									
								
								mods.lua
									
									
									
									
									
								
							
							
						
						
									
										327
									
								
								mods.lua
									
									
									
									
									
								
							@@ -3,9 +3,101 @@
 | 
				
			|||||||
if minetest.get_modpath("animalmaterials") then
 | 
					if minetest.get_modpath("animalmaterials") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	minetest.register_craft({
 | 
						minetest.register_craft({
 | 
				
			||||||
		type = "shapeless",
 | 
					 | 
				
			||||||
		output = "bonemeal:bonemeal 2",
 | 
							output = "bonemeal:bonemeal 2",
 | 
				
			||||||
		recipe = {"animalmaterials:bone"}
 | 
							recipe = {{"animalmaterials:bone"}}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("default") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- saplings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function pine_grow(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if minetest.find_node_near(pos, 1,
 | 
				
			||||||
 | 
								{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								default.grow_new_snowy_pine_tree(pos)
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								default.grow_new_pine_tree(pos)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function cactus_grow(pos)
 | 
				
			||||||
 | 
							default.grow_cactus(pos, minetest.get_node(pos))
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function papyrus_grow(pos)
 | 
				
			||||||
 | 
							default.grow_papyrus(pos, minetest.get_node(pos))
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"default:sapling", default.grow_new_apple_tree, "soil"},
 | 
				
			||||||
 | 
							{"default:junglesapling", default.grow_new_jungle_tree, "soil"},
 | 
				
			||||||
 | 
							{"default:emergent_jungle_sapling", default.grow_new_emergent_jungle_tree, "soil"},
 | 
				
			||||||
 | 
							{"default:acacia_sapling", default.grow_new_acacia_tree, "soil"},
 | 
				
			||||||
 | 
							{"default:aspen_sapling", default.grow_new_aspen_tree, "soil"},
 | 
				
			||||||
 | 
							{"default:pine_sapling", pine_grow, "soil"},
 | 
				
			||||||
 | 
							{"default:bush_sapling", default.grow_bush, "soil"},
 | 
				
			||||||
 | 
							{"default:acacia_bush_sapling", default.grow_acacia_bush, "soil"},
 | 
				
			||||||
 | 
							{"default:large_cactus_seedling", default.grow_large_cactus, "sand"},
 | 
				
			||||||
 | 
							{"default:blueberry_bush_sapling", default.grow_blueberry_bush, "soil"},
 | 
				
			||||||
 | 
							{"default:pine_bush_sapling", default.grow_pine_bush, "soil"},
 | 
				
			||||||
 | 
							{"default:cactus", cactus_grow, "sand"},
 | 
				
			||||||
 | 
							{"default:papyrus", papyrus_grow, "soil"}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						-- decoration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local green_grass = {
 | 
				
			||||||
 | 
							"default:grass_2", "default:grass_3", "default:grass_4",
 | 
				
			||||||
 | 
							"default:grass_5", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local dry_grass = {
 | 
				
			||||||
 | 
							"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
 | 
				
			||||||
 | 
							"default:dry_grass_5", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local flowers = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						minetest.after(0.1, function()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for node, def in pairs(minetest.registered_nodes) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if def.groups
 | 
				
			||||||
 | 
								and def.groups.flower
 | 
				
			||||||
 | 
								and not node:find("waterlily")
 | 
				
			||||||
 | 
								and not node:find("seaweed")
 | 
				
			||||||
 | 
								and not node:find("xdecor:potted_")
 | 
				
			||||||
 | 
								and not node:find("df_farming:") then
 | 
				
			||||||
 | 
									flowers[#flowers + 1] = node
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_deco({
 | 
				
			||||||
 | 
							{"default:dirt", bonemeal.green_grass, flowers},
 | 
				
			||||||
 | 
							{"default:dirt_with_grass", green_grass, flowers},
 | 
				
			||||||
 | 
							{"default:dry_dirt", dry_grass, {}},
 | 
				
			||||||
 | 
							{"default:dry_dirt_with_dry_grass", dry_grass, {}},
 | 
				
			||||||
 | 
							{"default:dirt_with_dry_grass", dry_grass, flowers},
 | 
				
			||||||
 | 
							{"default:sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
				
			||||||
 | 
							{"default:desert_sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
				
			||||||
 | 
							{"default:silver_sand", {}, {"default:dry_shrub", "", "", ""} },
 | 
				
			||||||
 | 
							{"default:dirt_with_rainforest_litter", {}, {"default:junglegrass", "", "", ""} },
 | 
				
			||||||
 | 
							{"default:dirt_with_coniferous_litter", {}, {"default:fern_1", "default:fern_2",
 | 
				
			||||||
 | 
								"default:fern_3", "", "", ""}}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if farming then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_crop({
 | 
				
			||||||
 | 
							{"farming:cotton_", 8, "farming:seed_cotton"},
 | 
				
			||||||
 | 
							{"farming:wheat_", 8, "farming:seed_wheat"}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -26,20 +118,33 @@ if farming and farming.mod and farming.mod == "redo" then
 | 
				
			|||||||
		{"farming:cucumber_", 4},
 | 
							{"farming:cucumber_", 4},
 | 
				
			||||||
		{"farming:potato_", 4},
 | 
							{"farming:potato_", 4},
 | 
				
			||||||
		{"farming:grapes_", 8},
 | 
							{"farming:grapes_", 8},
 | 
				
			||||||
		{"farming:rhubarb_", 3},
 | 
							{"farming:rhubarb_", 4},
 | 
				
			||||||
		{"farming:barley_", 7},
 | 
							{"farming:barley_", 8, "farming:seed_barley"},
 | 
				
			||||||
		{"farming:hemp_", 8},
 | 
							{"farming:hemp_", 8, "farming:seed_hemp"},
 | 
				
			||||||
		{"farming:chili_", 8},
 | 
							{"farming:chili_", 8},
 | 
				
			||||||
		{"farming:garlic_", 5},
 | 
							{"farming:garlic_", 5},
 | 
				
			||||||
		{"farming:onion_", 5},
 | 
							{"farming:onion_", 5},
 | 
				
			||||||
		{"farming:pepper_", 5},
 | 
							{"farming:pepper_", 7},
 | 
				
			||||||
		{"farming:pineapple_", 8},
 | 
							{"farming:pineapple_", 8},
 | 
				
			||||||
		{"farming:pea_", 5},
 | 
							{"farming:pea_", 5},
 | 
				
			||||||
		{"farming:beetroot_", 5},
 | 
							{"farming:beetroot_", 5},
 | 
				
			||||||
		{"farming:rye_", 8},
 | 
							{"farming:rye_", 8, "farming:seed_rye"},
 | 
				
			||||||
		{"farming:oat_", 8},
 | 
							{"farming:oat_", 8, "farming:seed_oat"},
 | 
				
			||||||
		{"farming:rice_", 8},
 | 
							{"farming:rice_", 8, "farming:seed_rice"},
 | 
				
			||||||
		{"farming:mint_", 4}
 | 
							{"farming:mint_", 4, "farming:seed_mint"},
 | 
				
			||||||
 | 
							{"farming:cabbage_", 6},
 | 
				
			||||||
 | 
							{"farming:lettuce_", 5},
 | 
				
			||||||
 | 
							{"farming:blackberry_", 4},
 | 
				
			||||||
 | 
							{"farming:vanilla_", 8},
 | 
				
			||||||
 | 
							{"farming:soy_", 7},
 | 
				
			||||||
 | 
							{"farming:artichoke_", 5},
 | 
				
			||||||
 | 
							{"farming:parsley_", 3},
 | 
				
			||||||
 | 
							{"farming:sunflower_", 8, "farming:seed_sunflower"},
 | 
				
			||||||
 | 
							{"farming:asparagus_", 5},
 | 
				
			||||||
 | 
							{"farming:eggplant_", 4},
 | 
				
			||||||
 | 
							{"farming:spinach_", 4},
 | 
				
			||||||
 | 
							{"farming:ginger_", 4},
 | 
				
			||||||
 | 
							{"ethereal:strawberry_", 8}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,12 +164,17 @@ if minetest.get_modpath("ethereal") then
 | 
				
			|||||||
		{"ethereal:banana_tree_sapling", ethereal.grow_banana_tree, "soil"},
 | 
							{"ethereal:banana_tree_sapling", ethereal.grow_banana_tree, "soil"},
 | 
				
			||||||
		{"ethereal:frost_tree_sapling", ethereal.grow_frost_tree, "soil"},
 | 
							{"ethereal:frost_tree_sapling", ethereal.grow_frost_tree, "soil"},
 | 
				
			||||||
		{"ethereal:mushroom_sapling", ethereal.grow_mushroom_tree, "soil"},
 | 
							{"ethereal:mushroom_sapling", ethereal.grow_mushroom_tree, "soil"},
 | 
				
			||||||
 | 
							{"ethereal:mushroom_brown_sapling", ethereal.grow_mushroom_brown_tree, "soil"},
 | 
				
			||||||
		{"ethereal:willow_sapling", ethereal.grow_willow_tree, "soil"},
 | 
							{"ethereal:willow_sapling", ethereal.grow_willow_tree, "soil"},
 | 
				
			||||||
		{"ethereal:redwood_sapling", ethereal.grow_redwood_tree, "soil"},
 | 
							{"ethereal:redwood_sapling", ethereal.grow_redwood_tree, "soil"},
 | 
				
			||||||
 | 
							{"ethereal:giant_redwood_sapling", ethereal.grow_giant_redwood_tree, "soil"},
 | 
				
			||||||
		{"ethereal:orange_tree_sapling", ethereal.grow_orange_tree, "soil"},
 | 
							{"ethereal:orange_tree_sapling", ethereal.grow_orange_tree, "soil"},
 | 
				
			||||||
		{"ethereal:bamboo_sprout", ethereal.grow_bamboo_tree, "soil"},
 | 
							{"ethereal:bamboo_sprout", ethereal.grow_bamboo_tree, "soil"},
 | 
				
			||||||
		{"ethereal:birch_sapling", ethereal.grow_birch_tree, "soil"},
 | 
							{"ethereal:birch_sapling", ethereal.grow_birch_tree, "soil"},
 | 
				
			||||||
		{"ethereal:sakura_sapling", ethereal.grow_sakura_tree, "soil"}
 | 
							{"ethereal:sakura_sapling", ethereal.grow_sakura_tree, "soil"},
 | 
				
			||||||
 | 
							{"ethereal:lemon_tree_sapling", ethereal.grow_lemon_tree, "soil"},
 | 
				
			||||||
 | 
							{"ethereal:olive_tree_sapling", ethereal.grow_olive_tree, "soil"},
 | 
				
			||||||
 | 
							{"ethereal:basandra_bush_sapling", ethereal.grow_basandra_bush, "soil"}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local grass = {"default:grass_3", "default:grass_4", "default:grass_5", ""}
 | 
						local grass = {"default:grass_3", "default:grass_4", "default:grass_5", ""}
 | 
				
			||||||
@@ -77,7 +187,8 @@ if minetest.get_modpath("ethereal") then
 | 
				
			|||||||
			"flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}},
 | 
								"flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}},
 | 
				
			||||||
		{"ethereal:gray_dirt", {}, {"ethereal:snowygrass", "", ""}},
 | 
							{"ethereal:gray_dirt", {}, {"ethereal:snowygrass", "", ""}},
 | 
				
			||||||
		{"ethereal:cold_dirt", {}, {"ethereal:snowygrass", "", ""}},
 | 
							{"ethereal:cold_dirt", {}, {"ethereal:snowygrass", "", ""}},
 | 
				
			||||||
		{"ethereal:mushroom_dirt", {}, {"flowers:mushroom_red", "flowers:mushroom_brown", "", "", ""}},
 | 
							{"ethereal:mushroom_dirt", {}, {"flowers:mushroom_red", "flowers:mushroom_brown",
 | 
				
			||||||
 | 
									"ethereal:spore_grass", "ethereal:spore_grass", "", "", ""}},
 | 
				
			||||||
		{"ethereal:jungle_dirt", grass, {"default:junglegrass", "", "", ""}},
 | 
							{"ethereal:jungle_dirt", grass, {"default:junglegrass", "", "", ""}},
 | 
				
			||||||
		{"ethereal:grove_dirt", grass, {"ethereal:fern", "", "", ""}},
 | 
							{"ethereal:grove_dirt", grass, {"ethereal:fern", "", "", ""}},
 | 
				
			||||||
		{"ethereal:bamboo_dirt", grass, {}}
 | 
							{"ethereal:bamboo_dirt", grass, {}}
 | 
				
			||||||
@@ -104,16 +215,15 @@ if minetest.get_modpath("moretrees") then
 | 
				
			|||||||
		{"moretrees:apple_tree_sapling", moretrees.spawn_apple_tree_object, "soil"},
 | 
							{"moretrees:apple_tree_sapling", moretrees.spawn_apple_tree_object, "soil"},
 | 
				
			||||||
		{"moretrees:oak_sapling", moretrees.spawn_oak_object, "soil"},
 | 
							{"moretrees:oak_sapling", moretrees.spawn_oak_object, "soil"},
 | 
				
			||||||
		{"moretrees:sequoia_sapling", moretrees.spawn_sequoia_object, "soil"},
 | 
							{"moretrees:sequoia_sapling", moretrees.spawn_sequoia_object, "soil"},
 | 
				
			||||||
		--{"moretrees:birch_sapling", moretrees.spawn_birch_object, "soil"},
 | 
					 | 
				
			||||||
		{"moretrees:birch_sapling", moretrees.grow_birch, "soil"},
 | 
							{"moretrees:birch_sapling", moretrees.grow_birch, "soil"},
 | 
				
			||||||
		{"moretrees:palm_sapling", moretrees.spawn_palm_object, "soil"},
 | 
							{"moretrees:palm_sapling", moretrees.spawn_palm_object, "soil"},
 | 
				
			||||||
		{"moretrees:palm_sapling", moretrees.spawn_palm_object, "sand"},
 | 
							{"moretrees:palm_sapling", moretrees.spawn_palm_object, "sand"},
 | 
				
			||||||
		{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "soil"},
 | 
							{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "soil"},
 | 
				
			||||||
		{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "sand"},
 | 
							{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "sand"},
 | 
				
			||||||
		--{"moretrees:spruce_sapling", moretrees.spawn_spruce_object, "soil"},
 | 
					 | 
				
			||||||
		{"moretrees:spruce_sapling", moretrees.grow_spruce, "soil"},
 | 
							{"moretrees:spruce_sapling", moretrees.grow_spruce, "soil"},
 | 
				
			||||||
		{"moretrees:cedar_sapling", moretrees.spawn_cedar_object, "soil"},
 | 
							{"moretrees:cedar_sapling", moretrees.spawn_cedar_object, "soil"},
 | 
				
			||||||
		{"moretrees:poplar_sapling", moretrees.spawn_poplar_object, "soil"},
 | 
							{"moretrees:poplar_sapling", moretrees.spawn_poplar_object, "soil"},
 | 
				
			||||||
 | 
							{"moretrees:poplar_small_sapling", moretrees.spawn_poplar_small_object, "soil"},
 | 
				
			||||||
		{"moretrees:willow_sapling", moretrees.spawn_willow_object, "soil"},
 | 
							{"moretrees:willow_sapling", moretrees.spawn_willow_object, "soil"},
 | 
				
			||||||
		{"moretrees:rubber_tree_sapling", moretrees.spawn_rubber_tree_object, "soil"},
 | 
							{"moretrees:rubber_tree_sapling", moretrees.spawn_rubber_tree_object, "soil"},
 | 
				
			||||||
		{"moretrees:fir_sapling", fir_grow, "soil"}
 | 
							{"moretrees:fir_sapling", fir_grow, "soil"}
 | 
				
			||||||
@@ -144,10 +254,32 @@ if minetest.get_modpath("caverealms") then
 | 
				
			|||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local function y_func(grow_func)
 | 
				
			||||||
 | 
						return function(pos)
 | 
				
			||||||
 | 
							grow_func({x = pos.x, y = pos.y - 1, z = pos.z})
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("ferns") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"ferns:sapling_giant_tree_fern", y_func(abstract_ferns.grow_giant_tree_fern), "soil"},
 | 
				
			||||||
 | 
							{"ferns:sapling_giant_tree_fern", y_func(abstract_ferns.grow_giant_tree_fern), "sand"},
 | 
				
			||||||
 | 
							{"ferns:sapling_tree_fern", y_func(abstract_ferns.grow_tree_fern), "soil"}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("dryplants") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"dryplants:reedmace_sapling", y_func(abstract_dryplants.grow_reedmace), "soil"}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if minetest.get_modpath("dye") then
 | 
					if minetest.get_modpath("dye") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local bonemeal_dyes = {
 | 
						local bonemeal_dyes = {bonemeal = "white", fertiliser = "green", mulch = "brown"}
 | 
				
			||||||
			bonemeal = "white", fertiliser = "green", mulch = "brown"}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for mat, dye in pairs(bonemeal_dyes) do
 | 
						for mat, dye in pairs(bonemeal_dyes) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -159,3 +291,166 @@ if minetest.get_modpath("dye") then
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("df_trees") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function spore_tree_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_spore_tree(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function fungiwood_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_fungiwood(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function tunnel_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_tunnel_tube(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function black_cap_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_black_cap(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function goblin_cap_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_goblin_cap(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function tower_cap_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_tower_cap(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function nether_cap_fix(pos)
 | 
				
			||||||
 | 
							minetest.remove_node(pos) ; df_trees.spawn_nether_cap(pos)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"df_trees:black_cap_sapling", black_cap_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:fungiwood_sapling", fungiwood_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:goblin_cap_sapling", goblin_cap_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:spore_tree_sapling", spore_tree_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:tower_cap_sapling", tower_cap_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:tunnel_tube_sapling", tunnel_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:nether_cap_sapling", nether_cap_fix, "group:nether_cap", true},
 | 
				
			||||||
 | 
							{"df_trees:nether_cap_sapling", nether_cap_fix, "group:cools_lava", true}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("df_farming") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_crop({
 | 
				
			||||||
 | 
							{"df_farming:cave_wheat_", 8, "df_farming:cave_wheat_seed", true},
 | 
				
			||||||
 | 
							{"df_farming:dimple_cup_", 4, "df_farming:dimple_cup_seed", true},
 | 
				
			||||||
 | 
							{"df_farming:pig_tail_", 8, "df_farming:pig_tail_seed", true},
 | 
				
			||||||
 | 
							{"df_farming:plump_helmet_", 4, "df_farming:plump_helmet_spawn", true},
 | 
				
			||||||
 | 
							{"df_farming:quarry_bush_", 5, "df_farming:quarry_bush_seed", true},
 | 
				
			||||||
 | 
							{"df_farming:sweet_pod_", 6, "df_farming:sweet_pod_seed", true}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("df_primordial_items") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function mush_fix(pos)
 | 
				
			||||||
 | 
							minetest.set_node(pos, {name = "air"})
 | 
				
			||||||
 | 
							mapgen_helper.place_schematic(pos,
 | 
				
			||||||
 | 
								df_primordial_items.get_primordial_mushroom(), (math.random(4) - 1) * 90)
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function fern_fix(pos)
 | 
				
			||||||
 | 
							minetest.set_node(pos, {name = "air"})
 | 
				
			||||||
 | 
							local rotations = {0, 90, 180, 270}
 | 
				
			||||||
 | 
							mapgen_helper.place_schematic(pos,
 | 
				
			||||||
 | 
								df_primordial_items.get_fern_schematic(), rotations[math.random(#rotations)])
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function blood_fix(pos)
 | 
				
			||||||
 | 
							df_trees.grow_blood_thorn(pos, minetest.get_node(pos))
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"df_primordial_items:jungle_mushroom_sapling",
 | 
				
			||||||
 | 
									df_primordial_items.spawn_jungle_mushroom, "soil", true},
 | 
				
			||||||
 | 
							{"df_primordial_items:jungletree_sapling",
 | 
				
			||||||
 | 
									df_primordial_items.spawn_jungle_tree, "soil", true},
 | 
				
			||||||
 | 
							{"df_primordial_items:mush_sapling", mush_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_primordial_items:fern_sapling", fern_fix, "soil", true},
 | 
				
			||||||
 | 
							{"df_trees:blood_thorn", blood_fix, "sand", true}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local jgrass = {
 | 
				
			||||||
 | 
							"df_primordial_items:jungle_grass_1",
 | 
				
			||||||
 | 
							"df_primordial_items:jungle_grass_2",
 | 
				
			||||||
 | 
							"df_primordial_items:jungle_grass_3",
 | 
				
			||||||
 | 
							"df_primordial_items:fern_1",
 | 
				
			||||||
 | 
							"df_primordial_items:fern_2",
 | 
				
			||||||
 | 
							"", "", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local jdeco = {
 | 
				
			||||||
 | 
							"df_primordial_items:jungle_mushroom_1",
 | 
				
			||||||
 | 
							"df_primordial_items:jungle_mushroom_2",
 | 
				
			||||||
 | 
							"df_primordial_items:glow_plant_1",
 | 
				
			||||||
 | 
							"df_primordial_items:glow_plant_2",
 | 
				
			||||||
 | 
							"df_primordial_items:glow_plant_3",
 | 
				
			||||||
 | 
							"", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_deco({
 | 
				
			||||||
 | 
							{"df_primordial_items:dirt_with_jungle_grass", jgrass, jdeco}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local fgrass = {
 | 
				
			||||||
 | 
							"df_primordial_items:fungal_grass_1",
 | 
				
			||||||
 | 
							"df_primordial_items:fungal_grass_2",
 | 
				
			||||||
 | 
							"", "", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local fdeco = {
 | 
				
			||||||
 | 
							"df_primordial_items:glow_orb_stalks",
 | 
				
			||||||
 | 
							"df_primordial_items:glow_pods",
 | 
				
			||||||
 | 
							"", "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_deco({
 | 
				
			||||||
 | 
							{"df_primordial_items:dirt_with_mycelium", fgrass, fdeco}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("everness") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"everness:baobab_sapling", Everness.grow_baobab_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:coral_tree_bioluminescent_sapling",
 | 
				
			||||||
 | 
									Everness.coral_tree_bioluminescent, "soil"},
 | 
				
			||||||
 | 
							{"everness:coral_tree_sapling", Everness.grow_coral_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:crystal_bush_sapling", Everness.grow_crystal_bush, "soil"},
 | 
				
			||||||
 | 
							{"everness:crystal_tree_large_sapling", Everness.grow_crystal_large_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:crystal_tree_sapling", Everness.grow_crystal_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:cursed_bush_sapling", Everness.grow_cursed_bush, "soil"},
 | 
				
			||||||
 | 
							{"everness:cursed_dream_tree_sapling", Everness.grow_cursed_dream_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:dry_tree_sapling", Everness.grow_dry_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:sequoia_tree_sapling", Everness.grow_sequoia_tree, "soil"},
 | 
				
			||||||
 | 
							{"everness:willow_tree_sapling", Everness.grow_willow_tree, "soil"}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if minetest.get_modpath("bushes_classic") then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local function grow_bush(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							local meta = minetest.get_meta(pos)
 | 
				
			||||||
 | 
							local bush_name = meta:get_string("bush_type")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							-- only change if meta found
 | 
				
			||||||
 | 
							if meta and bush_name then
 | 
				
			||||||
 | 
								minetest.swap_node(pos, {name = "bushes:" .. bush_name .. "_bush"})
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bonemeal:add_sapling({
 | 
				
			||||||
 | 
							{"bushes:fruitless_bush", grow_bush, "soil"},
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								screenshot.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								screenshot.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 114 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								screenshot.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								screenshot.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										2
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					# Disable recipe for bones:bones to craft into bonemeal
 | 
				
			||||||
 | 
					bonemeal.disable_deathbones_recipe (Disable recipe for death bones into bonemeal) bool false
 | 
				
			||||||
		Reference in New Issue
	
	Block a user