summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTenPlus1 <kinsellaja@yahoo.com>2018-06-19 18:36:00 +0100
committerTenPlus1 <kinsellaja@yahoo.com>2018-06-19 18:36:00 +0100
commit1018a558d2b92eb5cdba657c0f6367243c1b85a8 (patch)
tree30da8af5b06a526d5d1047b95a83f47330476c13
parent8a4ca846d90abf5732b436c1f31b72c6b52e61dc (diff)
added player checks for crop placement
-rw-r--r--api.txt1
-rw-r--r--crops/beans.lua9
-rw-r--r--crops/cocoa.lua9
-rw-r--r--crops/grapes.lua9
-rw-r--r--init.lua9
5 files changed, 24 insertions, 13 deletions
diff --git a/api.txt b/api.txt
index ed51214..eda1289 100644
--- a/api.txt
+++ b/api.txt
@@ -40,7 +40,6 @@ The farming API allows you to easily register plants and hoes.
Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow.
-
### Crop functions
If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'.
diff --git a/crops/beans.lua b/crops/beans.lua
index 888a0a1..61b195b 100644
--- a/crops/beans.lua
+++ b/crops/beans.lua
@@ -27,12 +27,15 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
- if def and def.on_rightclick then
+ if placer and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack)
end
+ -- is player planting crop?
+ local name = placer:get_player_name() or ""
+
-- check for protection
- if minetest.is_protected(pt.under, placer:get_player_name()) then
+ if minetest.is_protected(pt.under, name) then
return
end
@@ -46,7 +49,7 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
- if not farming.is_creative(placer:get_player_name()) then
+ if placer or not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
diff --git a/crops/cocoa.lua b/crops/cocoa.lua
index 1510b3a..8424db4 100644
--- a/crops/cocoa.lua
+++ b/crops/cocoa.lua
@@ -21,7 +21,7 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
- if def and def.on_rightclick then
+ if placer and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack)
end
@@ -31,8 +31,11 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
return
end
+ -- is player planting crop?
+ local name = placer:get_player_name() or ""
+
-- check for protection
- if minetest.is_protected(pt.above, placer:get_player_name()) then
+ if minetest.is_protected(pt.above, name) then
return
end
@@ -41,7 +44,7 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
- if not farming.is_creative(placer:get_player_name()) then
+ if placer and not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
diff --git a/crops/grapes.lua b/crops/grapes.lua
index 8b0ae2a..8781ece 100644
--- a/crops/grapes.lua
+++ b/crops/grapes.lua
@@ -22,12 +22,15 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
- if def and def.on_rightclick then
+ if placer and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack)
end
+ -- is player planting seed?
+ local name = placer:get_player_name() or ""
+
-- check for protection
- if minetest.is_protected(pt.under, placer:get_player_name()) then
+ if minetest.is_protected(pt.under, name) then
return
end
@@ -41,7 +44,7 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
- if not farming.is_creative(placer:get_player_name()) then
+ if placer and not farming.is_creative(placer:get_player_name()) then
itemstack:take_item()
diff --git a/init.lua b/init.lua
index 8c92ce7..4f5f2be 100644
--- a/init.lua
+++ b/init.lua
@@ -419,7 +419,7 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
- if def and def.on_rightclick then
+ if placer and def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack)
end
@@ -444,8 +444,11 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
return
end
+ -- is player planting seed?
+ local name = placer:get_player_name() or ""
+
-- if not protected then add node and remove 1 item from the itemstack
- if not minetest.is_protected(pt.above, placer:get_player_name()) then
+ if not minetest.is_protected(pt.above, name) then
local p2 = minetest.registered_nodes[plantname].place_param2 or 1
@@ -455,7 +458,7 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
- if not placer or not farming.is_creative(placer:get_player_name()) then
+ if placer and not farming.is_creative(placer:get_player_name()) then
local name = itemstack:get_name()