Luanti 5.15.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,
81 AC_MOVEMENT = 0x04
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 Translations *getTranslationLanguage(const std::string &lang_code);
442
443 // Returns all media files the server knows about
444 // map key = binary sha1, map value = file path
445 std::unordered_map<std::string, std::string> getMediaList();
446
447 static std::vector<std::string> getModStorageDatabaseBackends();
448
449 static ModStorageDatabase *openModStorageDatabase(const std::string &world_path);
450
451 static ModStorageDatabase *openModStorageDatabase(const std::string &backend,
452 const std::string &world_path, const Settings &world_mt);
453
454 static bool migrateModStorageDatabase(const GameParams &game_params,
455 const Settings &cmd_args);
456
457 static u16 getProtocolVersionMin();
458 static u16 getProtocolVersionMax();
459
460 // Lua files registered for init of async env, pair of modname + path
461 std::vector<std::pair<std::string, std::string>> m_async_init_files;
462 // Identical but for mapgen env
463 std::vector<std::pair<std::string, std::string>> m_mapgen_init_files;
464
465 // Data transferred into other Lua envs at init time
466 std::unique_ptr<PackedValue> m_lua_globals_data;
467
468 // Bind address
470
471 // Public helper for taking the envlock in a scope
473 public:
475
476 private:
477 std::lock_guard<std::mutex> m_lock;
478 };
479
480protected:
481 /* Do not add more members here, this is only required to make unit tests work. */
482
483 // Scripting
484 // Envlock and conlock should be locked when using Lua
485 std::unique_ptr<ServerScripting> m_script;
486
487 // Mods
488 std::unique_ptr<ServerModManager> m_modmgr;
489
490private:
491 friend class EmergeThread;
492 friend class RemoteClient;
493
494 // unittest classes
496 friend class TestMoveAction;
497
500 public:
501 bool is_requested = false;
502 bool should_reconnect = false;
503 std::string message;
504
505 void reset();
506 void trigger(float delay, const std::string &msg, bool reconnect);
507 void tick(float dtime, Server *server);
508 std::wstring getShutdownTimerMessage() const;
509 bool isTimerRunning() const { return m_timer > 0.0f; }
510 private:
511 float m_timer = 0.0f;
512 };
513
515 std::string filename; // only set if media entry and file is to be deleted
517 std::unordered_set<session_t> waiting_players;
518 };
519
520 // The standard library does not implement std::hash for pairs so we have this:
521 struct SBCHash {
522 size_t operator() (const std::pair<v3s16, u16> &p) const {
523 return std::hash<v3s16>()(p.first) ^ p.second;
524 }
525 };
526
527 typedef std::unordered_map<std::pair<v3s16, u16>, std::string, SBCHash> SerializedBlockCache;
528
529 void init();
530
531 void SendMovement(session_t peer_id);
532 void SendHP(session_t peer_id, u16 hp, bool effect);
533 void SendBreath(session_t peer_id, u16 breath);
534 void SendAccessDenied(session_t peer_id, AccessDeniedCode reason,
535 std::string_view custom_reason, bool reconnect = false);
536 void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version);
537 void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef,
538 u16 protocol_version);
539
540
541 virtual void SendChatMessage(session_t peer_id, const ChatMessage &message);
542 void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed);
543
544 void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4],
545 f32 animation_speed);
546 void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front);
547 void SendPlayerPrivileges(session_t peer_id);
550 void SendShowFormspecMessage(session_t peer_id, const std::string &formspec,
551 const std::string &formname);
552 void SendHUDAdd(session_t peer_id, u32 id, HudElement *form);
553 void SendHUDRemove(session_t peer_id, u32 id);
554 void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value);
555 void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask);
556 void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value);
557 void SendSetSky(session_t peer_id, const SkyboxParams &params);
558 void SendSetSun(session_t peer_id, const SunParams &params);
559 void SendSetMoon(session_t peer_id, const MoonParams &params);
560 void SendSetStars(session_t peer_id, const StarParams &params);
561 void SendCloudParams(session_t peer_id, const CloudParams &params);
562 void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio);
563 void SendSetLighting(session_t peer_id, const Lighting &lighting);
564
565 void broadcastModChannelMessage(const std::string &channel,
566 const std::string &message, session_t from_peer);
567
568 /*
569 Send a node removal/addition event to all clients except ignore_id.
570 Additionally, if far_players!=NULL, players further away than
571 far_d_nodes are ignored and their peer_ids are added to far_players
572 */
573 // Envlock and conlock should be locked when calling these
574 void sendRemoveNode(v3s16 p, std::unordered_set<u16> *far_players = nullptr,
575 float far_d_nodes = 100);
576 void sendAddNode(v3s16 p, MapNode n,
577 std::unordered_set<u16> *far_players = nullptr,
578 float far_d_nodes = 100, bool remove_metadata = true);
579 void sendNodeChangePkt(NetworkPacket &pkt, v3s16 block_pos,
580 v3f p, float far_d_nodes, std::unordered_set<u16> *far_players);
581
582 void sendMetadataChanged(const std::unordered_set<v3s16> &positions,
583 float far_d_nodes = 100);
584
585 // Environment and Connection must be locked when called
586 // `cache` may only be very short lived! (invalidation not handeled)
587 void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver,
588 u16 net_proto_version, SerializedBlockCache *cache = nullptr);
589
590 // Sends blocks to clients (locks env and con on its own)
591 void SendBlocks(float dtime);
592
593 bool addMediaFile(const std::string &filename, const std::string &filepath,
594 std::string *filedata = nullptr, std::string *digest = nullptr);
595 void fillMediaCache();
596 void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code);
597 void sendRequestedMedia(session_t peer_id,
598 const std::unordered_set<std::string> &tosend);
599 void stepPendingDynMediaCallbacks(float dtime);
600
602 void SendAddParticleSpawner(const std::string &to_player,
603 const std::string &exclude_player,
604 const ParticleSpawnerParameters &p, u16 attached_id, u32 id);
606 void SendAddParticleSpawner(session_t peer_id, u16 protocol_version,
607 const ParticleSpawnerParameters &p, u16 attached_id, u32 id);
608
609 void SendDeleteParticleSpawner(session_t peer_id, u32 id);
610
611 // Spawn particles for a specific client, batching them if clients support it.
612 void SendSpawnParticles(RemotePlayer *player,
613 const std::vector<ParticleParameters> &particles);
614 // Spawn all particles for this step, batching them if clients support it.
615 void SendSpawnParticles();
616
618 void SendActiveObjectMessages(session_t peer_id, const std::string &datas,
619 bool reliable = true);
621
622 /*
623 Something random
624 */
625
626 void HandlePlayerDeath(PlayerSAO* sao, const PlayerHPChangeReason &reason);
627 void DeleteClient(session_t peer_id, ClientDeletionReason reason);
628 void UpdateCrafting(RemotePlayer *player);
629 bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what);
630
632
635 bool checkUserLimit(const std::string &player_name, const std::string &addr_s);
636
637 // This returns the answer to the sender of wmessage, or "" if there is none
638 std::wstring handleChat(const std::string &name, std::wstring wmessage_input,
639 bool check_shout_priv = false, RemotePlayer *player = nullptr);
640 void handleAdminChat(const ChatEventChat *evt);
641
642 // When called, connection mutex should be locked
645
646 // When called, environment mutex should be locked
647 std::string getPlayerName(session_t peer_id);
649
650 /*
651 Get a player from memory or creates one.
652 If player is already connected, return NULL
653 Does not verify/modify auth info and password.
654
655 Call with env and con locked.
656 */
657 std::unique_ptr<PlayerSAO> emergePlayer(const char *name, session_t peer_id,
658 u16 proto_version);
659
660 /*
661 Variables
662 */
663
664 // Environment mutex (envlock)
665 std::mutex m_env_mutex;
666
667 // World directory
668 std::string m_path_world;
669 std::string m_path_mod_data;
670 // Subgame specification
672 // If true, do not allow multiple players and hide some multiplayer
673 // functionality
676 // For "dedicated" server list flag
678
679 // Game settings layer
681
682 // Thread can set; step() will throw as ServerError
684
685 // Some timers
691 float m_savemap_timer = 0.0f;
694
695 // Environment
697
698 // server connection
699 std::shared_ptr<con::IConnection> m_con;
700
701 // Ban checking
703
704 // Rollback manager (behind m_env_mutex)
706
707 // Emerge manager
708 std::unique_ptr<EmergeManager> m_emerge;
709
710 // Item definition manager
712
713 // Node definition manager
715
716 // Craft definition manager
718
719 // NOTE: Cannot use forward declaration of 'Translations'. Whereas most
720 // modern compilers support incomplete types here, it's not in the C++ spec.
721 std::unordered_map<std::string, Translations> server_translations;
722
724
725 /*
726 Threads
727 */
728 // Set by Game
729 std::atomic<StepSettings> m_step_settings{{0.1f, false}};
730
731 // The server mainly operates in this thread
733
734 /*
735 Client interface
736 */
738
739 std::unordered_map<session_t, std::string> m_formspec_state_data;
740
741 /*
742 Random stuff
743 */
744
746
748 std::string m_admin_nick;
749
750 // If a mod error occurs while shutting down, the error message will be
751 // written into this.
752 std::string *const m_shutdown_errmsg;
753
754 /*
755 Map edit event queue. Automatically receives all map edits.
756 The constructor of this class registers us to receive them through
757 onMapEditEvent
758
759 NOTE: Should these be moved to actually be members of
760 ServerEnvironment?
761 */
762
763 /*
764 Queue of map edits from the environment for sending to the clients
765 This is behind m_env_mutex
766 */
767 std::queue<MapEditEvent*> m_unsent_map_edit_queue;
768 /*
769 If a non-empty area, map edit events contained within are left
770 unsent. Done at map generation time to speed up editing of the
771 generated area, as it will be sent anyway.
772 This is behind m_env_mutex
773 */
775
776 // media files known to server
777 std::unordered_map<std::string, MediaInfo> m_media;
778
779 // pending dynamic media callbacks, clients inform the server when they have a file fetched
780 std::unordered_map<u32, PendingDynamicMediaCallback> m_pending_dyn_media;
782
783 /*
784 Sounds
785 */
786 std::unordered_map<s32, ServerPlayingSound> m_playing_sounds;
787 s32 m_playing_sounds_id_last_used = 0; // positive values only
788 s32 nextSoundId();
789
792
793 // CSM restrictions byteflag
796
797 // ModChannel manager
798 std::unique_ptr<ModChannelMgr> m_modchannel_mgr;
799
800 // Inventory manager
801 std::unique_ptr<ServerInventoryManager> m_inventory_mgr;
802
803 // Global server metrics backend
804 std::unique_ptr<MetricsBackend> m_metrics_backend;
805
806 // Server metrics
811 MetricCounterPtr m_aom_buffer_counter[2]; // [0] = rel, [1] = unrel
815
816 // Particles to send this server step
817 // [playername] = list of params, empty playername for broadcast
818 std::unordered_map<std::string, std::vector<ParticleParameters>> m_particles_to_send;
819};
820
821/*
822 Runs a simple dedicated server loop.
823
824 Shuts down when kill is set to true.
825*/
826void 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 emerge_internal.h:25
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:93
Definition map.h:100
virtual double get() const =0
Definition metricsbackend.h:39
Definition modchannels.h:52
Definition modchannels.h:23
Definition exceptions.h:85
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 clientiface.h:212
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
Definition server.h:472
EnvAutoLock(Server *server)
Definition server.h:474
std::lock_guard< std::mutex > m_lock
Definition server.h:477
Definition server.h:178
void kickAllPlayers(AccessDeniedCode reason, const std::string &str_reason, bool reconnect)
Definition server.cpp:3012
void setIpBanned(const std::string &ip, const std::string &name)
Definition server.cpp:3392
void sendMetadataChanged(const std::unordered_set< v3s16 > &positions, float far_d_nodes=100)
Definition server.cpp:2431
void onMapEditEvent(const MapEditEvent &event) override
Definition server.cpp:1355
void DisconnectPeer(session_t peer_id)
Definition server.cpp:3021
void peerAdded(con::IPeer *peer) override
Definition server.cpp:1363
IRollbackManager * m_rollback
Definition server.h:705
void stop()
Definition server.cpp:615
void handleCommand_FirstSrp(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1417
float m_liquid_transform_timer
Definition server.h:687
void setStars(RemotePlayer *player, const StarParams &params)
Definition server.cpp:3618
void setSun(RemotePlayer *player, const SunParams &params)
Definition server.cpp:3604
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3282
Translations * getTranslationLanguage(const std::string &lang_code)
Definition server.cpp:4307
void handleCommand_PlayerItem(NetworkPacket *pkt)
Definition serverpackethandler.cpp:811
std::mutex m_env_mutex
Definition server.h:665
std::unordered_map< session_t, std::string > m_formspec_state_data
Definition server.h:739
void SendPlayerFormspecPrepend(session_t peer_id)
Definition server.cpp:2135
bool rollbackRevertActions(const std::list< RollbackAction > &actions, std::list< std::string > *log)
Definition server.cpp:3893
std::string m_admin_nick
Definition server.h:748
void init()
Definition server.cpp:441
u16 m_max_chatmessage_length
Definition server.h:675
void requestShutdown(const std::string &msg, bool reconnect, float delay=0.0f)
Definition server.cpp:4102
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:1596
void SendPlayerSpeed(session_t peer_id, const v3f &added_vel)
Definition server.cpp:2244
Address getPeerAddress(session_t peer_id)
Definition server.cpp:3571
void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness)
Definition server.cpp:3632
const NodeDefManager * getNodeDefManager() override
Definition server.cpp:3942
void SendPlayerInventoryFormspec(session_t peer_id)
Definition server.cpp:2123
void HandlePlayerDeath(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:2985
static u16 getProtocolVersionMax()
Definition server.cpp:4478
void SendMovePlayer(PlayerSAO *sao)
Definition server.cpp:2038
void DenySudoAccess(session_t peer_id)
Definition server.cpp:2997
void SendPlayerBreath(PlayerSAO *sao)
Definition server.cpp:2030
void SendAccessDenied(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason, bool reconnect=false)
Definition server.cpp:1492
IWritableCraftDefManager * m_craftdef
Definition server.h:717
ModStorageDatabase * m_mod_storage_database
Definition server.h:790
const ClientDynamicInfo * getClientDynamicInfo(session_t peer_id)
Definition server.cpp:1409
void spawnParticle(const std::string &playername, const ParticleParameters &p)
Definition server.cpp:3652
std::unique_ptr< PlayerSAO > emergePlayer(const char *name, session_t peer_id, u16 proto_version)
Definition server.cpp:4134
void step()
Definition server.cpp:626
MutexedVariable< std::string > m_async_fatal_error
Definition server.h:683
static ModStorageDatabase * openModStorageDatabase(const std::string &world_path)
Definition server.cpp:4344
void SendSetSky(session_t peer_id, const SkyboxParams &params)
Definition server.cpp:1904
void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value)
Definition server.cpp:1857
std::unordered_map< std::string, MediaInfo > m_media
Definition server.h:777
void SendHP(session_t peer_id, u16 hp, bool effect)
Definition server.cpp:1478
void SendDeleteParticleSpawner(session_t peer_id, u32 id)
Definition server.cpp:1825
u64 m_csm_restriction_flags
Definition server.h:794
bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what)
Definition serverpackethandler.cpp:845
void reportPrivsModified(const std::string &name="")
Definition server.cpp:3356
void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id)
Definition server.cpp:2940
void handleCommand_Null(NetworkPacket *pkt)
Definition server.h:219
void handleCommand_SrpBytesA(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1506
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:1684
void fadeSound(s32 handle, float step, float gain)
Definition server.cpp:2357
ModStorageDatabase * getModStorageDatabase() override
Definition server.h:336
std::queue< MapEditEvent * > m_unsent_map_edit_queue
Definition server.h:767
void hudSetHotbarSelectedImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3559
void printToConsoleOnly(const std::string &text)
Definition server.cpp:1420
void setTimeOfDay(u32 time)
Definition server.cpp:1349
void DeleteClient(session_t peer_id, ClientDeletionReason reason)
Definition server.cpp:3052
void ProcessData(NetworkPacket *pkt)
Definition server.cpp:1291
bool denyIfBanned(session_t peer_id)
Definition server.cpp:3412
void setAsyncFatalError(const std::string &error)
Definition server.cpp:3987
s32 playSound(ServerPlayingSound &params, bool ephemeral=false)
Definition server.cpp:2268
BanManager * m_banmanager
Definition server.h:702
void setSky(RemotePlayer *player, const SkyboxParams &params)
Definition server.cpp:3597
bool m_dedicated
Definition server.h:677
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:2599
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:2402
void handleCommand_InventoryAction(NetworkPacket *pkt)
Definition serverpackethandler.cpp:560
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:3428
std::unique_ptr< EmergeManager > m_emerge
Definition server.h:708
void handleCommand_Interact(NetworkPacket *pkt)
Definition serverpackethandler.cpp:873
static std::vector< std::string > getModStorageDatabaseBackends()
Definition server.cpp:4363
void SendMovePlayerRel(session_t peer_id, const v3f &added_pos)
Definition server.cpp:2057
v3f findSpawnPos()
Definition server.cpp:4026
bool isClient() override
Definition server.h:328
VoxelArea m_ignore_map_edit_events_area
Definition server.h:774
std::set< std::string > getPlayerEffectivePrivs(const std::string &name)
Definition server.cpp:3343
s32 nextSoundId()
Definition server.cpp:2251
bool SendBlock(session_t peer_id, const v3s16 &blockpos)
Definition server.cpp:2583
IntervalLimiter m_map_timer_and_unload_interval
Definition server.h:692
void handleCommand_PlayerPos(NetworkPacket *pkt)
Definition serverpackethandler.cpp:507
void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask)
Definition server.cpp:1888
~Server()
Definition server.cpp:344
std::unique_ptr< ServerModManager > m_modmgr
Definition server.h:488
ServerEnvironment & getEnv()
Definition server.h:370
void sendDetachedInventories(session_t peer_id, bool incremental)
Definition server.cpp:2966
std::unordered_map< std::string, std::string > getMediaList()
Definition server.cpp:4331
PlayerSAO * getPlayerSAO(session_t peer_id)
Definition server.cpp:3295
void handleCommand(NetworkPacket *pkt)
Definition server.cpp:1285
void SendPlayerPrivileges(session_t peer_id)
Definition server.cpp:2104
bool joinModChannel(const std::string &channel) override
Definition server.cpp:4247
std::wstring handleChat(const std::string &name, std::wstring wmessage_input, bool check_shout_priv=false, RemotePlayer *player=nullptr)
Definition server.cpp:3174
MetricGaugePtr m_lag_gauge
Definition server.h:810
void notifyPlayer(const char *name, const std::wstring &msg)
Definition server.cpp:3437
void setMoon(RemotePlayer *player, const MoonParams &params)
Definition server.cpp:3611
u16 allocateUnknownNodeId(const std::string &name) override
Definition server.cpp:3952
ClientInterface m_clients
Definition server.h:737
void stopSound(s32 handle)
Definition server.cpp:2338
float m_time_of_day_send_timer
Definition server.h:686
void handleCommand_SrpBytesM(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1615
std::unordered_map< std::string, std::vector< ParticleParameters > > m_particles_to_send
Definition server.h:818
void handleCommand_InventoryFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1364
bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval)
Definition server.cpp:1379
MetricGaugePtr m_player_gauge
Definition server.h:808
void addShutdownError(const ModError &e)
Definition server.cpp:4005
float m_mod_storage_save_timer
Definition server.h:791
const std::vector< ModSpec > & getMods() const override
Definition server.cpp:3972
void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio)
Definition server.cpp:1975
std::string getBanDescription(const std::string &ip_or_name)
Definition server.cpp:3407
std::unordered_map< s32, ServerPlayingSound > m_playing_sounds
Definition server.h:786
MetricCounterPtr m_packet_recv_processed_counter
Definition server.h:813
ICraftDefManager * getCraftDefManager() override
Definition server.cpp:3947
float m_masterserver_timer
Definition server.h:689
void SendSetSun(session_t peer_id, const SunParams &params)
Definition server.cpp:1938
void setLighting(RemotePlayer *player, const Lighting &lighting)
Definition server.cpp:3640
void SendSetMoon(session_t peer_id, const MoonParams &params)
Definition server.cpp:1947
void UpdateCrafting(RemotePlayer *player)
Definition server.cpp:3130
bool checkPriv(const std::string &name, const std::string &priv)
Definition server.cpp:3350
void handleCommand_HaveMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1781
NodeDefManager * getWritableNodeDefManager()
Definition server.cpp:3962
ShutdownState m_shutdown_state
Definition server.h:745
std::atomic< StepSettings > m_step_settings
Definition server.h:729
MetricCounterPtr m_uptime_counter
Definition server.h:807
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:3662
IWritableItemDefManager * getWritableItemDefManager()
Definition server.cpp:3957
void handleCommand_ModChannelLeave(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1728
void handleCommand_ClientReady(NetworkPacket *pkt)
Definition serverpackethandler.cpp:350
void SendPlayerHP(PlayerSAO *sao, bool effect)
Definition server.cpp:1473
EmergeManager * getEmergeManager()
Definition server.h:335
void handleAdminChat(const ChatEventChat *evt)
Definition server.cpp:3261
void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version)
Definition server.cpp:1502
RemoteClient * getClient(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3274
const SubgameSpec * getGameSpec() const override
Definition server.h:345
void SendSetLighting(session_t peer_id, const Lighting &lighting)
Definition server.cpp:1986
void SendInventory(RemotePlayer *player, bool incremental)
Definition server.cpp:1558
bool hudSetFlags(RemotePlayer *player, u32 flags, u32 mask)
Definition server.cpp:3508
std::vector< std::pair< std::string, std::string > > m_mapgen_init_files
Definition server.h:463
float m_step_pending_dyn_media_timer
Definition server.h:781
void start()
Definition server.cpp:575
MetricCounterPtr m_aom_buffer_counter[2]
Definition server.h:811
MetricCounterPtr m_packet_recv_counter
Definition server.h:812
IWritableCraftDefManager * getWritableCraftDefManager()
Definition server.cpp:3967
void SendHUDAdd(session_t peer_id, u32 id, HudElement *form)
Definition server.cpp:1838
std::unique_ptr< ModChannelMgr > m_modchannel_mgr
Definition server.h:798
bool isShutdownRequested() const
Definition server.h:270
std::unique_ptr< ServerInventoryManager > m_inventory_mgr
Definition server.h:801
void sendRemoveNode(v3s16 p, std::unordered_set< u16 > *far_players=nullptr, float far_d_nodes=100)
Definition server.cpp:2378
void SendCloudParams(session_t peer_id, const CloudParams &params)
Definition server.cpp:1967
bool showFormspec(const char *name, const std::string &formspec, const std::string &formname)
Definition server.cpp:3454
bool hudRemove(RemotePlayer *player, u32 id)
Definition server.cpp:3484
void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value)
Definition server.cpp:1897
void broadcastModChannelMessage(const std::string &channel, const std::string &message, session_t from_peer)
Definition server.cpp:4272
void unsetIpBanned(const std::string &ip_or_name)
Definition server.cpp:3402
std::unique_ptr< ServerScripting > m_script
Definition server.h:485
void sendRequestedMedia(session_t peer_id, const std::unordered_set< std::string > &tosend)
Definition server.cpp:2779
u32 hudAdd(RemotePlayer *player, HudElement *element)
Definition server.cpp:3472
MetricCounterPtr m_map_edit_event_counter
Definition server.h:814
void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4], f32 animation_speed)
Definition server.cpp:2078
float m_savemap_timer
Definition server.h:691
float m_liquid_transform_every
Definition server.h:688
void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed)
Definition server.cpp:2017
ModChannel * getModChannel(const std::string &channel) override
Definition server.cpp:4267
void process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, NetworkPacket *pkt)
Definition serverpackethandler.cpp:436
Address m_bind_addr
Definition server.h:469
void DenyAccess(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason="", bool reconnect=false)
Definition server.cpp:3004
bool sendModChannelMessage(const std::string &channel, const std::string &message) override
Definition server.cpp:4258
bool getClientInfo(session_t peer_id, ClientInfo &ret)
Definition server.cpp:1385
void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver, u16 net_proto_version, SerializedBlockCache *cache=nullptr)
Definition server.cpp:2483
void SendHUDRemove(session_t peer_id, u32 id)
Definition server.cpp:1850
static std::string getBuiltinLuaPath()
Definition server.cpp:3982
void deleteParticleSpawner(const std::string &playername, u32 id)
Definition server.cpp:3681
void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front)
Definition server.cpp:2097
IWritableItemDefManager * m_itemdef
Definition server.h:711
void handleCommand_ModChannelMsg(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1752
ServerScripting * getScriptIface()
Definition server.h:320
void handleCommand_Init2(NetworkPacket *pkt)
Definition serverpackethandler.cpp:269
void yieldToOtherThreads(float dtime)
Definition server.cpp:1156
void handleCommand_GotBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:408
std::unique_ptr< MetricsBackend > m_metrics_backend
Definition server.h:804
std::unordered_map< u32, PendingDynamicMediaCallback > m_pending_dyn_media
Definition server.h:780
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:693
void deletingPeer(con::IPeer *peer, bool timeout) override
Definition server.cpp:1370
void SendSpawnParticles()
Definition server.cpp:1664
bool leaveModChannel(const std::string &channel) override
Definition server.cpp:4253
void acceptAuth(session_t peer_id, bool forSudoMode)
Definition server.cpp:3027
void reportFormspecPrependModified(const std::string &name)
Definition server.cpp:3384
void handleCommand_DeletedBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:532
void SendMovement(session_t peer_id)
Definition server.cpp:1441
void handleCommand_Damage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:775
static bool migrateModStorageDatabase(const GameParams &game_params, const Settings &cmd_args)
Definition server.cpp:4398
void handleCommand_RemovedSounds(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1274
void handleCommand_Deprecated(NetworkPacket *pkt)
Definition serverpackethandler.cpp:36
Map & getMap()
Definition server.cpp:4021
void handleCommand_ChatMessage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:753
void handleChatInterfaceEvent(ChatEvent *evt)
Definition server.cpp:3155
ServerThread * m_thread
Definition server.h:732
ServerInventoryManager * getInventoryMgr() const
Definition server.h:316
void SendActiveObjectMessages(session_t peer_id, const std::string &datas, bool reliable=true)
Definition server.cpp:2224
double getUptime() const
Definition server.h:267
void handleCommand_NodeMetaFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1319
std::unique_ptr< PackedValue > m_lua_globals_data
Definition server.h:466
PlayerSAO * StageTwoClientInit(session_t peer_id)
Definition server.cpp:1202
const ModSpec * getModSpec(const std::string &modname) const override
Definition server.cpp:3977
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:2390
std::vector< std::pair< std::string, std::string > > m_async_init_files
Definition server.h:461
void SendCSMRestrictionFlags(session_t peer_id)
Definition server.cpp:2236
void setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third, v3f third_front)
Definition server.cpp:3584
void reportInventoryFormspecModified(const std::string &name)
Definition server.cpp:3376
void SendSetStars(session_t peer_id, const StarParams &params)
Definition server.cpp:1956
virtual void SendChatMessage(session_t peer_id, const ChatMessage &message)
Definition server.cpp:1580
std::string getStatusString()
Definition server.cpp:3303
void SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersao)
Definition server.cpp:2146
IItemDefManager * getItemDefManager() override
Definition server.cpp:3937
void AsyncRunStep(float dtime, bool initial_step=false)
Definition server.cpp:640
MetricGaugePtr m_timeofday_gauge
Definition server.h:809
Settings * m_game_settings
Definition server.h:680
SubgameSpec m_gamespec
Definition server.h:671
std::string getPlayerName(session_t peer_id)
Definition server.cpp:3287
void hudSetHotbarImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3547
void stepPendingDynMediaCallbacks(float dtime)
Definition server.cpp:2900
std::string m_path_world
Definition server.h:668
bool isSingleplayer() const
Definition server.h:351
bool dynamicAddMedia(const DynamicMediaArgs &args)
Definition server.cpp:3721
void handleCommand_ModChannelJoin(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1703
void Send(NetworkPacket *pkt)
Definition server.cpp:1430
void handleCommand_RequestMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:326
std::string *const m_shutdown_errmsg
Definition server.h:752
s32 m_playing_sounds_id_last_used
Definition server.h:787
u32 m_csm_restriction_noderange
Definition server.h:795
static u16 getProtocolVersionMin()
Definition server.cpp:4468
void SendBlocks(float dtime)
Definition server.cpp:2514
void handleCommand_UpdateClientInfo(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1808
void Receive(float min_time)
Receive and process all incoming packets.
Definition server.cpp:1104
void notifyPlayers(const std::wstring &msg)
Definition server.cpp:3647
std::unordered_map< std::pair< v3s16, u16 >, std::string, SBCHash > SerializedBlockCache
Definition server.h:527
bool hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount)
Definition server.cpp:3529
void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef, u16 protocol_version)
Definition server.cpp:1528
StepSettings getStepSettings()
Definition server.h:360
void SendBreath(session_t peer_id, u16 breath)
Definition server.cpp:1485
std::shared_ptr< con::IConnection > m_con
Definition server.h:699
void setLocalPlayerAnimations(RemotePlayer *player, v2f animation_frames[4], f32 frame_speed)
Definition server.cpp:3576
void setClouds(RemotePlayer *player, const CloudParams &params)
Definition server.cpp:3625
void HandlePlayerHPChange(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:1461
float m_emergethread_trigger_timer
Definition server.h:690
ModIPCStore m_ipcstore
Definition server.h:723
std::string m_path_mod_data
Definition server.h:669
void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code)
Definition server.cpp:2694
void SendMinimapModes(session_t peer_id, std::vector< MinimapMode > &modes, size_t wanted_mode)
Definition server.cpp:2924
ServerEnvironment * m_env
Definition server.h:696
void fillMediaCache()
Definition server.cpp:2661
bool m_simple_singleplayer_mode
Definition server.h:674
std::unordered_map< std::string, Translations > server_translations
Definition server.h:721
void SendCamera(session_t peer_id, Player *player)
Definition server.cpp:2008
ChatInterface * m_admin_chat
Definition server.h:747
NodeDefManager * m_nodedef
Definition server.h:714
bool hudChange(RemotePlayer *player, u32 id, HudElementStat stat, void *value)
Definition server.cpp:3499
void SendPlayerFov(session_t peer_id)
Definition server.cpp:2064
Definition settings.h:110
Definition test_moveaction.cpp:13
Definition test_server_shutdown_state.cpp:13
Definition translation.h:18
Definition voxel.h:41
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:61
rtt_stat_type
Definition connection.h:16
Definition activeobjectmgr.cpp:11
AccessDeniedCode
Definition networkprotocol.h:929
@ CSM_RF_NONE
Definition networkprotocol.h:954
u16 session_t
Definition networkprotocol.h:27
void dedicated_server_loop(Server &server, volatile std::sig_atomic_t &kill)
Definition server.cpp:4188
ClientDeletionReason
Definition server.h:91
@ CDR_LEAVE
Definition server.h:92
@ CDR_DENY
Definition server.h:94
@ CDR_TIMEOUT
Definition server.h:93
constexpr static const FlagDesc flagdesc_anticheat[]
Definition server.h:84
@ AC_INTERACTION
Definition server.h:80
@ AC_MOVEMENT
Definition server.h:81
@ AC_DIGGING
Definition server.h:79
SoundLocation
Definition sound_spec.h:47
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:71
Definition string.h:68
Definition gameparams.h:12
Definition hud_element.h:84
Describes ambient light settings for a player.
Definition lighting.h:45
Definition map.h:43
Definition mapnode.h:123
Definition server.h:98
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:53
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:517
std::string filename
Definition server.h:515
float expiry_timer
Definition server.h:516
Definition server.h:521
size_t operator()(const std::pair< v3s16, u16 > &p) const
Definition server.h:522
Definition server.h:498
void trigger(float delay, const std::string &msg, bool reconnect)
Definition server.cpp:214
bool isTimerRunning() const
Definition server.h:509
void tick(float dtime, Server *server)
Definition server.cpp:221
void reset()
Definition server.cpp:206
bool is_requested
Definition server.h:501
bool should_reconnect
Definition server.h:502
float m_timer
Definition server.h:511
std::wstring getShutdownTimerMessage() const
Definition server.cpp:253
std::string message
Definition server.h:503
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:61
Definition subgames.h:14
Definition skyparams.h:43
static std::string p(std::string path)
Definition test_filesys.cpp:64