diff options
| author | TenPlus1 <kinsellaja@yahoo.com> | 2017-01-18 15:53:26 +0000 | 
|---|---|---|
| committer | TenPlus1 <kinsellaja@yahoo.com> | 2017-01-18 15:53:26 +0000 | 
| commit | ae18b73c4124a60d142dcbfadcbd54b483645ea3 (patch) | |
| tree | 4dffc2a5c1ed9ca4402a7fbd69818f9a554da3b8 | |
| parent | 6a9ca6e20287eab23bbb55a3a15cb488fa0e45fc (diff) | |
added mulch and fertiliser items as well as new strength variable
| -rw-r--r-- | README.md | 16 | ||||
| -rw-r--r-- | api.txt | 7 | ||||
| -rw-r--r-- | init.lua | 144 | ||||
| -rw-r--r-- | textures/bonemeal_fertiliser.png | bin | 0 -> 186 bytes | |||
| -rw-r--r-- | textures/bonemeal_mulch.png | bin | 0 -> 186 bytes | 
5 files changed, 135 insertions, 32 deletions
| @@ -1,11 +1,16 @@  Bonemeal mod [bonemeal] -This mod adds two new items into the game, bones which can be dug from normal -dirt and bonemeal which is crafted from bones and player bone blocks. +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 +8x leaves, and fertiliser which is a mixture of them both. -Bonemeal can be used on added saplings for a 1 in 2 chance to grow them quickly -as well as specified crops which are grown 1 to 4 steps at a time.  Dirt can -also be clicked for random grass, flowers or registered decoration to appear. +Each item can be used on saplings and crops for a chance to grow them quicker as +well as dirt which will generate random grass, flowers or whichever decoration +is registered. + +Mulch has a strength of 1, Bonemeal 2 and Fertiliser 3 which means the stronger +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.  The 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 file gives you @@ -17,3 +22,4 @@ Changelog:  - 0.1 - Initial release  - 0.2 - Added global on_use function for bonemeal growth +- 0.3 - Added strength to on_use global for new items (mulch and fertiliser). @@ -57,14 +57,17 @@ bonemeal:add_deco({"default:dirt_with_dry_grass", {"default:dry_grass_1", ""},  Global ON_USE Function  ---------------------- -bonemeal:on_use(pos) +bonemeal:on_use(pos, strength)  This function can be called from other mods to grow plants using alternative  bonemeal items and have the same effect. +  {pos} is the location to apply growing +  {strength} is how strong to grow [low of 1 to high of 4] +  Final Words  ===========  I hope this guide helps you add your own plants so you can grow them quickly -with bonemeal.  Please check the mods.lua for more examples. +with the items included.  Please check the mods.lua for more examples. @@ -59,7 +59,7 @@ end  -- default biomes deco
  local deco = {
  	{"default:dirt_with_dry_grass", dry_grass, flowers},
 -	{"default:sand", {}, {"default:dry_shrub", "", ""} },
 +	{"default:sand", {}, {"default:dry_shrub", "", "", ""} },
  	{"default:desert_sand", {}, {"default:dry_shrub", "", "", ""} },
  	{"default:silver_sand", {}, {"default:dry_shrub", "", "", ""} },
  }
 @@ -104,7 +104,6 @@ local function grow_tree(pos, object)  	elseif type(object) == "function" then
  		-- function
  		object(pos)
 -
  	end
  end
 @@ -112,11 +111,6 @@ end  -- sapling check
  local function check_sapling(pos, nodename)
 -	-- 1 in 2 chance of spawning sapling
 -	if math.random(1, 2) == 1 then
 -		return
 -	end
 -
  	-- what is sapling placed on?
  	local under =  minetest.get_node({
  		x = pos.x,
 @@ -167,7 +161,7 @@ end  -- crops check
 -local function check_crops(pos, nodename)
 +local function check_crops(pos, nodename, strength)
  	local stage = ""
 @@ -179,7 +173,7 @@ local function check_crops(pos, nodename)  			-- get stage number or set to 0 for seed
  			stage = tonumber( nodename:split("_")[2] ) or 0
 -			stage = math.min(stage + math.random(1, 4), crops[n][2])
 +			stage = math.min(stage + strength, crops[n][2])
  			minetest.set_node(pos, {name = crops[n][1] .. stage})
 @@ -195,11 +189,16 @@ end  -- check soil for specific decoration placement
 -local function check_soil(pos, nodename)
 +local function check_soil(pos, nodename, strength)
 +
 +	-- set radius according to strength
 +	local side = strength - 1
 +	local tall = math.max(strength - 2, 0)
 +	-- get area of land with free space above
  	local dirt = minetest.find_nodes_in_area_under_air(
 -		{x = pos.x - 2, y = pos.y - 1, z = pos.z - 2},
 -		{x = pos.x + 2, y = pos.y + 1, z = pos.z + 2},
 +		{x = pos.x - side, y = pos.y - tall, z = pos.z - side},
 +		{x = pos.x + side, y = pos.y + tall, z = pos.z + side},
  		{"group:soil", "group:sand"})
  	-- set default grass and decoration
 @@ -282,7 +281,7 @@ end  -- global on_use function for bonemeal
 -function bonemeal:on_use(pos)
 +function bonemeal:on_use(pos, strength)
  	-- get node pointed at
  	local node = minetest.get_node(pos)
 @@ -292,27 +291,68 @@ function bonemeal:on_use(pos)  		return
  	end
 +	-- make sure strength is between 1 and 4
 +	strength = strength or 2
 +	strength = math.max(strength, 1)
 +	strength = math.min(strength, 4)
 +
 +	-- grow grass and flowers
 +	if minetest.get_item_group(node.name, "soil") > 0
 +	or minetest.get_item_group(node.name, "sand") > 0 then
 +		check_soil(pos, node.name, strength)
 +		return
 +	end
 +
 +	-- light check depending on strength (strength of 4 = no light needed)
 +	if (minetest.get_node_light(pos) or 0) < (12 - (strength * 3)) then
 +		return
 +	end
 +
  	-- check for tree growth if pointing at sapling
 -	if minetest.get_item_group(node.name, "sapling") > 0 then
 +	if minetest.get_item_group(node.name, "sapling") > 0
 +	and math.random(1, (5 - strength)) == 1 then
  		check_sapling(pos, node.name)
  		return
  	end
  	-- check for crop growth
 -	check_crops(pos, node.name)
 -
 -	-- grow grass and flowers
 -	if minetest.get_item_group(node.name, "soil") > 0
 -	or minetest.get_item_group(node.name, "sand") > 0 then
 -		check_soil(pos, node.name)
 -	end
 +	check_crops(pos, node.name, strength)
  end
  ----- items
 --- bonemeal item
 +-- mulch (strength 1)
 +minetest.register_craftitem("bonemeal:mulch", {
 +	description = "Mulch",
 +	inventory_image = "bonemeal_mulch.png",
 +
 +	on_use = function(itemstack, user, pointed_thing)
 +
 +		-- did we point at a node?
 +		if pointed_thing.type ~= "node" then
 +			return
 +		end
 +
 +		-- is area protected?
 +		if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
 +			return
 +		end
 +
 +		-- take item if not in creative
 +		if not minetest.setting_getbool("creative_mode") then
 +			itemstack:take_item()
 +		end
 +
 +		-- call global on_use function with strength of 1
 +		bonemeal:on_use(pointed_thing.under, 1)
 +
 +		return itemstack
 +	end,
 +})
 +
 +-- bonemeal (strength 2)
  minetest.register_craftitem("bonemeal:bonemeal", {
  	description = "Bone Meal",
  	inventory_image = "bonemeal_item.png",
 @@ -334,8 +374,38 @@ minetest.register_craftitem("bonemeal:bonemeal", {  			itemstack:take_item()
  		end
 -		-- get position and call global on_use function
 -		bonemeal:on_use(pointed_thing.under)
 +		-- call global on_use function with strength of 2
 +		bonemeal:on_use(pointed_thing.under, 2)
 +
 +		return itemstack
 +	end,
 +})
 +
 +
 +-- fertiliser (strength 3)
 +minetest.register_craftitem("bonemeal:fertiliser", {
 +	description = "Fertiliser",
 +	inventory_image = "bonemeal_fertiliser.png",
 +
 +	on_use = function(itemstack, user, pointed_thing)
 +
 +		-- did we point at a node?
 +		if pointed_thing.type ~= "node" then
 +			return
 +		end
 +
 +		-- is area protected?
 +		if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
 +			return
 +		end
 +
 +		-- take item if not in creative
 +		if not minetest.setting_getbool("creative_mode") then
 +			itemstack:take_item()
 +		end
 +
 +		-- call global on_use function with strength of 3
 +		bonemeal:on_use(pointed_thing.under, 3)
  		return itemstack
  	end,
 @@ -348,19 +418,43 @@ minetest.register_craftitem("bonemeal:bone", {  	inventory_image = "bonemeal_bone.png",
  })
 --- bonemeal recipes
 +
 +--- crafting recipes
 +
 +
 +-- bonemeal (from bone)
  minetest.register_craft({
  	type = "shapeless",
  	output = "bonemeal:bonemeal 2",
  	recipe = {"bonemeal:bone"},
  })
 +-- bonemeal (from player bones)
  minetest.register_craft({
  	type = "shapeless",
  	output = "bonemeal:bonemeal 4",
  	recipe = {"bones:bones"},
  })
 +-- mulch
 +minetest.register_craft({
 +	type = "shapeless",
 +	output = "bonemeal:mulch 4",
 +	recipe = {
 +		"group:tree", "group:leaves", "group:leaves",
 +		"group:leaves", "group:leaves", "group:leaves",
 +		"group:leaves", "group:leaves", "group:leaves"
 +	},
 +})
 +
 +-- fertiliser
 +minetest.register_craft({
 +	type = "shapeless",
 +	output = "bonemeal:fertiliser 2",
 +	recipe = {"bonemeal:bonemeal", "bonemeal:mulch"},
 +})
 +
 +
  -- add bones to dirt
  minetest.override_item("default:dirt", {
  	drop = {
 diff --git a/textures/bonemeal_fertiliser.png b/textures/bonemeal_fertiliser.pngBinary files differ new file mode 100644 index 0000000..b187c9a --- /dev/null +++ b/textures/bonemeal_fertiliser.png diff --git a/textures/bonemeal_mulch.png b/textures/bonemeal_mulch.pngBinary files differ new file mode 100644 index 0000000..df00ac2 --- /dev/null +++ b/textures/bonemeal_mulch.png | 
