summaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2019-11-08 22:57:03 +0100
committersfan5 <sfan5@live.de>2019-11-11 14:06:48 +0100
commitb0260b5ec8e05e54928f9487bb39b4ff946951f9 (patch)
treed5e8c2e1c43507549da008dbac2eeba1d6ab059b /src/script
parent4d668f32a6d9a0d895a2385dec994d43bd084410 (diff)
downloadminetest-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.cpp26
-rw-r--r--src/script/lua_api/l_env.cpp7
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++) {