aboutsummaryrefslogtreecommitdiff
path: root/builtin/game
diff options
context:
space:
mode:
authoryou <ovvv@web.de>2018-02-05 15:17:10 +0100
committerSmallJoker <mk939@ymail.com>2018-06-03 17:32:00 +0200
commit880a25c92182bd10e8a80930909cf505e851ea65 (patch)
tree4ea500131cc1da7bd64b533af6c62f51a85ba181 /builtin/game
parent0268c9d7c9925daeeb2ac847aca090de635ba43c (diff)
downloadminetest-880a25c92182bd10e8a80930909cf505e851ea65.tar.gz
minetest-880a25c92182bd10e8a80930909cf505e851ea65.tar.bz2
minetest-880a25c92182bd10e8a80930909cf505e851ea65.zip
Add minetest.is_player (#7013)
* Add minetest.is_player * First use for is_player
Diffstat (limited to 'builtin/game')
-rw-r--r--builtin/game/misc.lua19
1 files changed, 14 insertions, 5 deletions
diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua
index bfe407b9d..d8f7a638d 100644
--- a/builtin/game/misc.lua
+++ b/builtin/game/misc.lua
@@ -5,12 +5,11 @@
--
function core.check_player_privs(name, ...)
- local arg_type = type(name)
- if (arg_type == "userdata" or arg_type == "table") and
- name.get_player_name then -- If it quacks like a Player...
+ if core.is_player(name) then
name = name:get_player_name()
- elseif arg_type ~= "string" then
- error("Invalid core.check_player_privs argument type: " .. arg_type, 2)
+ elseif type(name) ~= "string" then
+ error("core.check_player_privs expects a player or playername as " ..
+ "argument.", 2)
end
local requested_privs = {...}
@@ -70,6 +69,16 @@ function core.get_connected_players()
return temp_table
end
+
+function core.is_player(player)
+ -- a table being a player is also supported because it quacks sufficiently
+ -- like a player if it has the is_player function
+ local t = type(player)
+ return (t == "userdata" or t == "table") and
+ type(player.is_player) == "function" and player:is_player()
+end
+
+
function minetest.player_exists(name)
return minetest.get_auth_handler().get_auth(name) ~= nil
end