2014-03-12 19:06:27 +01:00
|
|
|
-- Boilerplate to support localized strings if intllib mod is installed.
|
|
|
|
local S
|
|
|
|
if (minetest.get_modpath("intllib")) then
|
|
|
|
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
|
|
|
S = intllib.Getter(minetest.get_current_modname())
|
|
|
|
else
|
|
|
|
S = function ( s ) return s end
|
|
|
|
end
|
2013-10-29 02:11:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
plantlife_bushes = {}
|
|
|
|
|
|
|
|
-- TODO: add support for nodebreakers? those dig like mese picks
|
|
|
|
plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|
|
|
if( not( digger ) or not( pos ) or not (oldnode )) then
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
|
|
|
-- find out which bush type we are dealing with
|
|
|
|
local bush_name = "";
|
|
|
|
local can_harvest = false;
|
|
|
|
|
|
|
|
if( oldnode.name == 'bushes:fruitless_bush' ) then
|
|
|
|
-- this bush has not grown fruits yet (but will eventually)
|
|
|
|
bush_name = oldmetadata[ 'fields' ][ 'bush_type' ];
|
|
|
|
-- no fruits to be found, so can_harvest stays false
|
|
|
|
else
|
|
|
|
local name_parts = oldnode.name:split( ":" );
|
|
|
|
if( #name_parts >= 2 and name_parts[2]~=nil ) then
|
|
|
|
|
|
|
|
name_parts = name_parts[2]:split( "_" );
|
|
|
|
|
|
|
|
if( #name_parts >= 2 and name_parts[1]~=nil ) then
|
|
|
|
bush_name = name_parts[1];
|
|
|
|
-- this bush really carries fruits
|
|
|
|
can_harvest = true;
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- find out which tool the digger was wielding (if any)
|
|
|
|
local toolstack = digger:get_wielded_item();
|
|
|
|
local capabilities = toolstack:get_tool_capabilities();
|
|
|
|
|
|
|
|
-- what the player will get
|
|
|
|
local harvested = "";
|
|
|
|
local amount = "";
|
|
|
|
|
|
|
|
-- failure to find out what the tool can do: destroy the bush and return nothing
|
|
|
|
if( not( capabilities["groupcaps"] )) then
|
|
|
|
return nil;
|
|
|
|
|
|
|
|
-- digging with the hand or something like that
|
|
|
|
elseif( capabilities["groupcaps"]["snappy"] ) then
|
|
|
|
|
|
|
|
-- plant a new bush without fruits
|
2014-08-16 01:34:15 +02:00
|
|
|
minetest.set_node(pos,{type='node',name='bushes:fruitless_bush'})
|
|
|
|
local meta = minetest.get_meta( pos );
|
2013-10-29 02:11:37 +01:00
|
|
|
meta:set_string( 'bush_type', bush_name );
|
|
|
|
|
|
|
|
-- construct the stack of fruits the player will get
|
|
|
|
-- only bushes that have grown fruits can actually give fruits
|
|
|
|
if( can_harvest == true ) then
|
|
|
|
amount = "4";
|
|
|
|
harvested = "bushes:"..bush_name.." "..amount;
|
|
|
|
end
|
|
|
|
|
|
|
|
-- something like a shovel
|
|
|
|
elseif( capabilities["groupcaps"]["crumbly"] ) then
|
|
|
|
|
|
|
|
-- with a chance of 1/3, return 2 bushes
|
|
|
|
if( math.random(1,3)==1 ) then
|
|
|
|
amount = "2";
|
|
|
|
else
|
|
|
|
amount = "1";
|
|
|
|
end
|
|
|
|
-- return the bush itself
|
|
|
|
harvested = "bushes:" .. bush_name .. "_bush "..amount;
|
|
|
|
|
|
|
|
-- something like an axe
|
|
|
|
elseif( capabilities["groupcaps"]["choppy"] ) then
|
|
|
|
|
|
|
|
-- the amount of sticks may vary
|
|
|
|
amount = math.random( 4, 20 );
|
|
|
|
-- return some sticks
|
|
|
|
harvested = "default:stick "..amount;
|
|
|
|
|
|
|
|
-- nothing known - destroy the plant
|
|
|
|
else
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
|
|
|
-- give the harvested result to the player
|
|
|
|
if( harvested ~= "" ) then
|
|
|
|
--minetest.chat_send_player("singleplayer","you would now get "..tostring( harvested ) );
|
|
|
|
digger:get_inventory():add_item( "main", harvested );
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
plantlife_bushes.after_place_node = function(pos, placer, itemstack)
|
|
|
|
|
|
|
|
if( not( itemstack ) or not( pos )) then
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
|
|
|
local name_parts = itemstack:get_name():split( ":" );
|
|
|
|
if( #name_parts <2 or name_parts[2]==nil ) then
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
|
|
|
name_parts = name_parts[2]:split( "_" );
|
|
|
|
|
|
|
|
if( #name_parts <2 or name_parts[1]==nil ) then
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
2014-08-16 01:34:15 +02:00
|
|
|
minetest.set_node( pos, {type='node',name='bushes:fruitless_bush'});
|
|
|
|
local meta = minetest.get_meta( pos );
|
2013-10-29 02:11:37 +01:00
|
|
|
meta:set_string( 'bush_type', name_parts[1] );
|
|
|
|
|
|
|
|
return nil;
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-29 02:20:10 +01:00
|
|
|
-- regrow berries (uses a base abm instead of plants_lib because of the use of metadata).
|
|
|
|
|
2013-10-29 02:11:37 +01:00
|
|
|
minetest.register_abm({
|
|
|
|
nodenames = { "bushes:fruitless_bush" },
|
2013-10-29 02:20:10 +01:00
|
|
|
interval = 500,
|
2013-11-03 23:46:15 +01:00
|
|
|
chance = 5,
|
2013-10-29 02:11:37 +01:00
|
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
|
|
|
2014-08-16 01:34:15 +02:00
|
|
|
local meta = minetest.get_meta( pos );
|
2013-11-03 23:46:15 +01:00
|
|
|
local bush_name = meta:get_string( 'bush_type' );
|
|
|
|
if( bush_name ~= nil and bush_name ~= '' ) then
|
|
|
|
local dirtpos = { x = pos.x, y = pos.y-1, z = pos.z }
|
|
|
|
local dirt = minetest.get_node(dirtpos)
|
|
|
|
if dirt.name == "farming:soil_wet" or math.random(1,3) == 1 then
|
2014-08-16 01:34:15 +02:00
|
|
|
minetest.set_node( pos, {type='node',name='bushes:'..bush_name..'_bush'})
|
2013-10-29 02:11:37 +01:00
|
|
|
end
|
2013-11-03 23:46:15 +01:00
|
|
|
end
|
|
|
|
end
|
2013-10-29 02:11:37 +01:00
|
|
|
})
|
|
|
|
|
2013-10-29 02:20:10 +01:00
|
|
|
-- Define the basket and bush nodes
|
2013-10-29 02:11:37 +01:00
|
|
|
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
for i, bush_name in ipairs(bushes_classic.bushes) do
|
2013-10-29 02:11:37 +01:00
|
|
|
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
local desc = bushes_classic.bushes_descriptions[i]
|
|
|
|
|
2013-10-29 02:11:37 +01:00
|
|
|
minetest.register_node(":bushes:basket_"..bush_name, {
|
2014-03-12 19:06:27 +01:00
|
|
|
description = S("Basket with "..desc.." Pies"),
|
2013-10-29 02:11:37 +01:00
|
|
|
tiles = {
|
|
|
|
"bushes_basket_"..bush_name.."_top.png",
|
|
|
|
"bushes_basket_bottom.png",
|
|
|
|
"bushes_basket_side.png"
|
|
|
|
},
|
2013-11-02 22:12:14 +01:00
|
|
|
on_use = minetest.item_eat(18),
|
2013-10-29 02:11:37 +01:00
|
|
|
groups = { dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2013-11-11 18:42:01 +01:00
|
|
|
local texture_top, texture_bottom
|
|
|
|
|
2014-07-04 23:55:05 +02:00
|
|
|
local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1}
|
2013-10-29 02:11:37 +01:00
|
|
|
if bush_name == "mixed_berry" then
|
|
|
|
bush_name = "fruitless";
|
2014-03-12 19:06:27 +01:00
|
|
|
desc = S("currently fruitless");
|
2013-11-11 18:42:01 +01:00
|
|
|
texture_top = "bushes_fruitless_bush_top.png"
|
|
|
|
texture_bottom = "bushes_fruitless_bush_bottom.png"
|
2014-07-04 23:55:05 +02:00
|
|
|
groups.not_in_creative_inventory = 1
|
2013-11-11 18:42:01 +01:00
|
|
|
else
|
|
|
|
texture_top = "bushes_bush_top.png"
|
|
|
|
texture_bottom = "bushes_bush_bottom.png"
|
2013-10-29 02:11:37 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
minetest.register_node(":bushes:" .. bush_name .. "_bush", {
|
2014-03-12 19:06:27 +01:00
|
|
|
description = S(desc.." Bush"),
|
2013-11-11 18:42:01 +01:00
|
|
|
drawtype = "nodebox",
|
|
|
|
tiles = {texture_top, texture_bottom, "bushes_" .. bush_name .. "_bush.png"},
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
inventory_image = "bushes_" .. bush_name .. "_bush.png",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
walkable = false,
|
2013-11-11 18:42:01 +01:00
|
|
|
node_box = {
|
|
|
|
type = "fixed",
|
|
|
|
fixed = {
|
|
|
|
{-1/16, -8/16, -1/16, 1/16, -6/16, 1/16},
|
|
|
|
{-4/16, -6/16, -4/16, 4/16, 5/16, 4/16},
|
|
|
|
{-5/16, -5/16, -5/16, 5/16, 3/16, 5/16},
|
|
|
|
{-6/16, -4/16, -6/16, 6/16, 2/16, 6/16},
|
|
|
|
{-6.5/16, -3/16, -6.5/16, 6.5/16, -2/16, 6.5/16},
|
|
|
|
{-3/16, 5/16, -3/16, 3/16, 6/16, 3/16},
|
|
|
|
{-2/16, 5/16, -2/16, 2/16, 7/16, 2/16}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2014-07-04 23:55:05 +02:00
|
|
|
groups = groups,
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
sounds = default.node_sound_leaves_defaults(),
|
2013-10-29 02:11:37 +01:00
|
|
|
drop = "",
|
|
|
|
after_dig_node = function( pos, oldnode, oldmetadata, digger )
|
|
|
|
return plantlife_bushes.after_dig_node(pos, oldnode, oldmetadata, digger);
|
|
|
|
end,
|
|
|
|
after_place_node = function( pos, placer, itemstack )
|
|
|
|
return plantlife_bushes.after_place_node(pos, placer, itemstack);
|
|
|
|
end,
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
})
|
|
|
|
|
2013-10-29 02:11:37 +01:00
|
|
|
-- do not spawn fruitless bushes
|
|
|
|
if bush_name ~= "fruitless" then
|
|
|
|
table.insert(bushes_classic.spawn_list, "bushes:"..bush_name.."_bush")
|
|
|
|
end
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
end
|
|
|
|
|
2013-10-29 02:11:37 +01:00
|
|
|
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
minetest.register_node(":bushes:basket_empty", {
|
2014-03-12 19:06:27 +01:00
|
|
|
description = S("Basket"),
|
Multiple changes
There are now five bushes in this mod: strawberry, blackberry,
blueberry, raspberry, and gooseberry.
Instead of giving you the fruit, digging a bush now directly gives you
that bush, with a 1/5 chance of getting two.
Craft one bush by itself to turn it into four of the corresponding
fruit. Craft six of that fruit to get the bush back (this is how it was
before, I opted to keep it that way).
Craft:
- - -
S J S
f f f
That is, two sugar, one jungle grass, and three fruit as before, to get
one raw pie of that fruit. Cook it as usual. Heals 2 hearts.
Craft one whole pie by itself to get four slices, each of which heals
1/2 heart.
Craft:
S J S
f f f
f f f
That is, two sugar, one jungle grass, and mix-and-match six fruits to
get two mixed fruit pies. Cook as usual, craft one to get four slices.
Baskets of pies can be crafted the same as before (craft a basket from
four sticks in a "T" shape, then craft one of those plus three pies of
the desired type).
In addition: some moderate rewriting and re-arranging of the code to
facilitating adding the new objects.
Made the bushes lower-resolution (they were 64px, which made them not
fit in so well into the usual 16px landscape - reduced them to 32px.
Ditto for the basket textures. Pies are all 16px.
New textures for the pies.
2013-10-24 03:51:28 +02:00
|
|
|
tiles = {
|
|
|
|
"bushes_basket_empty_top.png",
|
|
|
|
"bushes_basket_bottom.png",
|
|
|
|
"bushes_basket_side.png"
|
|
|
|
},
|
|
|
|
groups = { dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2013-10-29 02:11:37 +01:00
|
|
|
|