mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
[CSM] Add flavour limits controlled by server (#5930)
* [CSM] Add flavour limits controlled by server Server send flavour limits to client permitting to disable or limit some Lua calls * Add limits for reading nodedefs and itemdefs * flavour: Add lookup node limits * Merge get_node_or_nil into get_node. Sending fake node doesn't make sense in CSM, just return nil if node is not available for any reason * Add node range customization when noderange flavour is enabled (default 8 nodes) * Limit nodes range & disable chat message sending by default * Bump protocol version
This commit is contained in:
parent
7e3cdf7088
commit
79f19b8369
18 changed files with 136 additions and 29 deletions
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "lua_api/l_vmanip.h"
|
||||
#include "common/c_converter.h"
|
||||
#include "common/c_content.h"
|
||||
#include <algorithm>
|
||||
#include "scripting_server.h"
|
||||
#include "environment.h"
|
||||
#include "server.h"
|
||||
|
@ -726,6 +727,15 @@ int ModApiEnvMod::l_find_node_near(lua_State *L)
|
|||
}
|
||||
|
||||
int start_radius = (lua_toboolean(L, 4)) ? 0 : 1;
|
||||
|
||||
#ifndef SERVER
|
||||
// Client API limitations
|
||||
if (getClient(L) &&
|
||||
getClient(L)->checkCSMFlavourLimit(CSMFlavourLimit::CSM_FL_LOOKUP_NODES)) {
|
||||
radius = std::max<int>(radius, getClient(L)->getCSMNodeRangeLimit());
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int d = start_radius; d <= radius; d++) {
|
||||
std::vector<v3s16> list = FacePositionCache::getFacePositions(d);
|
||||
for (std::vector<v3s16>::iterator i = list.begin();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue