diff options
author | sfan5 <sfan5@live.de> | 2019-11-08 22:57:03 +0100 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2019-11-11 14:06:48 +0100 |
commit | b0260b5ec8e05e54928f9487bb39b4ff946951f9 (patch) | |
tree | d5e8c2e1c43507549da008dbac2eeba1d6ab059b /src/script | |
parent | 4d668f32a6d9a0d895a2385dec994d43bd084410 (diff) | |
download | minetest-b0260b5ec8e05e54928f9487bb39b4ff946951f9.tar.gz minetest-b0260b5ec8e05e54928f9487bb39b4ff946951f9.tar.bz2 minetest-b0260b5ec8e05e54928f9487bb39b4ff946951f9.zip |
Refactor CSM restriction code a bit
This also fixes find_node_near restrictions being ineffective.
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/lua_api/l_client.cpp | 26 | ||||
-rw-r--r-- | src/script/lua_api/l_env.cpp | 7 |
2 files changed, 10 insertions, 23 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index febf528de..08976ee11 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -36,6 +36,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/string.h" #include "nodedef.h" +#define checkCSMRestrictionFlag(flag) \ + ( getClient(L)->checkCSMRestrictionFlag(CSMRestrictionFlags::flag) ) + // get_current_modname() int ModApiClient::l_get_current_modname(lua_State *L) { @@ -106,11 +109,8 @@ int ModApiClient::l_send_chat_message(lua_State *L) // If server disabled this API, discard - // clang-format off - if (getClient(L)->checkCSMRestrictionFlag( - CSMRestrictionFlags::CSM_RF_CHAT_MESSAGES)) + if (checkCSMRestrictionFlag(CSM_RF_CHAT_MESSAGES)) return 0; - // clang-format on std::string message = luaL_checkstring(L, 1); getClient(L)->sendChatMessage(utf8_to_wide(message)); @@ -127,12 +127,8 @@ int ModApiClient::l_clear_out_chat_queue(lua_State *L) // get_player_names() int ModApiClient::l_get_player_names(lua_State *L) { - // clang-format off - if (getClient(L)->checkCSMRestrictionFlag( - CSMRestrictionFlags::CSM_RF_READ_PLAYERINFO)) { + if (checkCSMRestrictionFlag(CSM_RF_READ_PLAYERINFO)) return 0; - } - // clang-format on const std::list<std::string> &plist = getClient(L)->getConnectedPlayerNames(); lua_createtable(L, plist.size(), 0); @@ -201,7 +197,7 @@ int ModApiClient::l_get_node_or_nil(lua_State *L) // Do it bool pos_ok; - MapNode n = getClient(L)->getNode(pos, &pos_ok); + MapNode n = getClient(L)->CSMGetNode(pos, &pos_ok); if (pos_ok) { // Return node pushnode(L, n, getClient(L)->ndef()); @@ -308,11 +304,8 @@ int ModApiClient::l_get_item_def(lua_State *L) IItemDefManager *idef = gdef->idef(); assert(idef); - // clang-format off - if (getClient(L)->checkCSMRestrictionFlag( - CSMRestrictionFlags::CSM_RF_READ_ITEMDEFS)) + if (checkCSMRestrictionFlag(CSM_RF_READ_ITEMDEFS)) return 0; - // clang-format on if (!lua_isstring(L, 1)) return 0; @@ -339,11 +332,8 @@ int ModApiClient::l_get_node_def(lua_State *L) if (!lua_isstring(L, 1)) return 0; - // clang-format off - if (getClient(L)->checkCSMRestrictionFlag( - CSMRestrictionFlags::CSM_RF_READ_NODEDEFS)) + if (checkCSMRestrictionFlag(CSM_RF_READ_NODEDEFS)) return 0; - // clang-format on std::string name = readParam<std::string>(L, 1); const ContentFeatures &cf = ndef->get(ndef->getId(name)); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 8c2b6ffd8..203ffcfdc 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -769,11 +769,8 @@ int ModApiEnvMod::l_find_node_near(lua_State *L) #ifndef SERVER // Client API limitations - if (getClient(L) && - getClient(L)->checkCSMRestrictionFlag( - CSMRestrictionFlags::CSM_RF_LOOKUP_NODES)) { - radius = std::max<int>(radius, getClient(L)->getCSMNodeRangeLimit()); - } + if (getClient(L)) + radius = getClient(L)->CSMClampRadius(pos, radius); #endif for (int d = start_radius; d <= radius; d++) { |