Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
plantlife_modpack
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Illuna-Minetest
plantlife_modpack
Commits
ecf175fb
Commit
ecf175fb
authored
10 years ago
by
Gael-de-Sailly
Browse files
Options
Downloads
Patches
Plain Diff
cleaned the code of bushes_classic into conventionnal LUA style, for readability
parent
3eaf687d
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
bushes_classic/nodes.lua
+57
-57
57 additions, 57 deletions
bushes_classic/nodes.lua
with
57 additions
and
57 deletions
bushes_classic/nodes.lua
+
57
−
57
View file @
ecf175fb
...
...
@@ -3,89 +3,91 @@ local S = plantslib.intllib
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
;
plantlife_bushes
.
after_dig_node
=
function
(
pos
,
oldnode
,
oldmetadata
,
digger
)
if
not
(
digger
and
pos
and
oldnode
)
then
return
end
-- find out which bush type we are dealing with
local
bush_name
=
""
;
local
can_harvest
=
false
;
local
bush_name
=
""
local
can_harvest
=
false
if
(
oldnode
.
name
==
'
bushes:fruitless_bush
'
)
then
if
oldnode
.
name
==
"
bushes:fruitless_bush
"
then
-- this bush has not grown fruits yet (but will eventually)
bush_name
=
oldmetadata
[
'
fields
'
][
'
bush_type
'
];
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
local
name_parts
=
oldnode
.
name
:
split
(
":"
)
if
#
name_parts
>=
2
and
name_parts
[
2
]
~=
nil
then
name_parts
=
name_parts
[
2
]:
split
(
"_"
);
name_parts
=
name_parts
[
2
]:
split
(
"_"
)
if
(
#
name_parts
>=
2
and
name_parts
[
1
]
~=
nil
)
then
bush_name
=
name_parts
[
1
]
;
if
#
name_parts
>=
2
and
name_parts
[
1
]
~=
nil
then
bush_name
=
name_parts
[
1
]
-- this bush really carries fruits
can_harvest
=
true
;
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
()
;
local
toolstack
=
digger
:
get_wielded_item
()
local
capabilities
=
toolstack
:
get_tool_capabilities
()
-- what the player will get
local
harvested
=
""
;
local
amount
=
""
;
local
harvested
-- failure to find out what the tool can do: destroy the bush and return nothing
if
(
not
(
capabilities
[
"groupcaps"
]
))
then
return
nil
;
local
groupcaps
=
capabilities
.
groupcaps
if
not
groupcaps
then
return
-- digging with the hand or something like that
elseif
(
capabilities
[
"
groupcaps
"
][
"
snappy
"
]
)
then
elseif
groupcaps
.
snappy
then
-- plant a new bush without fruits
minetest
.
set_node
(
pos
,{
type
=
'
node
'
,
name
=
'
bushes:fruitless_bush
'
})
local
meta
=
minetest
.
get_meta
(
pos
);
meta
:
set_string
(
'bush_type'
,
bush_name
);
minetest
.
set_node
(
pos
,
{
type
=
"
node
"
,
name
=
"
bushes:fruitless_bush
"
})
local
meta
=
minetest
.
get_meta
(
pos
)
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
;
if
can_harvest
then
local
amount
=
"4"
harvested
=
"bushes:"
..
bush_name
..
" "
..
amount
end
-- something like a shovel
elseif
(
capabilities
[
"
groupcaps
"
][
"
crumbly
"
]
)
then
elseif
groupcaps
.
crumbly
then
-- with a chance of 1/3, return 2 bushes
if
(
math.random
(
1
,
3
)
==
1
)
then
amount
=
"2"
;
local
amount
if
math.random
(
1
,
3
)
==
1
then
amount
=
"2"
else
amount
=
"1"
;
amount
=
"1"
end
-- return the bush itself
harvested
=
"bushes:"
..
bush_name
..
"_bush "
..
amount
;
harvested
=
"bushes:"
..
bush_name
..
"_bush "
..
amount
-- something like an axe
elseif
(
capabilities
[
"
groupcaps
"
][
"
choppy
"
]
)
then
elseif
groupcaps
.
choppy
then
-- the amount of sticks may vary
amount
=
math.random
(
4
,
20
);
local
amount
=
math.random
(
4
,
20
)
-- return some sticks
harvested
=
"default:stick "
..
amount
;
harvested
=
"default:stick "
..
amount
-- nothing known - destroy the plant
else
return
nil
;
return
end
-- give the harvested result to the player
if
(
harvested
~=
""
)
then
if
harvested
then
--minetest.chat_send_player("singleplayer","you would now get "..tostring( harvested ) );
digger
:
get_inventory
():
add_item
(
"main"
,
harvested
);
local
inventory
=
digger
:
get_inventory
()
inventory
:
add_item
(
"main"
,
harvested
);
end
end
...
...
@@ -93,26 +95,24 @@ end
plantlife_bushes
.
after_place_node
=
function
(
pos
,
placer
,
itemstack
)
if
(
not
(
itemstack
)
or
not
(
pos
)
)
then
return
nil
;
if
not
(
itemstack
and
pos
)
then
return
end
local
name_parts
=
itemstack
:
get_name
():
split
(
":"
);
if
(
#
name_parts
<
2
or
name_parts
[
2
]
==
nil
)
then
return
nil
;
local
name_parts
=
itemstack
:
get_name
():
split
(
":"
)
if
#
name_parts
<
2
or
name_parts
[
2
]
==
nil
then
return
end
name_parts
=
name_parts
[
2
]:
split
(
"_"
);
name_parts
=
name_parts
[
2
]:
split
(
"_"
)
if
(
#
name_parts
<
2
or
name_parts
[
1
]
==
nil
)
then
return
nil
;
if
#
name_parts
<
2
or
name_parts
[
1
]
==
nil
then
return
end
minetest
.
set_node
(
pos
,
{
type
=
'node'
,
name
=
'bushes:fruitless_bush'
});
local
meta
=
minetest
.
get_meta
(
pos
);
meta
:
set_string
(
'bush_type'
,
name_parts
[
1
]
);
return
nil
;
minetest
.
set_node
(
pos
,
{
name
=
"bushes:fruitless_bush"
})
local
meta
=
minetest
.
get_meta
(
pos
)
meta
:
set_string
(
"bush_type"
,
name_parts
[
1
])
end
...
...
@@ -120,22 +120,22 @@ end
-- regrow berries (uses a base abm instead of plants_lib because of the use of metadata).
minetest
.
register_abm
({
nodenames
=
{
"bushes:fruitless_bush"
},
neighbors
=
{
"group:soil"
,
"group:potting_soil"
},
nodenames
=
{
"bushes:fruitless_bush"
},
neighbors
=
{
"group:soil"
,
"group:potting_soil"
},
interval
=
500
,
chance
=
5
,
action
=
function
(
pos
,
node
,
active_object_count
,
active_object_count_wider
)
local
meta
=
minetest
.
get_meta
(
pos
);
local
bush_name
=
meta
:
get_string
(
'
bush_type
'
);
local
meta
=
minetest
.
get_meta
(
pos
)
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
}
if
bush_name
and
bush_name
~=
""
then
local
dirtpos
=
{
x
=
pos
.
x
,
y
=
pos
.
y
-
1
,
z
=
pos
.
z
}
local
dirt
=
minetest
.
get_node
(
dirtpos
)
local
is_soil
=
minetest
.
get_item_group
(
dirt
.
name
,
"soil"
)
or
minetest
.
get_item_group
(
dirt
.
name
,
"potting_soil"
)
if
is_soil
and
(
dirt
.
name
==
"farming:soil_wet"
or
math.random
(
1
,
3
)
==
1
)
then
minetest
.
set_node
(
pos
,
{
type
=
'node'
,
name
=
'
bushes:
'
..
bush_name
..
'
_bush
'
})
minetest
.
set_node
(
pos
,
{
name
=
"
bushes:
"
..
bush_name
..
"
_bush
"
})
end
end
end
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment