Add ObjRef:is_player() and modify ObjRef:get_player_name() to always return a string to aid better inter-object compatibility of code that assumes objects to be players
This commit is contained in:
parent
b235e4d290
commit
bf8cfce50e
|
@ -44,7 +44,7 @@ function minetest.get_connected_players()
|
|||
-- This could be optimized a bit, but leave that for later
|
||||
local list = {}
|
||||
for _, obj in pairs(minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do
|
||||
if obj:get_player_name() then
|
||||
if obj:is_player() then
|
||||
table.insert(list, obj)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -913,7 +913,8 @@ LuaEntitySAO-only: (no-op for other objects)
|
|||
- get_entity_name() (DEPRECATED: Will be removed in a future version)
|
||||
- get_luaentity()
|
||||
Player-only: (no-op for other objects)
|
||||
- get_player_name(): will return nil if is not a player
|
||||
- is_player(): true for players, false for others
|
||||
- get_player_name(): returns "" if is not a player
|
||||
- get_look_dir(): get camera direction as a unit vector
|
||||
- get_look_pitch(): pitch in radians
|
||||
- get_look_yaw(): yaw in radians (wraps around pretty randomly as of now)
|
||||
|
|
|
@ -2683,6 +2683,15 @@ private:
|
|||
}
|
||||
|
||||
/* Player-only */
|
||||
|
||||
// is_player(self)
|
||||
static int l_is_player(lua_State *L)
|
||||
{
|
||||
ObjectRef *ref = checkobject(L, 1);
|
||||
Player *player = getplayer(ref);
|
||||
lua_pushboolean(L, (player != NULL));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get_player_name(self)
|
||||
static int l_get_player_name(lua_State *L)
|
||||
|
@ -2690,7 +2699,7 @@ private:
|
|||
ObjectRef *ref = checkobject(L, 1);
|
||||
Player *player = getplayer(ref);
|
||||
if(player == NULL){
|
||||
lua_pushnil(L);
|
||||
lua_pushlstring(L, "", 0);
|
||||
return 1;
|
||||
}
|
||||
// Do it
|
||||
|
|
Loading…
Reference in New Issue