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
|
@ -1361,8 +1361,22 @@ void Client::removeNode(v3s16 p)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for Client Side Modding
|
||||
* Flavour is applied there, this should not be used for core engine
|
||||
* @param p
|
||||
* @param is_valid_position
|
||||
* @return
|
||||
*/
|
||||
MapNode Client::getNode(v3s16 p, bool *is_valid_position)
|
||||
{
|
||||
if (checkCSMFlavourLimit(CSMFlavourLimit::CSM_FL_LOOKUP_NODES)) {
|
||||
v3s16 ppos = floatToInt(m_env.getLocalPlayer()->getPosition(), BS);
|
||||
if ((u32) ppos.getDistanceFrom(p) > m_csm_noderange_limit) {
|
||||
*is_valid_position = false;
|
||||
return MapNode();
|
||||
}
|
||||
}
|
||||
return m_env.getMap().getNodeNoEx(p, is_valid_position);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue