File tree 7 files changed +20
-6
lines changed
7 files changed +20
-6
lines changed Original file line number Diff line number Diff line change 40
40
core .register_chatcommand (" list_players" , {
41
41
description = core .gettext (" List online players" ),
42
42
func = function (param )
43
- local players = table.concat (core .get_player_names (), " , " )
44
- core .display_chat_message (core .gettext (" Online players: " ) .. players )
43
+ local player_names = core .get_player_names ()
44
+ if not player_names then
45
+ return false , core .gettext (" This command is disabled by server." )
46
+ end
47
+
48
+ local players = table.concat (player_names , " , " )
49
+ return true , core .gettext (" Online players: " ) .. players
45
50
end
46
51
})
47
52
Original file line number Diff line number Diff line change @@ -1198,7 +1198,7 @@ server_side_occlusion_culling (Server side occlusion culling) bool true
1198
1198
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
1199
1199
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
1200
1200
# csm_restriction_noderange)
1201
- csm_restriction_flags (Client side modding restrictions) int 30
1201
+ csm_restriction_flags (Client side modding restrictions) int 62
1202
1202
1203
1203
# If the CSM restriction for node range is enabled, get_node calls are limited
1204
1204
# to this distance from the player to the node.
Original file line number Diff line number Diff line change @@ -763,7 +763,7 @@ Call these functions only at load time!
763
763
764
764
### Client Environment
765
765
* `minetest.get_player_names()`
766
- * Returns list of player names on server
766
+ * Returns list of player names on server (nil if CSM_RF_READ_PLAYERINFO is enabled by server)
767
767
* `minetest.disconnect()`
768
768
* Disconnect from the server and exit to main menu.
769
769
* Returns `false` if the client is already disconnecting otherwise returns `true`.
Original file line number Diff line number Diff line change 1468
1468
# READ_NODEDEFS: 8 (disable get_node_def call client-side)
1469
1469
# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
1470
1470
# csm_restriction_noderange)
1471
+ # READ_PLAYERINFO: 32 (disable get_player_names call client-side)
1471
1472
# type: int
1472
- # csm_restriction_flags = 30
1473
+ # csm_restriction_flags = 62
1473
1474
1474
1475
# If the CSM restriction for node range is enabled, get_node calls are limited
1475
1476
# to this distance from the player to the node.
Original file line number Diff line number Diff line change @@ -346,7 +346,7 @@ void set_default_settings(Settings *settings)
346
346
settings->setDefault (" max_block_send_distance" , " 9" );
347
347
settings->setDefault (" block_send_optimize_distance" , " 4" );
348
348
settings->setDefault (" server_side_occlusion_culling" , " true" );
349
- settings->setDefault (" csm_restriction_flags" , " 30 " );
349
+ settings->setDefault (" csm_restriction_flags" , " 62 " );
350
350
settings->setDefault (" csm_restriction_noderange" , " 0" );
351
351
settings->setDefault (" max_clearobjects_extra_loaded_blocks" , " 4096" );
352
352
settings->setDefault (" time_speed" , " 72" );
Original file line number Diff line number Diff line change @@ -952,5 +952,6 @@ enum CSMRestrictionFlags : u64 {
952
952
CSM_RF_READ_ITEMDEFS = 0x00000004 , // Disable itemdef lookups
953
953
CSM_RF_READ_NODEDEFS = 0x00000008 , // Disable nodedef lookups
954
954
CSM_RF_LOOKUP_NODES = 0x00000010 , // Limit node lookups
955
+ CSM_RF_READ_PLAYERINFO = 0x00000020 , // Disable player info lookups
955
956
CSM_RF_ALL = 0xFFFFFFFF ,
956
957
};
Original file line number Diff line number Diff line change @@ -116,6 +116,13 @@ int ModApiClient::l_clear_out_chat_queue(lua_State *L)
116
116
// get_player_names()
117
117
int ModApiClient::l_get_player_names (lua_State *L)
118
118
{
119
+ // clang-format off
120
+ if (getClient (L)->checkCSMRestrictionFlag (
121
+ CSMRestrictionFlags::CSM_RF_READ_PLAYERINFO)) {
122
+ return 0 ;
123
+ }
124
+ // clang-format on
125
+
119
126
const std::list<std::string> &plist = getClient (L)->getConnectedPlayerNames ();
120
127
lua_createtable (L, plist.size (), 0 );
121
128
int newTable = lua_gettop (L);
You can’t perform that action at this time.
0 commit comments