Luanti 5.16.0-dev
Loading...
Searching...
No Matches
server.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5#pragma once
6
7#include "irr_v3d.h"
8#include "map.h"
9#include "hud_element.h" // HudElementStat
10#include "gamedef.h"
11#include "content/subgames.h"
12#include "network/peerhandler.h"
13#include "util/thread.h"
14#include "util/basic_macros.h"
15#include "util/metricsbackend.h"
16#include "server/clientiface.h"
18#include "translation.h"
19#include "sound_spec.h"
20#include <atomic>
21#include <csignal>
22#include <string>
23#include <list>
24#include <vector>
25#include <unordered_map>
26#include <unordered_set>
27#include <optional>
28#include <string_view>
29#include <shared_mutex>
30#include <condition_variable>
31
32class BanManager;
33class ChatEvent;
34class EmergeManager;
35class Inventory;
39class LuaError;
40class MetricsBackend;
41class ModChannelMgr;
42class NodeDefManager;
43class Player;
44class PlayerSAO;
45class RemotePlayer;
49class ServerScripting;
50class ServerThread;
51class Settings;
52
53struct ChatEventChat;
54struct ChatInterface;
55struct ChatMessage;
56struct CloudParams;
57struct GameParams;
58struct Lighting;
59struct MoonParams;
60struct PackedValue;
64struct RollbackAction;
65struct SkyboxParams;
66struct SoundSpec;
67struct StarParams;
68struct SunParams;
69
70namespace con {
71 class IConnection;
72 class IPeer;
73
74 enum rtt_stat_type : int;
75}
76
77// Anticheat flags
78enum {
79 AC_DIGGING = 0x01,
82};
83
84constexpr const static FlagDesc flagdesc_anticheat[] = {
85 {"digging", AC_DIGGING},
86 {"interaction", AC_INTERACTION},
87 {"movement", AC_MOVEMENT},
88 {NULL, 0}
89};
90
96
98{
99 std::string path;
100 std::string sha1_digest;
101 // true = not announced in TOCLIENT_ANNOUNCE_MEDIA (at player join)
103 // if true, this is an ephemeral entry. used by dynamic media.
105 // does what it says. used by some cases of dynamic media.
107
108 MediaInfo(std::string_view path_,
109 std::string_view sha1_digest_):
110 path(path_),
111 sha1_digest(sha1_digest_),
112 no_announce(false),
113 ephemeral(false),
114 delete_at_shutdown(false)
115 {
116 }
117};
118
119// Combines the pure sound (SoundSpec) with positional information
121{
123
124 float gain = 1.0f; // for amplification of the base sound
125 float max_hear_distance = 32 * BS;
127 u16 object = 0;
128 std::string to_player;
129 std::string exclude_player;
130
131 v3f getPos(ServerEnvironment *env, bool *pos_exists) const;
132
134
135 std::unordered_set<session_t> clients; // peer ids
136};
137
140 std::string label;
141 u16 size = 0;
142 std::string texture;
143 u16 scale = 1;
144};
145
146// structure for everything getClientInfo returns, for convenience
156
158 ModIPCStore() = default;
159 ~ModIPCStore();
160
162 std::shared_mutex mutex;
164 std::condition_variable_any condvar;
170 std::unordered_map<std::string, std::unique_ptr<PackedValue>> map;
171
173 inline void signal() { condvar.notify_all(); }
174};
175
177 public IGameDef
178{
179public:
180 /*
181 NOTE: Every public method should be thread-safe
182 */
183
184 Server(
185 const std::string &path_world,
186 const SubgameSpec &gamespec,
187 bool simple_singleplayer_mode,
188 Address bind_addr,
189 bool dedicated,
190 ChatInterface *iface = nullptr,
191 std::string *shutdown_errmsg = nullptr
192 );
193 ~Server();
195
196 void start();
197 void stop();
198 // Actual processing is done in another thread.
199 // This just checks if there was an error in that thread.
200 void step();
201
202 // This is run by ServerThread and does the actual processing
203 void AsyncRunStep(float dtime, bool initial_step = false);
206 void Receive(float min_time);
207 void yieldToOtherThreads(float dtime);
208
209 // Full player initialization after they processed all static media
210 // This is a helper function for TOSERVER_CLIENT_READY
212
213 /*
214 * Command Handlers
215 */
216
217 void handleCommand(NetworkPacket* pkt);
218
244
245 void ProcessData(NetworkPacket *pkt);
246
247 void Send(NetworkPacket *pkt);
248 void Send(session_t peer_id, NetworkPacket *pkt);
249
250 // Helper for handleCommand_PlayerPos and handleCommand_Interact
251 void process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao,
252 NetworkPacket *pkt);
253
254 // Both setter and getter need no envlock,
255 // can be called freely from threads
256 void setTimeOfDay(u32 time);
257
258 /*
259 Shall be called with the environment locked.
260 This is accessed by the map, which is inside the environment,
261 so it shouldn't be a problem.
262 */
263 void onMapEditEvent(const MapEditEvent &event) override;
264
265 // Connection must be locked when called
266 std::string getStatusString();
267 inline double getUptime() const { return m_uptime_counter->get(); }
268
269 // read shutdown state
270 inline bool isShutdownRequested() const { return m_shutdown_state.is_requested; }
271
272 // request server to shutdown
273 void requestShutdown(const std::string &msg, bool reconnect, float delay = 0.0f);
274
275 // Returns -1 if failed, sound handle on success
276 // Envlock
277 s32 playSound(ServerPlayingSound &params, bool ephemeral=false);
278 void stopSound(s32 handle);
279 void fadeSound(s32 handle, float step, float gain);
280
281 // Envlock
282 std::set<std::string> getPlayerEffectivePrivs(const std::string &name);
283 bool checkPriv(const std::string &name, const std::string &priv);
284 void reportPrivsModified(const std::string &name=""); // ""=all
285 void reportInventoryFormspecModified(const std::string &name);
286 void reportFormspecPrependModified(const std::string &name);
287
288 void setIpBanned(const std::string &ip, const std::string &name);
289 void unsetIpBanned(const std::string &ip_or_name);
290 std::string getBanDescription(const std::string &ip_or_name);
291 bool denyIfBanned(session_t peer_id);
292
293 void notifyPlayer(const char *name, const std::wstring &msg);
294 void notifyPlayers(const std::wstring &msg);
295
296 void spawnParticle(const std::string &playername,
297 const ParticleParameters &p);
298
300 ServerActiveObject *attached, const std::string &to_player,
301 const std::string &exclude_player);
302
303 void deleteParticleSpawner(const std::string &playername, u32 id);
304
306 std::string filename;
307 std::optional<std::string> filepath;
308 std::optional<std::string_view> data;
309 u32 token;
310 std::string to_player;
311 bool ephemeral = false;
312 bool client_cache = true;
313 };
314 bool dynamicAddMedia(const DynamicMediaArgs &args);
315
317 void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id);
318
319 // Envlock and conlock should be locked when using scriptapi
320 inline ServerScripting *getScriptIface() { return m_script.get(); }
321
322 // actions: time-reversed list
323 // Return value: success/failure
324 bool rollbackRevertActions(const std::list<RollbackAction> &actions,
325 std::list<std::string> *log);
326
327 // IGameDef interface
328 bool isClient() override { return false; }
329 // Under envlock
331 const NodeDefManager* getNodeDefManager() override;
333 u16 allocateUnknownNodeId(const std::string &name) override;
337
341
342 // Not under envlock
343 const std::vector<ModSpec> &getMods() const override;
344 const ModSpec* getModSpec(const std::string &modname) const override;
345 const SubgameSpec* getGameSpec() const override { return &m_gamespec; }
346 static std::string getBuiltinLuaPath();
347 std::string getWorldPath() const override { return m_path_world; }
348 std::string getModDataPath() const override { return m_path_mod_data; }
349 ModIPCStore *getModIPCStore() override { return &m_ipcstore; }
350
351 inline bool isSingleplayer() const
353
355 float steplen;
356 bool pause;
357 };
358
359 void setStepSettings(StepSettings spdata) { m_step_settings.store(spdata); }
361
362 void setAsyncFatalError(const std::string &error);
363 void setAsyncFatalError(const LuaError &e);
364
365 // Not thread-safe.
366 void addShutdownError(const ModError &e);
367
368 bool showFormspec(const char *name, const std::string &formspec, const std::string &formname);
369 Map &getMap();
372
373 u32 hudAdd(RemotePlayer *player, HudElement *element);
374 bool hudRemove(RemotePlayer *player, u32 id);
375 bool hudChange(RemotePlayer *player, u32 id, HudElementStat stat, void *value);
376 bool hudSetFlags(RemotePlayer *player, u32 flags, u32 mask);
377 bool hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount);
378 void hudSetHotbarImage(RemotePlayer *player, const std::string &name);
379 void hudSetHotbarSelectedImage(RemotePlayer *player, const std::string &name);
380
383
384 void setLocalPlayerAnimations(RemotePlayer *player, v2f animation_frames[4],
385 f32 frame_speed);
386 void setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third, v3f third_front);
387
388 void setSky(RemotePlayer *player, const SkyboxParams &params);
389 void setSun(RemotePlayer *player, const SunParams &params);
390 void setMoon(RemotePlayer *player, const MoonParams &params);
391 void setStars(RemotePlayer *player, const StarParams &params);
392
393 void setClouds(RemotePlayer *player, const CloudParams &params);
394
395 void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness);
396
397 void setLighting(RemotePlayer *player, const Lighting &lighting);
398
399 /* con::PeerHandler implementation. */
400 void peerAdded(con::IPeer *peer) override;
401 void deletingPeer(con::IPeer *peer, bool timeout) override;
402
403 void DenySudoAccess(session_t peer_id);
404 void DenyAccess(session_t peer_id, AccessDeniedCode reason,
405 std::string_view custom_reason = "", bool reconnect = false);
407 const std::string &str_reason, bool reconnect);
408 void acceptAuth(session_t peer_id, bool forSudoMode);
409 void DisconnectPeer(session_t peer_id);
410 bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval);
411 bool getClientInfo(session_t peer_id, ClientInfo &ret);
413
414 void printToConsoleOnly(const std::string &text);
415
416 void HandlePlayerHPChange(PlayerSAO *sao, const PlayerHPChangeReason &reason);
417 void SendPlayerHP(PlayerSAO *sao, bool effect);
418 void SendPlayerBreath(PlayerSAO *sao);
419 void SendInventory(RemotePlayer *player, bool incremental);
420 void SendMovePlayer(PlayerSAO *sao);
421 void SendMovePlayerRel(session_t peer_id, const v3f &added_pos);
422 void SendPlayerSpeed(session_t peer_id, const v3f &added_vel);
423 void SendPlayerFov(session_t peer_id);
424 void SendCamera(session_t peer_id, Player *player);
425
426 void SendMinimapModes(session_t peer_id,
427 std::vector<MinimapMode> &modes,
428 size_t wanted_mode);
429
430 void sendDetachedInventories(session_t peer_id, bool incremental);
431
432 bool joinModChannel(const std::string &channel) override;
433 bool leaveModChannel(const std::string &channel) override;
434 bool sendModChannelMessage(const std::string &channel, const std::string &message) override;
435 ModChannel *getModChannel(const std::string &channel) override;
436
437 // Send block to specific player only
438 bool SendBlock(session_t peer_id, const v3s16 &blockpos);
439
440 // Get or load translations for a language
441 // Note: don't store returned pointer.
442 Translations *getTranslationLanguage(const std::string &lang_code);
443
444 // Returns all media files the server knows about
445 // map key = binary sha1, map value = file path
446 std::unordered_map<std::string, std::string> getMediaList();
447
448 static std::vector<std::string> getModStorageDatabaseBackends();
449
450 static ModStorageDatabase *openModStorageDatabase(const std::string &world_path);
451
452 static ModStorageDatabase *openModStorageDatabase(const std::string &backend,
453 const std::string &world_path, const Settings &world_mt);
454
455 static bool migrateModStorageDatabase(const GameParams &game_params,
456 const Settings &cmd_args);
457
458 static u16 getProtocolVersionMin();
459 static u16 getProtocolVersionMax();
460
461 // Lua files registered for init of async env, pair of modname + path
462 std::vector<std::pair<std::string, std::string>> m_async_init_files;
463 // Identical but for mapgen env
464 std::vector<std::pair<std::string, std::string>> m_mapgen_init_files;
465
466 // Data transferred into other Lua envs at init time
467 std::unique_ptr<PackedValue> m_lua_globals_data;
468
469 // Bind address
471
472 // Public helper for taking the envlock in a scope
474 public:
476
477 private:
478 std::lock_guard<std::mutex> m_lock;
479 };
480
481protected:
482 /* Do not add more members here, this is only required to make unit tests work. */
483
484 // Scripting
485 // Envlock and conlock should be locked when using Lua
486 std::unique_ptr<ServerScripting> m_script;
487
488 // Mods
489 std::unique_ptr<ServerModManager> m_modmgr;
490
491private:
492 friend class EmergeThread;
493 friend class RemoteClient;
494
495 // unittest classes
497 friend class TestMoveAction;
498
501 public:
502 bool is_requested = false;
503 bool should_reconnect = false;
504 std::string message;
505
506 void reset();
507 void trigger(float delay, const std::string &msg, bool reconnect);
508 void tick(float dtime, Server *server);
509 std::wstring getShutdownTimerMessage() const;
510 bool isTimerRunning() const { return m_timer > 0.0f; }
511 private:
512 float m_timer = 0.0f;
513 };
514
516 std::string filename; // only set if media entry and file is to be deleted
518 std::unordered_set<session_t> waiting_players;
519 };
520
521 // The standard library does not implement std::hash for pairs so we have this:
522 struct SBCHash {
523 size_t operator() (const std::pair<v3s16, u16> &p) const {
524 return std::hash<v3s16>()(p.first) ^ p.second;
525 }
526 };
527
528 typedef std::unordered_map<std::pair<v3s16, u16>, std::string, SBCHash> SerializedBlockCache;
529
530 void init();
531
532 void SendMovement(session_t peer_id);
533 void SendHP(session_t peer_id, u16 hp, bool effect);
534 void SendBreath(session_t peer_id, u16 breath);
535 void SendAccessDenied(session_t peer_id, AccessDeniedCode reason,
536 std::string_view custom_reason, bool reconnect = false);
537 void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version);
538 void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef,
539 u16 protocol_version);
540
541
542 virtual void SendChatMessage(session_t peer_id, const ChatMessage &message);
543 void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed);
544
545 void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4],
546 f32 animation_speed);
547 void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front);
548 void SendPlayerPrivileges(session_t peer_id);
551 void SendShowFormspecMessage(session_t peer_id, const std::string &formspec,
552 const std::string &formname);
553 void SendHUDAdd(session_t peer_id, u32 id, HudElement *form);
554 void SendHUDRemove(session_t peer_id, u32 id);
555 void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value);
556 void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask);
557 void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value);
558 void SendSetSky(session_t peer_id, const SkyboxParams &params);
559 void SendSetSun(session_t peer_id, const SunParams &params);
560 void SendSetMoon(session_t peer_id, const MoonParams &params);
561 void SendSetStars(session_t peer_id, const StarParams &params);
562 void SendCloudParams(session_t peer_id, const CloudParams &params);
563 void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio);
564 void SendSetLighting(session_t peer_id, const Lighting &lighting);
565
566 void broadcastModChannelMessage(const std::string &channel,
567 const std::string &message, session_t from_peer);
568
569 /*
570 Send a node removal/addition event to all clients except ignore_id.
571 Additionally, if far_players!=NULL, players further away than
572 far_d_nodes are ignored and their peer_ids are added to far_players
573 */
574 // Envlock and conlock should be locked when calling these
575 void sendRemoveNode(v3s16 p, std::unordered_set<u16> *far_players = nullptr,
576 float far_d_nodes = 100);
577 void sendAddNode(v3s16 p, MapNode n,
578 std::unordered_set<u16> *far_players = nullptr,
579 float far_d_nodes = 100, bool remove_metadata = true);
580 void sendNodeChangePkt(NetworkPacket &pkt, v3s16 block_pos,
581 v3f p, float far_d_nodes, std::unordered_set<u16> *far_players);
582
583 void sendMetadataChanged(const std::unordered_set<v3s16> &positions,
584 float far_d_nodes = 100);
585
586 // Environment and Connection must be locked when called
587 // `cache` may only be very short lived! (invalidation not handeled)
588 void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver,
589 u16 net_proto_version, SerializedBlockCache *cache = nullptr);
590
591 // Sends blocks to clients (locks env and con on its own)
592 void SendBlocks(float dtime);
593
594 bool addMediaFile(const std::string &filename, const std::string &filepath,
595 std::string *filedata = nullptr, std::string *digest = nullptr);
596 void fillMediaCache();
597 void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code);
598 void sendRequestedMedia(session_t peer_id,
599 const std::unordered_set<std::string> &tosend);
600 void stepPendingDynMediaCallbacks(float dtime);
601
603 void SendAddParticleSpawner(const std::string &to_player,
604 const std::string &exclude_player,
605 const ParticleSpawnerParameters &p, u16 attached_id, u32 id);
607 void SendAddParticleSpawner(session_t peer_id, u16 protocol_version,
608 const ParticleSpawnerParameters &p, u16 attached_id, u32 id);
609
610 void SendDeleteParticleSpawner(session_t peer_id, u32 id);
611
612 // Spawn particles for a specific client, batching them if clients support it.
613 void SendSpawnParticles(RemotePlayer *player,
614 const std::vector<ParticleParameters> &particles);
615 // Spawn all particles for this step, batching them if clients support it.
616 void SendSpawnParticles();
617
619 void SendActiveObjectMessages(session_t peer_id, const std::string &datas,
620 bool reliable = true);
622
623 /*
624 Something random
625 */
626
627 void HandlePlayerDeath(PlayerSAO* sao, const PlayerHPChangeReason &reason);
628 void DeleteClient(session_t peer_id, ClientDeletionReason reason);
629 void UpdateCrafting(RemotePlayer *player);
630 bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what);
631
633
636 bool checkUserLimit(const std::string &player_name, const std::string &addr_s);
637
638 // This returns the answer to the sender of wmessage, or "" if there is none
639 std::wstring handleChat(const std::string &name, std::wstring wmessage_input,
640 bool check_shout_priv = false, RemotePlayer *player = nullptr);
641 void handleAdminChat(const ChatEventChat *evt);
642
643 // When called, connection mutex should be locked
646
647 // When called, environment mutex should be locked
648 std::string getPlayerName(session_t peer_id);
650
651 /*
652 Get a player from memory or creates one.
653 If player is already connected, return NULL
654 Does not verify/modify auth info and password.
655
656 Call with env and con locked.
657 */
658 std::unique_ptr<PlayerSAO> emergePlayer(const char *name, session_t peer_id,
659 u16 proto_version);
660
661 /*
662 Variables
663 */
664
665 // Environment mutex (envlock)
666 std::mutex m_env_mutex;
667
668 // World directory
669 std::string m_path_world;
670 std::string m_path_mod_data;
671 // Subgame specification
673 // If true, do not allow multiple players and hide some multiplayer
674 // functionality
677 // For "dedicated" server list flag
679
680 // Game settings layer
682
683 // Thread can set; step() will throw as ServerError
685
686 // Some timers
692 float m_savemap_timer = 0.0f;
695
696 // Environment
698
699 // server connection
700 std::shared_ptr<con::IConnection> m_con;
701
702 // Ban checking
704
705 // Rollback manager (behind m_env_mutex)
707
708 // Emerge manager
709 std::unique_ptr<EmergeManager> m_emerge;
710
711 // Item definition manager
713
714 // Node definition manager
716
717 // Craft definition manager
719
720 // NOTE: Cannot use forward declaration of 'Translations'. Whereas most
721 // modern compilers support incomplete types here, it's not in the C++ spec.
722 // key = lang_code
723 std::unordered_map<std::string, Translations> server_translations;
724
726
727 /*
728 Threads
729 */
730 // Set by Game
731 std::atomic<StepSettings> m_step_settings{{0.1f, false}};
732
733 // The server mainly operates in this thread
735
736 /*
737 Client interface
738 */
740
741 std::unordered_map<session_t, std::string> m_formspec_state_data;
742
743 /*
744 Random stuff
745 */
746
748
750 std::string m_admin_nick;
751
752 // If a mod error occurs while shutting down, the error message will be
753 // written into this.
754 std::string *const m_shutdown_errmsg;
755
756 /*
757 Map edit event queue. Automatically receives all map edits.
758 The constructor of this class registers us to receive them through
759 onMapEditEvent
760
761 NOTE: Should these be moved to actually be members of
762 ServerEnvironment?
763 */
764
765 /*
766 Queue of map edits from the environment for sending to the clients
767 This is behind m_env_mutex
768 */
769 std::queue<MapEditEvent*> m_unsent_map_edit_queue;
770 /*
771 If a non-empty area, map edit events contained within are left
772 unsent. Done at map generation time to speed up editing of the
773 generated area, as it will be sent anyway.
774 This is behind m_env_mutex
775 */
777
778 // media files known to server
779 std::unordered_map<std::string, MediaInfo> m_media;
780
781 // pending dynamic media callbacks, clients inform the server when they have a file fetched
782 std::unordered_map<u32, PendingDynamicMediaCallback> m_pending_dyn_media;
784
785 /*
786 Sounds
787 */
788 std::unordered_map<s32, ServerPlayingSound> m_playing_sounds;
789 s32 m_playing_sounds_id_last_used = 0; // positive values only
790 s32 nextSoundId();
791
794
795 // CSM restrictions byteflag
798
799 // ModChannel manager
800 std::unique_ptr<ModChannelMgr> m_modchannel_mgr;
801
802 // Inventory manager
803 std::unique_ptr<ServerInventoryManager> m_inventory_mgr;
804
805 // Global server metrics backend
806 std::unique_ptr<MetricsBackend> m_metrics_backend;
807
808 // Server metrics
813 MetricCounterPtr m_aom_buffer_counter[2]; // [0] = rel, [1] = unrel
817
818 // Particles to send this server step
819 // [playername] = list of params, empty playername for broadcast
820 std::unordered_map<std::string, std::vector<ParticleParameters>> m_particles_to_send;
821};
822
823/*
824 Runs a simple dedicated server loop.
825
826 Shuts down when kill is set to true.
827*/
828void dedicated_server_loop(Server &server, volatile std::sig_atomic_t &kill);
Definition address.h:27
Definition ban.h:12
Definition chat_interface.h:18
Definition clientiface.h:430
Definition emerge.h:116
Definition craftdef.h:388
Definition gamedef.h:26
Definition itemdef.h:146
Definition rollback_interface.h:98
Definition craftdef.h:417
Definition itemdef.h:165
Definition numeric.h:386
Definition inventory.h:277
Definition c_types.h:32
Definition mapblock.h:58
Definition map.h:97
Definition map.h:104
Definition metricsbackend.h:39
Definition modchannels.h:52
Definition modchannels.h:23
Definition exceptions.h:91
Definition database.h:79
Definition thread.h:15
Definition networkpacket.h:16
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:509
Definition player_sao.h:58
Definition player.h:140
Definition remoteplayer.h:27
Definition serveractiveobject.h:41
Definition serverenvironment.h:113
Definition serverinventorymgr.h:17
Manages server mods.
Definition mods.h:17
Definition scripting_server.h:34
Definition server.cpp:96
EnvAutoLock(Server *server)
Definition server.h:475
std::lock_guard< std::mutex > m_lock
Definition server.h:478
Definition server.h:178
void kickAllPlayers(AccessDeniedCode reason, const std::string &str_reason, bool reconnect)
Definition server.cpp:3058
void setIpBanned(const std::string &ip, const std::string &name)
Definition server.cpp:3438
void sendMetadataChanged(const std::unordered_set< v3s16 > &positions, float far_d_nodes=100)
Definition server.cpp:2475
void onMapEditEvent(const MapEditEvent &event) override
Definition server.cpp:1384
void DisconnectPeer(session_t peer_id)
Definition server.cpp:3067
void peerAdded(con::IPeer *peer) override
Definition server.cpp:1392
friend class RemoteClient
Definition server.h:493
IRollbackManager * m_rollback
Definition server.h:706
void stop()
Definition server.cpp:642
void handleCommand_FirstSrp(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1430
float m_liquid_transform_timer
Definition server.h:688
void setStars(RemotePlayer *player, const StarParams &params)
Definition server.cpp:3664
void setSun(RemotePlayer *player, const SunParams &params)
Definition server.cpp:3650
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3328
Translations * getTranslationLanguage(const std::string &lang_code)
Definition server.cpp:4353
void handleCommand_PlayerItem(NetworkPacket *pkt)
Definition serverpackethandler.cpp:821
std::mutex m_env_mutex
Definition server.h:666
std::unordered_map< session_t, std::string > m_formspec_state_data
Definition server.h:741
void SendPlayerFormspecPrepend(session_t peer_id)
Definition server.cpp:2179
bool rollbackRevertActions(const std::list< RollbackAction > &actions, std::list< std::string > *log)
Definition server.cpp:3939
std::string m_admin_nick
Definition server.h:750
void init()
Definition server.cpp:468
u16 m_max_chatmessage_length
Definition server.h:676
void requestShutdown(const std::string &msg, bool reconnect, float delay=0.0f)
Definition server.cpp:4148
void setStepSettings(StepSettings spdata)
Definition server.h:359
void SendShowFormspecMessage(session_t peer_id, const std::string &formspec, const std::string &formname)
Definition server.cpp:1625
void SendPlayerSpeed(session_t peer_id, const v3f &added_vel)
Definition server.cpp:2288
Address getPeerAddress(session_t peer_id)
Definition server.cpp:3617
void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness)
Definition server.cpp:3678
const NodeDefManager * getNodeDefManager() override
Definition server.cpp:3988
void SendPlayerInventoryFormspec(session_t peer_id)
Definition server.cpp:2167
void HandlePlayerDeath(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:3031
static u16 getProtocolVersionMax()
Definition server.cpp:4524
void SendMovePlayer(PlayerSAO *sao)
Definition server.cpp:2082
void DenySudoAccess(session_t peer_id)
Definition server.cpp:3043
void SendPlayerBreath(PlayerSAO *sao)
Definition server.cpp:2074
void SendAccessDenied(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason, bool reconnect=false)
Definition server.cpp:1521
IWritableCraftDefManager * m_craftdef
Definition server.h:718
ModStorageDatabase * m_mod_storage_database
Definition server.h:792
const ClientDynamicInfo * getClientDynamicInfo(session_t peer_id)
Definition server.cpp:1438
void spawnParticle(const std::string &playername, const ParticleParameters &p)
Definition server.cpp:3698
std::unique_ptr< PlayerSAO > emergePlayer(const char *name, session_t peer_id, u16 proto_version)
Definition server.cpp:4180
void step()
Definition server.cpp:653
MutexedVariable< std::string > m_async_fatal_error
Definition server.h:684
static ModStorageDatabase * openModStorageDatabase(const std::string &world_path)
Definition server.cpp:4390
void SendSetSky(session_t peer_id, const SkyboxParams &params)
Definition server.cpp:1944
void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value)
Definition server.cpp:1892
std::unordered_map< std::string, MediaInfo > m_media
Definition server.h:779
void SendHP(session_t peer_id, u16 hp, bool effect)
Definition server.cpp:1507
void SendDeleteParticleSpawner(session_t peer_id, u32 id)
Definition server.cpp:1854
u64 m_csm_restriction_flags
Definition server.h:796
bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what)
Definition serverpackethandler.cpp:857
void reportPrivsModified(const std::string &name="")
Definition server.cpp:3402
void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id)
Definition server.cpp:2986
void handleCommand_Null(NetworkPacket *pkt)
Definition server.h:219
void handleCommand_SrpBytesA(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1519
void SendAddParticleSpawner(const std::string &to_player, const std::string &exclude_player, const ParticleSpawnerParameters &p, u16 attached_id, u32 id)
send particle spawner to a selection of clients
Definition server.cpp:1713
void fadeSound(s32 handle, float step, float gain)
Definition server.cpp:2401
ModStorageDatabase * getModStorageDatabase() override
Definition server.h:336
std::queue< MapEditEvent * > m_unsent_map_edit_queue
Definition server.h:769
void hudSetHotbarSelectedImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3605
void printToConsoleOnly(const std::string &text)
Definition server.cpp:1449
void setTimeOfDay(u32 time)
Definition server.cpp:1378
void DeleteClient(session_t peer_id, ClientDeletionReason reason)
Definition server.cpp:3098
void ProcessData(NetworkPacket *pkt)
Definition server.cpp:1324
bool denyIfBanned(session_t peer_id)
Definition server.cpp:3458
void setAsyncFatalError(const std::string &error)
Definition server.cpp:4033
s32 playSound(ServerPlayingSound &params, bool ephemeral=false)
Definition server.cpp:2312
BanManager * m_banmanager
Definition server.h:703
friend class EmergeThread
Definition server.h:492
void setSky(RemotePlayer *player, const SkyboxParams &params)
Definition server.cpp:3643
bool m_dedicated
Definition server.h:678
ModIPCStore * getModIPCStore() override
Definition server.h:349
DISABLE_CLASS_COPY(Server)
bool addMediaFile(const std::string &filename, const std::string &filepath, std::string *filedata=nullptr, std::string *digest=nullptr)
Definition server.cpp:2643
std::string getWorldPath() const override
Definition server.h:347
void sendNodeChangePkt(NetworkPacket &pkt, v3s16 block_pos, v3f p, float far_d_nodes, std::unordered_set< u16 > *far_players)
Definition server.cpp:2446
void handleCommand_InventoryAction(NetworkPacket *pkt)
Definition serverpackethandler.cpp:570
bool checkUserLimit(const std::string &player_name, const std::string &addr_s)
Checks if user limit allows a potential client to join.
Definition server.cpp:3474
std::unique_ptr< EmergeManager > m_emerge
Definition server.h:709
void handleCommand_Interact(NetworkPacket *pkt)
Definition serverpackethandler.cpp:885
static std::vector< std::string > getModStorageDatabaseBackends()
Definition server.cpp:4409
void SendMovePlayerRel(session_t peer_id, const v3f &added_pos)
Definition server.cpp:2101
v3f findSpawnPos()
Definition server.cpp:4072
bool isClient() override
Definition server.h:328
VoxelArea m_ignore_map_edit_events_area
Definition server.h:776
std::set< std::string > getPlayerEffectivePrivs(const std::string &name)
Definition server.cpp:3389
s32 nextSoundId()
Definition server.cpp:2295
bool SendBlock(session_t peer_id, const v3s16 &blockpos)
Definition server.cpp:2627
IntervalLimiter m_map_timer_and_unload_interval
Definition server.h:693
void handleCommand_PlayerPos(NetworkPacket *pkt)
Definition serverpackethandler.cpp:517
friend class TestServerShutdownState
Definition server.h:496
void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask)
Definition server.cpp:1928
~Server()
Definition server.cpp:362
std::unique_ptr< ServerModManager > m_modmgr
Definition server.h:489
ServerEnvironment & getEnv()
Definition server.h:370
void sendDetachedInventories(session_t peer_id, bool incremental)
Definition server.cpp:3012
std::unordered_map< std::string, std::string > getMediaList()
Definition server.cpp:4377
PlayerSAO * getPlayerSAO(session_t peer_id)
Definition server.cpp:3341
void handleCommand(NetworkPacket *pkt)
Definition server.cpp:1318
void SendPlayerPrivileges(session_t peer_id)
Definition server.cpp:2148
bool joinModChannel(const std::string &channel) override
Definition server.cpp:4293
std::wstring handleChat(const std::string &name, std::wstring wmessage_input, bool check_shout_priv=false, RemotePlayer *player=nullptr)
Definition server.cpp:3220
MetricGaugePtr m_lag_gauge
Definition server.h:812
void notifyPlayer(const char *name, const std::wstring &msg)
Definition server.cpp:3483
void setMoon(RemotePlayer *player, const MoonParams &params)
Definition server.cpp:3657
u16 allocateUnknownNodeId(const std::string &name) override
Definition server.cpp:3998
ClientInterface m_clients
Definition server.h:739
void stopSound(s32 handle)
Definition server.cpp:2382
friend class TestMoveAction
Definition server.h:497
float m_time_of_day_send_timer
Definition server.h:687
void handleCommand_SrpBytesM(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1628
std::unordered_map< std::string, std::vector< ParticleParameters > > m_particles_to_send
Definition server.h:820
void handleCommand_InventoryFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1377
bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval)
Definition server.cpp:1408
MetricGaugePtr m_player_gauge
Definition server.h:810
void addShutdownError(const ModError &e)
Definition server.cpp:4051
float m_mod_storage_save_timer
Definition server.h:793
const std::vector< ModSpec > & getMods() const override
Definition server.cpp:4018
void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio)
Definition server.cpp:2017
std::string getBanDescription(const std::string &ip_or_name)
Definition server.cpp:3453
std::unordered_map< s32, ServerPlayingSound > m_playing_sounds
Definition server.h:788
MetricCounterPtr m_packet_recv_processed_counter
Definition server.h:815
ICraftDefManager * getCraftDefManager() override
Definition server.cpp:3993
float m_masterserver_timer
Definition server.h:690
void SendSetSun(session_t peer_id, const SunParams &params)
Definition server.cpp:1980
void setLighting(RemotePlayer *player, const Lighting &lighting)
Definition server.cpp:3686
void SendSetMoon(session_t peer_id, const MoonParams &params)
Definition server.cpp:1989
void UpdateCrafting(RemotePlayer *player)
Definition server.cpp:3176
bool checkPriv(const std::string &name, const std::string &priv)
Definition server.cpp:3396
void handleCommand_HaveMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1794
NodeDefManager * getWritableNodeDefManager()
Definition server.cpp:4008
ShutdownState m_shutdown_state
Definition server.h:747
std::atomic< StepSettings > m_step_settings
Definition server.h:731
MetricCounterPtr m_uptime_counter
Definition server.h:809
IRollbackManager * getRollbackManager() override
Definition server.h:334
u32 addParticleSpawner(const ParticleSpawnerParameters &p, ServerActiveObject *attached, const std::string &to_player, const std::string &exclude_player)
Definition server.cpp:3708
IWritableItemDefManager * getWritableItemDefManager()
Definition server.cpp:4003
void handleCommand_ModChannelLeave(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1741
Server(const std::string &path_world, const SubgameSpec &gamespec, bool simple_singleplayer_mode, Address bind_addr, bool dedicated, ChatInterface *iface=nullptr, std::string *shutdown_errmsg=nullptr)
Definition server.cpp:283
void handleCommand_ClientReady(NetworkPacket *pkt)
Definition serverpackethandler.cpp:354
void SendPlayerHP(PlayerSAO *sao, bool effect)
Definition server.cpp:1502
EmergeManager * getEmergeManager()
Definition server.h:335
void handleAdminChat(const ChatEventChat *evt)
Definition server.cpp:3307
void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version)
Definition server.cpp:1531
RemoteClient * getClient(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3320
const SubgameSpec * getGameSpec() const override
Definition server.h:345
void SendSetLighting(session_t peer_id, const Lighting &lighting)
Definition server.cpp:2028
void SendInventory(RemotePlayer *player, bool incremental)
Definition server.cpp:1587
bool hudSetFlags(RemotePlayer *player, u32 flags, u32 mask)
Definition server.cpp:3554
std::vector< std::pair< std::string, std::string > > m_mapgen_init_files
Definition server.h:464
float m_step_pending_dyn_media_timer
Definition server.h:783
void start()
Definition server.cpp:602
MetricCounterPtr m_aom_buffer_counter[2]
Definition server.h:813
MetricCounterPtr m_packet_recv_counter
Definition server.h:814
IWritableCraftDefManager * getWritableCraftDefManager()
Definition server.cpp:4013
void SendHUDAdd(session_t peer_id, u32 id, HudElement *form)
Definition server.cpp:1867
std::unique_ptr< ModChannelMgr > m_modchannel_mgr
Definition server.h:800
bool isShutdownRequested() const
Definition server.h:270
std::unique_ptr< ServerInventoryManager > m_inventory_mgr
Definition server.h:803
void sendRemoveNode(v3s16 p, std::unordered_set< u16 > *far_players=nullptr, float far_d_nodes=100)
Definition server.cpp:2422
void SendCloudParams(session_t peer_id, const CloudParams &params)
Definition server.cpp:2009
bool showFormspec(const char *name, const std::string &formspec, const std::string &formname)
Definition server.cpp:3500
bool hudRemove(RemotePlayer *player, u32 id)
Definition server.cpp:3530
void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value)
Definition server.cpp:1937
void broadcastModChannelMessage(const std::string &channel, const std::string &message, session_t from_peer)
Definition server.cpp:4318
void unsetIpBanned(const std::string &ip_or_name)
Definition server.cpp:3448
std::unique_ptr< ServerScripting > m_script
Definition server.h:486
void sendRequestedMedia(session_t peer_id, const std::unordered_set< std::string > &tosend)
Definition server.cpp:2824
u32 hudAdd(RemotePlayer *player, HudElement *element)
Definition server.cpp:3518
MetricCounterPtr m_map_edit_event_counter
Definition server.h:816
void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4], f32 animation_speed)
Definition server.cpp:2122
float m_savemap_timer
Definition server.h:692
float m_liquid_transform_every
Definition server.h:689
void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed)
Definition server.cpp:2061
ModChannel * getModChannel(const std::string &channel) override
Definition server.cpp:4313
void process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, NetworkPacket *pkt)
Definition serverpackethandler.cpp:440
Address m_bind_addr
Definition server.h:470
void DenyAccess(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason="", bool reconnect=false)
Definition server.cpp:3050
bool sendModChannelMessage(const std::string &channel, const std::string &message) override
Definition server.cpp:4304
bool getClientInfo(session_t peer_id, ClientInfo &ret)
Definition server.cpp:1414
void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver, u16 net_proto_version, SerializedBlockCache *cache=nullptr)
Definition server.cpp:2527
void SendHUDRemove(session_t peer_id, u32 id)
Definition server.cpp:1885
static std::string getBuiltinLuaPath()
Definition server.cpp:4028
void deleteParticleSpawner(const std::string &playername, u32 id)
Definition server.cpp:3727
void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front)
Definition server.cpp:2141
IWritableItemDefManager * m_itemdef
Definition server.h:712
void handleCommand_ModChannelMsg(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1765
ServerScripting * getScriptIface()
Definition server.h:320
void handleCommand_Init2(NetworkPacket *pkt)
Definition serverpackethandler.cpp:269
void yieldToOtherThreads(float dtime)
Definition server.cpp:1189
void handleCommand_GotBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:412
std::unique_ptr< MetricsBackend > m_metrics_backend
Definition server.h:806
std::unordered_map< u32, PendingDynamicMediaCallback > m_pending_dyn_media
Definition server.h:782
std::string getModDataPath() const override
Definition server.h:348
void handleCommand_Init(NetworkPacket *pkt)
Definition serverpackethandler.cpp:43
IntervalLimiter m_max_lag_decrease
Definition server.h:694
void deletingPeer(con::IPeer *peer, bool timeout) override
Definition server.cpp:1399
void SendSpawnParticles()
Definition server.cpp:1693
bool leaveModChannel(const std::string &channel) override
Definition server.cpp:4299
void acceptAuth(session_t peer_id, bool forSudoMode)
Definition server.cpp:3073
void reportFormspecPrependModified(const std::string &name)
Definition server.cpp:3430
void handleCommand_DeletedBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:542
void SendMovement(session_t peer_id)
Definition server.cpp:1470
void handleCommand_Damage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:785
static bool migrateModStorageDatabase(const GameParams &game_params, const Settings &cmd_args)
Definition server.cpp:4444
void handleCommand_RemovedSounds(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1287
void handleCommand_Deprecated(NetworkPacket *pkt)
Definition serverpackethandler.cpp:36
Map & getMap()
Definition server.cpp:4067
void handleCommand_ChatMessage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:763
void handleChatInterfaceEvent(ChatEvent *evt)
Definition server.cpp:3201
ServerThread * m_thread
Definition server.h:734
ServerInventoryManager * getInventoryMgr() const
Definition server.h:316
void SendActiveObjectMessages(session_t peer_id, const std::string &datas, bool reliable=true)
Definition server.cpp:2268
double getUptime() const
Definition server.h:267
void handleCommand_NodeMetaFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1332
std::unique_ptr< PackedValue > m_lua_globals_data
Definition server.h:467
PlayerSAO * StageTwoClientInit(session_t peer_id)
Definition server.cpp:1235
const ModSpec * getModSpec(const std::string &modname) const override
Definition server.cpp:4023
void sendAddNode(v3s16 p, MapNode n, std::unordered_set< u16 > *far_players=nullptr, float far_d_nodes=100, bool remove_metadata=true)
Definition server.cpp:2434
std::vector< std::pair< std::string, std::string > > m_async_init_files
Definition server.h:462
void SendCSMRestrictionFlags(session_t peer_id)
Definition server.cpp:2280
void setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third, v3f third_front)
Definition server.cpp:3630
void reportInventoryFormspecModified(const std::string &name)
Definition server.cpp:3422
void SendSetStars(session_t peer_id, const StarParams &params)
Definition server.cpp:1998
virtual void SendChatMessage(session_t peer_id, const ChatMessage &message)
Definition server.cpp:1609
std::string getStatusString()
Definition server.cpp:3349
void SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersao)
Definition server.cpp:2190
IItemDefManager * getItemDefManager() override
Definition server.cpp:3983
void AsyncRunStep(float dtime, bool initial_step=false)
Definition server.cpp:667
MetricGaugePtr m_timeofday_gauge
Definition server.h:811
Settings * m_game_settings
Definition server.h:681
SubgameSpec m_gamespec
Definition server.h:672
std::string getPlayerName(session_t peer_id)
Definition server.cpp:3333
void hudSetHotbarImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3593
void stepPendingDynMediaCallbacks(float dtime)
Definition server.cpp:2945
std::string m_path_world
Definition server.h:669
bool isSingleplayer() const
Definition server.h:351
bool dynamicAddMedia(const DynamicMediaArgs &args)
Definition server.cpp:3767
void handleCommand_ModChannelJoin(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1716
void Send(NetworkPacket *pkt)
Definition server.cpp:1459
void handleCommand_RequestMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:330
std::string *const m_shutdown_errmsg
Definition server.h:754
s32 m_playing_sounds_id_last_used
Definition server.h:789
u32 m_csm_restriction_noderange
Definition server.h:797
static u16 getProtocolVersionMin()
Definition server.cpp:4514
void SendBlocks(float dtime)
Definition server.cpp:2558
void handleCommand_UpdateClientInfo(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1821
void Receive(float min_time)
Receive and process all incoming packets.
Definition server.cpp:1132
void notifyPlayers(const std::wstring &msg)
Definition server.cpp:3693
std::unordered_map< std::pair< v3s16, u16 >, std::string, SBCHash > SerializedBlockCache
Definition server.h:528
bool hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount)
Definition server.cpp:3575
void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef, u16 protocol_version)
Definition server.cpp:1557
StepSettings getStepSettings()
Definition server.h:360
void SendBreath(session_t peer_id, u16 breath)
Definition server.cpp:1514
std::shared_ptr< con::IConnection > m_con
Definition server.h:700
void setLocalPlayerAnimations(RemotePlayer *player, v2f animation_frames[4], f32 frame_speed)
Definition server.cpp:3622
void setClouds(RemotePlayer *player, const CloudParams &params)
Definition server.cpp:3671
void HandlePlayerHPChange(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:1490
float m_emergethread_trigger_timer
Definition server.h:691
ModIPCStore m_ipcstore
Definition server.h:725
std::string m_path_mod_data
Definition server.h:670
void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code)
Definition server.cpp:2746
void SendMinimapModes(session_t peer_id, std::vector< MinimapMode > &modes, size_t wanted_mode)
Definition server.cpp:2970
ServerEnvironment * m_env
Definition server.h:697
void fillMediaCache()
Definition server.cpp:2711
bool m_simple_singleplayer_mode
Definition server.h:675
std::unordered_map< std::string, Translations > server_translations
Definition server.h:723
void SendCamera(session_t peer_id, Player *player)
Definition server.cpp:2052
ChatInterface * m_admin_chat
Definition server.h:749
NodeDefManager * m_nodedef
Definition server.h:715
bool hudChange(RemotePlayer *player, u32 id, HudElementStat stat, void *value)
Definition server.cpp:3545
void SendPlayerFov(session_t peer_id)
Definition server.cpp:2108
Definition settings.h:110
Definition translation.h:19
Definition voxel.h:41
Definition connection.h:47
Definition connection.h:34
Definition peerhandler.h:13
ClientState
Definition clientiface.h:163
@ CS_Active
Definition clientiface.h:172
#define BS
Definition constants.h:61
HudElementStat
Definition hud_element.h:59
MinimapType
Definition hud_element.h:108
@ MINIMAP_TYPE_OFF
Definition hud_element.h:109
core::vector2d< f32 > v2f
Definition irr_v2d.h:11
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
core::vector3df v3f
Definition irr_v3d.h:11
std::shared_ptr< MetricCounter > MetricCounterPtr
Definition metricsbackend.h:22
std::shared_ptr< MetricGauge > MetricGaugePtr
Definition metricsbackend.h:36
Definition activeobjectmgr.cpp:11
Definition client.h:64
rtt_stat_type
Definition connection.h:16
Definition activeobjectmgr.cpp:11
AccessDeniedCode
Definition networkprotocol.h:936
@ CSM_RF_NONE
Definition networkprotocol.h:961
u16 session_t
Definition networkprotocol.h:27
void dedicated_server_loop(Server &server, volatile std::sig_atomic_t &kill)
Definition server.cpp:4234
ClientDeletionReason
Definition server.h:91
@ CDR_LEAVE
Definition server.h:92
@ CDR_DENY
Definition server.h:94
@ CDR_TIMEOUT
Definition server.h:93
@ AC_INTERACTION
Definition server.h:80
@ AC_MOVEMENT
Definition server.h:81
@ AC_DIGGING
Definition server.h:79
constexpr static const FlagDesc flagdesc_anticheat[]
Definition server.h:84
SoundLocation
Definition sound_spec.h:47
@ Local
Definition sound_spec.h:48
Definition chat_interface.h:48
Definition chat_interface.h:60
Definition chatmessage.h:20
Definition clientdynamicinfo.h:12
Definition server.h:147
u32 uptime
Definition server.h:150
u8 ser_vers
Definition server.h:151
u8 patch
Definition server.h:153
u16 prot_vers
Definition server.h:152
ClientState state
Definition server.h:148
std::string vers_string
Definition server.h:154
Address addr
Definition server.h:149
std::string lang_code
Definition server.h:154
u8 major
Definition server.h:153
u8 minor
Definition server.h:153
Definition skyparams.h:72
Definition string.h:68
Definition gameparams.h:12
Definition hud_element.h:84
Describes ambient light settings for a player.
Definition lighting.h:46
Definition map.h:44
Definition mapnode.h:115
MediaInfo(std::string_view path_, std::string_view sha1_digest_)
Definition server.h:108
bool delete_at_shutdown
Definition server.h:106
std::string path
Definition server.h:99
bool ephemeral
Definition server.h:104
std::string sha1_digest
Definition server.h:100
bool no_announce
Definition server.h:102
Definition server.h:138
u16 size
Definition server.h:141
MinimapType type
Definition server.h:139
std::string texture
Definition server.h:142
std::string label
Definition server.h:140
u16 scale
Definition server.h:143
Definition server.h:157
std::condition_variable_any condvar
Signalled on any changes to the map contents.
Definition server.h:164
std::shared_mutex mutex
RW lock for this entire structure.
Definition server.h:162
ModIPCStore()=default
~ModIPCStore()
Definition server.cpp:86
std::unordered_map< std::string, std::unique_ptr< PackedValue > > map
Map storing the data.
Definition server.h:170
void signal()
Definition server.h:173
Definition mods.h:18
Definition skyparams.h:54
A packed value can be a primitive like a string or number but also a table including all of its conte...
Definition c_packer.h:72
Definition particles.h:295
Definition particles.h:306
Definition player_sao.h:235
Definition rollback_interface.h:40
Definition server.h:121
std::string to_player
Definition server.h:128
float gain
Definition server.h:124
std::unordered_set< session_t > clients
Definition server.h:135
std::string exclude_player
Definition server.h:129
SoundSpec spec
Definition server.h:133
v3f pos
Definition server.h:126
float max_hear_distance
Definition server.h:125
v3f getPos(ServerEnvironment *env, bool *pos_exists) const
Definition server.cpp:178
SoundLocation type
Definition server.h:122
Definition server.h:305
bool ephemeral
Definition server.h:311
u32 token
Definition server.h:309
std::optional< std::string_view > data
Definition server.h:308
std::string to_player
Definition server.h:310
bool client_cache
Definition server.h:312
std::string filename
Definition server.h:306
std::optional< std::string > filepath
Definition server.h:307
std::unordered_set< session_t > waiting_players
Definition server.h:518
std::string filename
Definition server.h:516
float expiry_timer
Definition server.h:517
Definition server.h:522
size_t operator()(const std::pair< v3s16, u16 > &p) const
Definition server.h:523
Definition server.h:499
void trigger(float delay, const std::string &msg, bool reconnect)
Definition server.cpp:214
bool isTimerRunning() const
Definition server.h:510
friend class TestServerShutdownState
Definition server.h:500
void tick(float dtime, Server *server)
Definition server.cpp:221
void reset()
Definition server.cpp:206
bool is_requested
Definition server.h:502
bool should_reconnect
Definition server.h:503
float m_timer
Definition server.h:512
std::wstring getShutdownTimerMessage() const
Definition server.cpp:253
std::string message
Definition server.h:504
Definition server.h:354
bool pause
Definition server.h:356
float steplen
Definition server.h:355
Definition skyparams.h:25
Describes the sound information for playback.
Definition sound_spec.h:18
Definition skyparams.h:62
Definition subgames.h:15
Definition skyparams.h:44
static std::string p(std::string path)
Definition test_filesys.cpp:64