summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2015-02-23 16:48:51 +1000
committerCraig Robbins <kde.psych@gmail.com>2015-02-23 16:49:48 +1000
commit38cf080a9c2a1e5b9ad41cf62d2eacdc92133d16 (patch)
tree2043f21323f839162dbbecc1dc5ef50acf894974
parentcd4324e5a800f12d4bbfea07a47d78e04eace920 (diff)
downloadminetest-38cf080a9c2a1e5b9ad41cf62d2eacdc92133d16.tar.gz
minetest-38cf080a9c2a1e5b9ad41cf62d2eacdc92133d16.tar.bz2
minetest-38cf080a9c2a1e5b9ad41cf62d2eacdc92133d16.zip
Disallow object:remove() if the object is a player
Rebased by Zeno- (conflict in lua_api.txt)
-rw-r--r--doc/lua_api.txt1
-rw-r--r--src/script/lua_api/l_object.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 1e25fb812..69a3a6828 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -2294,6 +2294,7 @@ This is basically a reference to a C++ `ServerActiveObject`
#### Methods
* `remove()`: remove object (after returning from Lua)
+ * Note: Doesn't work on players, use minetest.kick_player instead
* `getpos()`: returns `{x=num, y=num, z=num}`
* `setpos(pos)`; `pos`=`{x=num, y=num, z=num}`
* `moveto(pos, continuous=false)`: interpolated move
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index e048d072f..73f6e93b3 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -131,6 +131,7 @@ int ObjectRef::l_remove(lua_State *L)
ObjectRef *ref = checkobject(L, 1);
ServerActiveObject *co = getobject(ref);
if(co == NULL) return 0;
+ if(co->getType() == ACTIVEOBJECT_TYPE_PLAYER) return 0;
verbosestream<<"ObjectRef::l_remove(): id="<<co->getId()<<std::endl;
co->m_removed = true;
return 0;