Luanti 5.11.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.h"
10#include "gamedef.h"
11#include "content/mods.h"
12#include "inventorymanager.h"
13#include "content/subgames.h"
14#include "network/peerhandler.h"
15#include "network/connection.h"
16#include "util/numeric.h"
17#include "util/thread.h"
18#include "util/basic_macros.h"
19#include "util/metricsbackend.h"
20#include "serverenvironment.h"
21#include "server/clientiface.h"
23#include "chatmessage.h"
24#include "sound.h"
25#include "translation.h"
26#include "script/common/c_types.h" // LuaError
27#include <atomic>
28#include <string>
29#include <list>
30#include <map>
31#include <vector>
32#include <unordered_set>
33#include <optional>
34#include <string_view>
35#include <shared_mutex>
36#include <condition_variable>
37
38class ChatEvent;
39struct ChatEventChat;
40struct ChatInterface;
42class NodeDefManager;
44class BanManager;
45class Inventory;
46class ModChannelMgr;
47class RemotePlayer;
48class PlayerSAO;
51struct RollbackAction;
52class EmergeManager;
53class ServerScripting;
55struct SoundSpec;
56struct CloudParams;
57struct SkyboxParams;
58struct SunParams;
59struct MoonParams;
60struct StarParams;
61struct Lighting;
62class ServerThread;
65struct PackedValue;
68
69// Anticheat flags
70enum {
71 AC_DIGGING = 0x01,
73 AC_MOVEMENT = 0x04
74};
75
76constexpr const static FlagDesc flagdesc_anticheat[] = {
77 {"digging", AC_DIGGING},
78 {"interaction", AC_INTERACTION},
79 {"movement", AC_MOVEMENT},
80 {NULL, 0}
81};
82
88
90{
91 std::string path;
92 std::string sha1_digest; // base64-encoded
93 // true = not announced in TOCLIENT_ANNOUNCE_MEDIA (at player join)
95 // does what it says. used by some cases of dynamic media.
97
98 MediaInfo(std::string_view path_ = "",
99 std::string_view sha1_digest_ = ""):
100 path(path_),
101 sha1_digest(sha1_digest_),
102 no_announce(false),
103 delete_at_shutdown(false)
104 {
105 }
106};
107
108// Combines the pure sound (SoundSpec) with positional information
110{
112
113 float gain = 1.0f; // for amplification of the base sound
114 float max_hear_distance = 32 * BS;
116 u16 object = 0;
117 std::string to_player;
118 std::string exclude_player;
119
120 v3f getPos(ServerEnvironment *env, bool *pos_exists) const;
121
123
124 std::unordered_set<session_t> clients; // peer ids
125};
126
129 std::string label;
130 u16 size = 0;
131 std::string texture;
132 u16 scale = 1;
133};
134
135// structure for everything getClientInfo returns, for convenience
145
147 ModIPCStore() = default;
148 ~ModIPCStore();
149
151 std::shared_mutex mutex;
153 std::condition_variable_any condvar;
159 std::unordered_map<std::string, std::unique_ptr<PackedValue>> map;
160
162 inline void signal() { condvar.notify_all(); }
163};
164
166 public IGameDef
167{
168public:
169 /*
170 NOTE: Every public method should be thread-safe
171 */
172
173 Server(
174 const std::string &path_world,
175 const SubgameSpec &gamespec,
176 bool simple_singleplayer_mode,
177 Address bind_addr,
178 bool dedicated,
179 ChatInterface *iface = nullptr,
180 std::string *shutdown_errmsg = nullptr
181 );
182 ~Server();
184
185 void start();
186 void stop();
187 // Actual processing is done in another thread.
188 // This just checks if there was an error in that thread.
189 void step();
190
191 // This is run by ServerThread and does the actual processing
192 void AsyncRunStep(float dtime, bool initial_step = false);
195 void Receive(float min_time);
196 void yieldToOtherThreads(float dtime);
197
198 // Full player initialization after they processed all static media
199 // This is a helper function for TOSERVER_CLIENT_READY
201
202 /*
203 * Command Handlers
204 */
205
206 void handleCommand(NetworkPacket* pkt);
207
233
234 void ProcessData(NetworkPacket *pkt);
235
236 void Send(NetworkPacket *pkt);
237 void Send(session_t peer_id, NetworkPacket *pkt);
238
239 // Helper for handleCommand_PlayerPos and handleCommand_Interact
240 void process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao,
241 NetworkPacket *pkt);
242
243 // Both setter and getter need no envlock,
244 // can be called freely from threads
245 void setTimeOfDay(u32 time);
246
247 /*
248 Shall be called with the environment locked.
249 This is accessed by the map, which is inside the environment,
250 so it shouldn't be a problem.
251 */
252 void onMapEditEvent(const MapEditEvent &event);
253
254 // Connection must be locked when called
255 std::string getStatusString();
256 inline double getUptime() const { return m_uptime_counter->get(); }
257
258 // read shutdown state
259 inline bool isShutdownRequested() const { return m_shutdown_state.is_requested; }
260
261 // request server to shutdown
262 void requestShutdown(const std::string &msg, bool reconnect, float delay = 0.0f);
263
264 // Returns -1 if failed, sound handle on success
265 // Envlock
266 s32 playSound(ServerPlayingSound &params, bool ephemeral=false);
267 void stopSound(s32 handle);
268 void fadeSound(s32 handle, float step, float gain);
269
270 // Envlock
271 std::set<std::string> getPlayerEffectivePrivs(const std::string &name);
272 bool checkPriv(const std::string &name, const std::string &priv);
273 void reportPrivsModified(const std::string &name=""); // ""=all
274 void reportInventoryFormspecModified(const std::string &name);
275 void reportFormspecPrependModified(const std::string &name);
276
277 void setIpBanned(const std::string &ip, const std::string &name);
278 void unsetIpBanned(const std::string &ip_or_name);
279 std::string getBanDescription(const std::string &ip_or_name);
280 bool denyIfBanned(session_t peer_id);
281
282 void notifyPlayer(const char *name, const std::wstring &msg);
283 void notifyPlayers(const std::wstring &msg);
284
285 void spawnParticle(const std::string &playername,
286 const ParticleParameters &p);
287
289 ServerActiveObject *attached, const std::string &playername);
290
291 void deleteParticleSpawner(const std::string &playername, u32 id);
292
294 std::string filename;
295 std::optional<std::string> filepath;
296 std::optional<std::string_view> data;
297 u32 token;
298 std::string to_player;
299 bool ephemeral = false;
300 };
301 bool dynamicAddMedia(const DynamicMediaArgs &args);
302
304 void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id);
305
306 // Envlock and conlock should be locked when using scriptapi
307 inline ServerScripting *getScriptIface() { return m_script.get(); }
308
309 // actions: time-reversed list
310 // Return value: success/failure
311 bool rollbackRevertActions(const std::list<RollbackAction> &actions,
312 std::list<std::string> *log);
313
314 // IGameDef interface
315 // Under envlock
317 virtual const NodeDefManager* getNodeDefManager();
319 virtual u16 allocateUnknownNodeId(const std::string &name);
321 virtual EmergeManager *getEmergeManager() { return m_emerge.get(); }
323
327
328 // Not under envlock
329 virtual const std::vector<ModSpec> &getMods() const;
330 virtual const ModSpec* getModSpec(const std::string &modname) const;
331 virtual const SubgameSpec* getGameSpec() const { return &m_gamespec; }
332 static std::string getBuiltinLuaPath();
333 virtual std::string getWorldPath() const { return m_path_world; }
334 virtual std::string getModDataPath() const { return m_path_mod_data; }
335 virtual ModIPCStore *getModIPCStore() { return &m_ipcstore; }
336
337 inline bool isSingleplayer() const
339
341 float steplen;
342 bool pause;
343 };
344
345 void setStepSettings(StepSettings spdata) { m_step_settings.store(spdata); }
347
348 void setAsyncFatalError(const std::string &error);
349 inline void setAsyncFatalError(const LuaError &e)
350 {
351 setAsyncFatalError(std::string("Lua: ") + e.what());
352 }
353
354 // Not thread-safe.
355 void addShutdownError(const ModError &e);
356
357 bool showFormspec(const char *name, const std::string &formspec, const std::string &formname);
358 Map & getMap() { return m_env->getMap(); }
361
362 u32 hudAdd(RemotePlayer *player, HudElement *element);
363 bool hudRemove(RemotePlayer *player, u32 id);
364 bool hudChange(RemotePlayer *player, u32 id, HudElementStat stat, void *value);
365 bool hudSetFlags(RemotePlayer *player, u32 flags, u32 mask);
366 bool hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount);
367 void hudSetHotbarImage(RemotePlayer *player, const std::string &name);
368 void hudSetHotbarSelectedImage(RemotePlayer *player, const std::string &name);
369
371
372 void setLocalPlayerAnimations(RemotePlayer *player, v2f animation_frames[4],
373 f32 frame_speed);
374 void setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third, v3f third_front);
375
376 void setSky(RemotePlayer *player, const SkyboxParams &params);
377 void setSun(RemotePlayer *player, const SunParams &params);
378 void setMoon(RemotePlayer *player, const MoonParams &params);
379 void setStars(RemotePlayer *player, const StarParams &params);
380
381 void setClouds(RemotePlayer *player, const CloudParams &params);
382
383 void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness);
384
385 void setLighting(RemotePlayer *player, const Lighting &lighting);
386
387 /* con::PeerHandler implementation. */
388 void peerAdded(con::IPeer *peer);
389 void deletingPeer(con::IPeer *peer, bool timeout);
390
391 void DenySudoAccess(session_t peer_id);
392 void DenyAccess(session_t peer_id, AccessDeniedCode reason,
393 std::string_view custom_reason = "", bool reconnect = false);
395 const std::string &str_reason, bool reconnect);
396 void acceptAuth(session_t peer_id, bool forSudoMode);
397 void DisconnectPeer(session_t peer_id);
398 bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval);
399 bool getClientInfo(session_t peer_id, ClientInfo &ret);
401
402 void printToConsoleOnly(const std::string &text);
403
404 void HandlePlayerHPChange(PlayerSAO *sao, const PlayerHPChangeReason &reason);
405 void SendPlayerHP(PlayerSAO *sao, bool effect);
406 void SendPlayerBreath(PlayerSAO *sao);
407 void SendInventory(RemotePlayer *player, bool incremental);
408 void SendMovePlayer(PlayerSAO *sao);
409 void SendMovePlayerRel(session_t peer_id, const v3f &added_pos);
410 void SendPlayerSpeed(session_t peer_id, const v3f &added_vel);
411 void SendPlayerFov(session_t peer_id);
412
413 void SendMinimapModes(session_t peer_id,
414 std::vector<MinimapMode> &modes,
415 size_t wanted_mode);
416
417 void sendDetachedInventories(session_t peer_id, bool incremental);
418
419 bool joinModChannel(const std::string &channel);
420 bool leaveModChannel(const std::string &channel);
421 bool sendModChannelMessage(const std::string &channel, const std::string &message);
422 ModChannel *getModChannel(const std::string &channel);
423
424 // Send block to specific player only
425 bool SendBlock(session_t peer_id, const v3s16 &blockpos);
426
427 // Get or load translations for a language
428 Translations *getTranslationLanguage(const std::string &lang_code);
429
430 // Returns all media files the server knows about
431 // map key = binary sha1, map value = file path
432 std::unordered_map<std::string, std::string> getMediaList();
433
434 static ModStorageDatabase *openModStorageDatabase(const std::string &world_path);
435
436 static ModStorageDatabase *openModStorageDatabase(const std::string &backend,
437 const std::string &world_path, const Settings &world_mt);
438
439 static bool migrateModStorageDatabase(const GameParams &game_params,
440 const Settings &cmd_args);
441
442 static u16 getProtocolVersionMin();
443 static u16 getProtocolVersionMax();
444
445 // Lua files registered for init of async env, pair of modname + path
446 std::vector<std::pair<std::string, std::string>> m_async_init_files;
447 // Identical but for mapgen env
448 std::vector<std::pair<std::string, std::string>> m_mapgen_init_files;
449
450 // Data transferred into other Lua envs at init time
451 std::unique_ptr<PackedValue> m_lua_globals_data;
452
453 // Bind address
455
456 // Public helper for taking the envlock in a scope
458 public:
460
461 private:
462 std::lock_guard<ordered_mutex> m_lock;
463 };
464
465protected:
466 /* Do not add more members here, this is only required to make unit tests work. */
467
468 // Scripting
469 // Envlock and conlock should be locked when using Lua
470 std::unique_ptr<ServerScripting> m_script;
471
472 // Mods
473 std::unique_ptr<ServerModManager> m_modmgr;
474
475private:
476 friend class EmergeThread;
477 friend class RemoteClient;
478
479 // unittest classes
481 friend class TestMoveAction;
482
485 public:
486 bool is_requested = false;
487 bool should_reconnect = false;
488 std::string message;
489
490 void reset();
491 void trigger(float delay, const std::string &msg, bool reconnect);
492 void tick(float dtime, Server *server);
493 std::wstring getShutdownTimerMessage() const;
494 bool isTimerRunning() const { return m_timer > 0.0f; }
495 private:
496 float m_timer = 0.0f;
497 };
498
500 std::string filename; // only set if media entry and file is to be deleted
502 std::unordered_set<session_t> waiting_players;
503 };
504
505 // The standard library does not implement std::hash for pairs so we have this:
506 struct SBCHash {
507 size_t operator() (const std::pair<v3s16, u16> &p) const {
508 return std::hash<v3s16>()(p.first) ^ p.second;
509 }
510 };
511
512 typedef std::unordered_map<std::pair<v3s16, u16>, std::string, SBCHash> SerializedBlockCache;
513
514 void init();
515
516 void SendMovement(session_t peer_id);
517 void SendHP(session_t peer_id, u16 hp, bool effect);
518 void SendBreath(session_t peer_id, u16 breath);
519 void SendAccessDenied(session_t peer_id, AccessDeniedCode reason,
520 std::string_view custom_reason, bool reconnect = false);
521 void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version);
522 void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef,
523 u16 protocol_version);
524
525
526 virtual void SendChatMessage(session_t peer_id, const ChatMessage &message);
527 void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed);
528
529 void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4],
530 f32 animation_speed);
531 void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front);
532 void SendPlayerPrivileges(session_t peer_id);
535 void SendShowFormspecMessage(session_t peer_id, const std::string &formspec,
536 const std::string &formname);
537 void SendHUDAdd(session_t peer_id, u32 id, HudElement *form);
538 void SendHUDRemove(session_t peer_id, u32 id);
539 void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value);
540 void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask);
541 void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value);
542 void SendSetSky(session_t peer_id, const SkyboxParams &params);
543 void SendSetSun(session_t peer_id, const SunParams &params);
544 void SendSetMoon(session_t peer_id, const MoonParams &params);
545 void SendSetStars(session_t peer_id, const StarParams &params);
546 void SendCloudParams(session_t peer_id, const CloudParams &params);
547 void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio);
548 void SendSetLighting(session_t peer_id, const Lighting &lighting);
549 void broadcastModChannelMessage(const std::string &channel,
550 const std::string &message, session_t from_peer);
551
552 /*
553 Send a node removal/addition event to all clients except ignore_id.
554 Additionally, if far_players!=NULL, players further away than
555 far_d_nodes are ignored and their peer_ids are added to far_players
556 */
557 // Envlock and conlock should be locked when calling these
558 void sendRemoveNode(v3s16 p, std::unordered_set<u16> *far_players = nullptr,
559 float far_d_nodes = 100);
560 void sendAddNode(v3s16 p, MapNode n,
561 std::unordered_set<u16> *far_players = nullptr,
562 float far_d_nodes = 100, bool remove_metadata = true);
563 void sendNodeChangePkt(NetworkPacket &pkt, v3s16 block_pos,
564 v3f p, float far_d_nodes, std::unordered_set<u16> *far_players);
565
566 void sendMetadataChanged(const std::unordered_set<v3s16> &positions,
567 float far_d_nodes = 100);
568
569 // Environment and Connection must be locked when called
570 // `cache` may only be very short lived! (invalidation not handeled)
571 void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver,
572 u16 net_proto_version, SerializedBlockCache *cache = nullptr);
573
574 // Sends blocks to clients (locks env and con on its own)
575 void SendBlocks(float dtime);
576
577 bool addMediaFile(const std::string &filename, const std::string &filepath,
578 std::string *filedata = nullptr, std::string *digest = nullptr);
579 void fillMediaCache();
580 void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code);
581 void sendRequestedMedia(session_t peer_id,
582 const std::unordered_set<std::string> &tosend);
583 void stepPendingDynMediaCallbacks(float dtime);
584
585 // Adds a ParticleSpawner on peer with peer_id (PEER_ID_INEXISTENT == all)
586 void SendAddParticleSpawner(session_t peer_id, u16 protocol_version,
587 const ParticleSpawnerParameters &p, u16 attached_id, u32 id);
588
589 void SendDeleteParticleSpawner(session_t peer_id, u32 id);
590
591 // Spawns particle on peer with peer_id (PEER_ID_INEXISTENT == all)
592 void SendSpawnParticle(session_t peer_id, u16 protocol_version,
593 const ParticleParameters &p);
594
596 void SendActiveObjectMessages(session_t peer_id, const std::string &datas,
597 bool reliable = true);
599
600 /*
601 Something random
602 */
603
604 void HandlePlayerDeath(PlayerSAO* sao, const PlayerHPChangeReason &reason);
605 void DeleteClient(session_t peer_id, ClientDeletionReason reason);
606 void UpdateCrafting(RemotePlayer *player);
607 bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what);
608
610
611 // This returns the answer to the sender of wmessage, or "" if there is none
612 std::wstring handleChat(const std::string &name, std::wstring wmessage_input,
613 bool check_shout_priv = false, RemotePlayer *player = nullptr);
614 void handleAdminChat(const ChatEventChat *evt);
615
616 // When called, connection mutex should be locked
619
620 // When called, environment mutex should be locked
621 std::string getPlayerName(session_t peer_id);
623
624 /*
625 Get a player from memory or creates one.
626 If player is already connected, return NULL
627 Does not verify/modify auth info and password.
628
629 Call with env and con locked.
630 */
631 std::unique_ptr<PlayerSAO> emergePlayer(const char *name, session_t peer_id,
632 u16 proto_version);
633
634 /*
635 Variables
636 */
637
638 // Environment mutex (envlock)
640
641 // World directory
642 std::string m_path_world;
643 std::string m_path_mod_data;
644 // Subgame specification
646 // If true, do not allow multiple players and hide some multiplayer
647 // functionality
650 // For "dedicated" server list flag
652
653 // Game settings layer
655
656 // Thread can set; step() will throw as ServerError
658
659 // Some timers
665 float m_savemap_timer = 0.0f;
668
669 // Environment
671
672 // server connection
673 std::shared_ptr<con::IConnection> m_con;
674
675 // Ban checking
677
678 // Rollback manager (behind m_env_mutex)
680
681 // Emerge manager
682 std::unique_ptr<EmergeManager> m_emerge;
683
684 // Item definition manager
686
687 // Node definition manager
689
690 // Craft definition manager
692
693 std::unordered_map<std::string, Translations> server_translations;
694
696
697 /*
698 Threads
699 */
700 // Set by Game
701 std::atomic<StepSettings> m_step_settings{{0.1f, false}};
702
703 // The server mainly operates in this thread
705
706 /*
707 Client interface
708 */
710
711 std::unordered_map<session_t, std::string> m_formspec_state_data;
712
713 /*
714 Random stuff
715 */
716
718
720 std::string m_admin_nick;
721
722 // If a mod error occurs while shutting down, the error message will be
723 // written into this.
724 std::string *const m_shutdown_errmsg;
725
726 /*
727 Map edit event queue. Automatically receives all map edits.
728 The constructor of this class registers us to receive them through
729 onMapEditEvent
730
731 NOTE: Should these be moved to actually be members of
732 ServerEnvironment?
733 */
734
735 /*
736 Queue of map edits from the environment for sending to the clients
737 This is behind m_env_mutex
738 */
739 std::queue<MapEditEvent*> m_unsent_map_edit_queue;
740 /*
741 If a non-empty area, map edit events contained within are left
742 unsent. Done at map generation time to speed up editing of the
743 generated area, as it will be sent anyway.
744 This is behind m_env_mutex
745 */
747
748 // media files known to server
749 std::unordered_map<std::string, MediaInfo> m_media;
750
751 // pending dynamic media callbacks, clients inform the server when they have a file fetched
752 std::unordered_map<u32, PendingDynamicMediaCallback> m_pending_dyn_media;
754
755 /*
756 Sounds
757 */
758 std::unordered_map<s32, ServerPlayingSound> m_playing_sounds;
759 s32 m_playing_sounds_id_last_used = 0; // positive values only
760 s32 nextSoundId();
761
764
765 // CSM restrictions byteflag
768
769 // ModChannel manager
770 std::unique_ptr<ModChannelMgr> m_modchannel_mgr;
771
772 // Inventory manager
773 std::unique_ptr<ServerInventoryManager> m_inventory_mgr;
774
775 // Global server metrics backend
776 std::unique_ptr<MetricsBackend> m_metrics_backend;
777
778 // Server metrics
783 MetricCounterPtr m_aom_buffer_counter[2]; // [0] = rel, [1] = unrel
787};
788
789/*
790 Runs a simple dedicated server loop.
791
792 Shuts down when kill is set to true.
793*/
794void dedicated_server_loop(Server &server, bool &kill);
Definition address.h:28
Definition ban.h:12
virtual const char * what() const noexcept
Definition exceptions.h:17
Definition chat_interface.h:18
Definition clientiface.h:442
Definition emerge.h:116
Definition emerge_internal.h:25
Definition craftdef.h:390
Definition gamedef.h:36
Definition itemdef.h:129
Definition rollback_interface.h:97
Definition craftdef.h:419
Definition itemdef.h:172
Definition numeric.h:347
Definition inventory.h:314
Definition c_types.h:33
Definition mapblock.h:58
Definition map.h:94
Definition map.h:101
virtual double get() const =0
Definition modchannels.h:52
Definition modchannels.h:23
Definition exceptions.h:85
Definition database.h:74
Definition thread.h:16
Definition networkpacket.h:14
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:530
Definition player_sao.h:56
Definition clientiface.h:213
Definition remoteplayer.h:26
Definition serveractiveobject.h:41
Definition serverenvironment.h:219
Map & getMap()
Definition serverenvironment.cpp:578
Definition serverinventorymgr.h:17
Manages server mods.
Definition mods.h:18
Definition scripting_server.h:33
Definition server.cpp:86
Definition server.h:457
std::lock_guard< ordered_mutex > m_lock
Definition server.h:462
EnvAutoLock(Server *server)
Definition server.h:459
Definition server.h:167
void kickAllPlayers(AccessDeniedCode reason, const std::string &str_reason, bool reconnect)
Definition server.cpp:2893
void setIpBanned(const std::string &ip, const std::string &name)
Definition server.cpp:3275
void sendMetadataChanged(const std::unordered_set< v3s16 > &positions, float far_d_nodes=100)
Definition server.cpp:2366
void DisconnectPeer(session_t peer_id)
Definition server.cpp:2902
IRollbackManager * m_rollback
Definition server.h:679
void stop()
Definition server.cpp:598
void handleCommand_FirstSrp(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1447
float m_liquid_transform_timer
Definition server.h:661
void setStars(RemotePlayer *player, const StarParams &params)
Definition server.cpp:3490
void setSun(RemotePlayer *player, const SunParams &params)
Definition server.cpp:3476
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3165
Translations * getTranslationLanguage(const std::string &lang_code)
Definition server.cpp:4170
void handleCommand_PlayerItem(NetworkPacket *pkt)
Definition serverpackethandler.cpp:811
std::unordered_map< session_t, std::string > m_formspec_state_data
Definition server.h:711
void SendPlayerFormspecPrepend(session_t peer_id)
Definition server.cpp:2066
bool rollbackRevertActions(const std::list< RollbackAction > &actions, std::list< std::string > *log)
Definition server.cpp:3770
std::string m_admin_nick
Definition server.h:720
void init()
Definition server.cpp:432
u16 m_max_chatmessage_length
Definition server.h:649
void requestShutdown(const std::string &msg, bool reconnect, float delay=0.0f)
Definition server.cpp:3965
void setStepSettings(StepSettings spdata)
Definition server.h:345
void SendShowFormspecMessage(session_t peer_id, const std::string &formspec, const std::string &formname)
Definition server.cpp:1572
void SendPlayerSpeed(session_t peer_id, const v3f &added_vel)
Definition server.cpp:2179
Address getPeerAddress(session_t peer_id)
Definition server.cpp:3442
void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness)
Definition server.cpp:3504
void SendPlayerInventoryFormspec(session_t peer_id)
Definition server.cpp:2054
void HandlePlayerDeath(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:2866
static u16 getProtocolVersionMax()
Definition server.cpp:4328
void SendMovePlayer(PlayerSAO *sao)
Definition server.cpp:1968
void DenySudoAccess(session_t peer_id)
Definition server.cpp:2878
void SendPlayerBreath(PlayerSAO *sao)
Definition server.cpp:1960
void SendAccessDenied(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason, bool reconnect=false)
Definition server.cpp:1470
IWritableCraftDefManager * m_craftdef
Definition server.h:691
ModStorageDatabase * m_mod_storage_database
Definition server.h:762
const ClientDynamicInfo * getClientDynamicInfo(session_t peer_id)
Definition server.cpp:1387
void spawnParticle(const std::string &playername, const ParticleParameters &p)
Definition server.cpp:3524
std::unique_ptr< PlayerSAO > emergePlayer(const char *name, session_t peer_id, u16 proto_version)
Definition server.cpp:3997
void step()
Definition server.cpp:609
virtual IItemDefManager * getItemDefManager()
Definition server.cpp:3814
MutexedVariable< std::string > m_async_fatal_error
Definition server.h:657
static ModStorageDatabase * openModStorageDatabase(const std::string &world_path)
Definition server.cpp:4207
void SendSetSky(session_t peer_id, const SkyboxParams &params)
Definition server.cpp:1843
void SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void *value)
Definition server.cpp:1796
std::unordered_map< std::string, MediaInfo > m_media
Definition server.h:749
void SendHP(session_t peer_id, u16 hp, bool effect)
Definition server.cpp:1456
void SendDeleteParticleSpawner(session_t peer_id, u32 id)
Definition server.cpp:1764
u64 m_csm_restriction_flags
Definition server.h:766
bool checkInteractDistance(RemotePlayer *player, const f32 d, const std::string &what)
Definition serverpackethandler.cpp:852
void reportPrivsModified(const std::string &name="")
Definition server.cpp:3239
void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id)
Definition server.cpp:2821
void handleCommand_Null(NetworkPacket *pkt)
Definition server.h:208
void handleCommand_SrpBytesA(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1536
void fadeSound(s32 handle, float step, float gain)
Definition server.cpp:2292
std::queue< MapEditEvent * > m_unsent_map_edit_queue
Definition server.h:739
void hudSetHotbarSelectedImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3430
void printToConsoleOnly(const std::string &text)
Definition server.cpp:1398
void setTimeOfDay(u32 time)
Definition server.cpp:1327
void DeleteClient(session_t peer_id, ClientDeletionReason reason)
Definition server.cpp:2933
void ProcessData(NetworkPacket *pkt)
Definition server.cpp:1267
bool denyIfBanned(session_t peer_id)
Definition server.cpp:3295
void setAsyncFatalError(const std::string &error)
Definition server.cpp:3864
s32 playSound(ServerPlayingSound &params, bool ephemeral=false)
Definition server.cpp:2203
BanManager * m_banmanager
Definition server.h:676
void setSky(RemotePlayer *player, const SkyboxParams &params)
Definition server.cpp:3469
bool m_dedicated
Definition server.h:651
void SendSpawnParticle(session_t peer_id, u16 protocol_version, const ParticleParameters &p)
Definition server.cpp:1597
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:2534
ModChannel * getModChannel(const std::string &channel)
Definition server.cpp:4130
void sendNodeChangePkt(NetworkPacket &pkt, v3s16 block_pos, v3f p, float far_d_nodes, std::unordered_set< u16 > *far_players)
Definition server.cpp:2337
virtual ModIPCStore * getModIPCStore()
Definition server.h:335
void handleCommand_InventoryAction(NetworkPacket *pkt)
Definition serverpackethandler.cpp:565
std::unique_ptr< EmergeManager > m_emerge
Definition server.h:682
void handleCommand_Interact(NetworkPacket *pkt)
Definition serverpackethandler.cpp:880
void SendMovePlayerRel(session_t peer_id, const v3f &added_pos)
Definition server.cpp:1988
virtual ICraftDefManager * getCraftDefManager()
Definition server.cpp:3824
v3f findSpawnPos()
Definition server.cpp:3889
VoxelArea m_ignore_map_edit_events_area
Definition server.h:746
std::set< std::string > getPlayerEffectivePrivs(const std::string &name)
Definition server.cpp:3226
s32 nextSoundId()
Definition server.cpp:2186
bool SendBlock(session_t peer_id, const v3s16 &blockpos)
Definition server.cpp:2518
virtual const ModSpec * getModSpec(const std::string &modname) const
Definition server.cpp:3854
IntervalLimiter m_map_timer_and_unload_interval
Definition server.h:666
void handleCommand_PlayerPos(NetworkPacket *pkt)
Definition serverpackethandler.cpp:504
void SendHUDSetFlags(session_t peer_id, u32 flags, u32 mask)
Definition server.cpp:1827
~Server()
Definition server.cpp:335
std::unique_ptr< ServerModManager > m_modmgr
Definition server.h:473
ServerEnvironment & getEnv()
Definition server.h:359
void sendDetachedInventories(session_t peer_id, bool incremental)
Definition server.cpp:2847
std::unordered_map< std::string, std::string > getMediaList()
Definition server.cpp:4194
PlayerSAO * getPlayerSAO(session_t peer_id)
Definition server.cpp:3178
void handleCommand(NetworkPacket *pkt)
Definition server.cpp:1261
void SendPlayerPrivileges(session_t peer_id)
Definition server.cpp:2035
std::wstring handleChat(const std::string &name, std::wstring wmessage_input, bool check_shout_priv=false, RemotePlayer *player=nullptr)
Definition server.cpp:3055
MetricGaugePtr m_lag_gauge
Definition server.h:782
void notifyPlayer(const char *name, const std::wstring &msg)
Definition server.cpp:3311
void setMoon(RemotePlayer *player, const MoonParams &params)
Definition server.cpp:3483
ClientInterface m_clients
Definition server.h:709
void stopSound(s32 handle)
Definition server.cpp:2273
float m_time_of_day_send_timer
Definition server.h:660
void handleCommand_SrpBytesM(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1643
void handleCommand_InventoryFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1384
bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval)
Definition server.cpp:1357
virtual const SubgameSpec * getGameSpec() const
Definition server.h:331
MetricGaugePtr m_player_gauge
Definition server.h:780
void addShutdownError(const ModError &e)
Definition server.cpp:3873
float m_mod_storage_save_timer
Definition server.h:763
void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio)
Definition server.cpp:1914
bool sendModChannelMessage(const std::string &channel, const std::string &message)
Definition server.cpp:4121
std::string getBanDescription(const std::string &ip_or_name)
Definition server.cpp:3290
std::unordered_map< s32, ServerPlayingSound > m_playing_sounds
Definition server.h:758
virtual const NodeDefManager * getNodeDefManager()
Definition server.cpp:3819
virtual std::string getModDataPath() const
Definition server.h:334
void onMapEditEvent(const MapEditEvent &event)
Definition server.cpp:1333
MetricCounterPtr m_packet_recv_processed_counter
Definition server.h:785
float m_masterserver_timer
Definition server.h:663
void SendSetSun(session_t peer_id, const SunParams &params)
Definition server.cpp:1877
void setLighting(RemotePlayer *player, const Lighting &lighting)
Definition server.cpp:3512
void SendSetMoon(session_t peer_id, const MoonParams &params)
Definition server.cpp:1886
void UpdateCrafting(RemotePlayer *player)
Definition server.cpp:3011
bool checkPriv(const std::string &name, const std::string &priv)
Definition server.cpp:3233
void handleCommand_HaveMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1807
bool leaveModChannel(const std::string &channel)
Definition server.cpp:4116
NodeDefManager * getWritableNodeDefManager()
Definition server.cpp:3839
ShutdownState m_shutdown_state
Definition server.h:717
std::atomic< StepSettings > m_step_settings
Definition server.h:701
MetricCounterPtr m_uptime_counter
Definition server.h:779
IWritableItemDefManager * getWritableItemDefManager()
Definition server.cpp:3834
void handleCommand_ModChannelLeave(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1754
void handleCommand_ClientReady(NetworkPacket *pkt)
Definition serverpackethandler.cpp:359
void SendPlayerHP(PlayerSAO *sao, bool effect)
Definition server.cpp:1451
void handleAdminChat(const ChatEventChat *evt)
Definition server.cpp:3144
void SendItemDef(session_t peer_id, IItemDefManager *itemdef, u16 protocol_version)
Definition server.cpp:1480
RemoteClient * getClient(session_t peer_id, ClientState state_min=CS_Active)
Definition server.cpp:3157
void SendSetLighting(session_t peer_id, const Lighting &lighting)
Definition server.cpp:1925
IRollbackManager * getRollbackManager()
Definition server.h:320
void SendInventory(RemotePlayer *player, bool incremental)
Definition server.cpp:1531
bool hudSetFlags(RemotePlayer *player, u32 flags, u32 mask)
Definition server.cpp:3379
std::vector< std::pair< std::string, std::string > > m_mapgen_init_files
Definition server.h:448
float m_step_pending_dyn_media_timer
Definition server.h:753
void start()
Definition server.cpp:559
MetricCounterPtr m_aom_buffer_counter[2]
Definition server.h:783
MetricCounterPtr m_packet_recv_counter
Definition server.h:784
IWritableCraftDefManager * getWritableCraftDefManager()
Definition server.cpp:3844
void SendHUDAdd(session_t peer_id, u32 id, HudElement *form)
Definition server.cpp:1777
std::unique_ptr< ModChannelMgr > m_modchannel_mgr
Definition server.h:770
bool isShutdownRequested() const
Definition server.h:259
std::unique_ptr< ServerInventoryManager > m_inventory_mgr
Definition server.h:773
void deletingPeer(con::IPeer *peer, bool timeout)
Definition server.cpp:1348
virtual const std::vector< ModSpec > & getMods() const
Definition server.cpp:3849
void sendRemoveNode(v3s16 p, std::unordered_set< u16 > *far_players=nullptr, float far_d_nodes=100)
Definition server.cpp:2313
void SendCloudParams(session_t peer_id, const CloudParams &params)
Definition server.cpp:1906
virtual u16 allocateUnknownNodeId(const std::string &name)
Definition server.cpp:3829
bool showFormspec(const char *name, const std::string &formspec, const std::string &formname)
Definition server.cpp:3328
bool hudRemove(RemotePlayer *player, u32 id)
Definition server.cpp:3355
void SendHUDSetParam(session_t peer_id, u16 param, std::string_view value)
Definition server.cpp:1836
ordered_mutex m_env_mutex
Definition server.h:639
void broadcastModChannelMessage(const std::string &channel, const std::string &message, session_t from_peer)
Definition server.cpp:4135
void unsetIpBanned(const std::string &ip_or_name)
Definition server.cpp:3285
std::unique_ptr< ServerScripting > m_script
Definition server.h:470
void sendRequestedMedia(session_t peer_id, const std::unordered_set< std::string > &tosend)
Definition server.cpp:2680
u32 hudAdd(RemotePlayer *player, HudElement *element)
Definition server.cpp:3343
MetricCounterPtr m_map_edit_event_counter
Definition server.h:786
void SendLocalPlayerAnimations(session_t peer_id, v2f animation_frames[4], f32 animation_speed)
Definition server.cpp:2009
float m_savemap_timer
Definition server.h:665
float m_liquid_transform_every
Definition server.h:662
void SendTimeOfDay(session_t peer_id, u16 time, f32 time_speed)
Definition server.cpp:1947
void process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, NetworkPacket *pkt)
Definition serverpackethandler.cpp:437
virtual ModStorageDatabase * getModStorageDatabase()
Definition server.h:322
Address m_bind_addr
Definition server.h:454
void DenyAccess(session_t peer_id, AccessDeniedCode reason, std::string_view custom_reason="", bool reconnect=false)
Definition server.cpp:2885
bool getClientInfo(session_t peer_id, ClientInfo &ret)
Definition server.cpp:1363
void SendBlockNoLock(session_t peer_id, MapBlock *block, u8 ver, u16 net_proto_version, SerializedBlockCache *cache=nullptr)
Definition server.cpp:2418
void SendHUDRemove(session_t peer_id, u32 id)
Definition server.cpp:1789
static std::string getBuiltinLuaPath()
Definition server.cpp:3859
void deleteParticleSpawner(const std::string &playername, u32 id)
Definition server.cpp:3573
void SendEyeOffset(session_t peer_id, v3f first, v3f third, v3f third_front)
Definition server.cpp:2028
IWritableItemDefManager * m_itemdef
Definition server.h:685
void handleCommand_ModChannelMsg(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1778
ServerScripting * getScriptIface()
Definition server.h:307
void handleCommand_Init2(NetworkPacket *pkt)
Definition serverpackethandler.cpp:272
void yieldToOtherThreads(float dtime)
Definition server.cpp:1132
void handleCommand_GotBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:406
std::unique_ptr< MetricsBackend > m_metrics_backend
Definition server.h:776
std::unordered_map< u32, PendingDynamicMediaCallback > m_pending_dyn_media
Definition server.h:752
void handleCommand_Init(NetworkPacket *pkt)
Definition serverpackethandler.cpp:39
IntervalLimiter m_max_lag_decrease
Definition server.h:667
void acceptAuth(session_t peer_id, bool forSudoMode)
Definition server.cpp:2908
void reportFormspecPrependModified(const std::string &name)
Definition server.cpp:3267
void handleCommand_DeletedBlocks(NetworkPacket *pkt)
Definition serverpackethandler.cpp:535
void SendMovement(session_t peer_id)
Definition server.cpp:1419
void handleCommand_Damage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:768
static bool migrateModStorageDatabase(const GameParams &game_params, const Settings &cmd_args)
Definition server.cpp:4248
void handleCommand_RemovedSounds(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1287
void handleCommand_Deprecated(NetworkPacket *pkt)
Definition serverpackethandler.cpp:33
Map & getMap()
Definition server.h:358
void handleCommand_ChatMessage(NetworkPacket *pkt)
Definition serverpackethandler.cpp:743
void handleChatInterfaceEvent(ChatEvent *evt)
Definition server.cpp:3036
ServerThread * m_thread
Definition server.h:704
ServerInventoryManager * getInventoryMgr() const
Definition server.h:303
void SendActiveObjectMessages(session_t peer_id, const std::string &datas, bool reliable=true)
Definition server.cpp:2159
double getUptime() const
Definition server.h:256
void handleCommand_NodeMetaFields(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1332
std::unique_ptr< PackedValue > m_lua_globals_data
Definition server.h:451
PlayerSAO * StageTwoClientInit(session_t peer_id)
Definition server.cpp:1178
void SendAddParticleSpawner(session_t peer_id, u16 protocol_version, const ParticleSpawnerParameters &p, u16 attached_id, u32 id)
Definition server.cpp:1640
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:2325
std::vector< std::pair< std::string, std::string > > m_async_init_files
Definition server.h:446
void SendCSMRestrictionFlags(session_t peer_id)
Definition server.cpp:2171
void setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third, v3f third_front)
Definition server.cpp:3456
void peerAdded(con::IPeer *peer)
Definition server.cpp:1341
void reportInventoryFormspecModified(const std::string &name)
Definition server.cpp:3259
void SendSetStars(session_t peer_id, const StarParams &params)
Definition server.cpp:1895
virtual void SendChatMessage(session_t peer_id, const ChatMessage &message)
Definition server.cpp:1553
std::string getStatusString()
Definition server.cpp:3186
void SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersao)
Definition server.cpp:2077
void AsyncRunStep(float dtime, bool initial_step=false)
Definition server.cpp:623
MetricGaugePtr m_timeofday_gauge
Definition server.h:781
Settings * m_game_settings
Definition server.h:654
SubgameSpec m_gamespec
Definition server.h:645
bool joinModChannel(const std::string &channel)
Definition server.cpp:4110
std::string getPlayerName(session_t peer_id)
Definition server.cpp:3170
void hudSetHotbarImage(RemotePlayer *player, const std::string &name)
Definition server.cpp:3418
void stepPendingDynMediaCallbacks(float dtime)
Definition server.cpp:2778
std::string m_path_world
Definition server.h:642
bool isSingleplayer() const
Definition server.h:337
bool dynamicAddMedia(const DynamicMediaArgs &args)
Definition server.cpp:3610
void handleCommand_ModChannelJoin(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1729
void Send(NetworkPacket *pkt)
Definition server.cpp:1408
void handleCommand_RequestMedia(NetworkPacket *pkt)
Definition serverpackethandler.cpp:335
std::string *const m_shutdown_errmsg
Definition server.h:724
s32 m_playing_sounds_id_last_used
Definition server.h:759
u32 m_csm_restriction_noderange
Definition server.h:767
static u16 getProtocolVersionMin()
Definition server.cpp:4318
u32 addParticleSpawner(const ParticleSpawnerParameters &p, ServerActiveObject *attached, const std::string &playername)
Definition server.cpp:3544
void SendBlocks(float dtime)
Definition server.cpp:2449
void handleCommand_UpdateClientInfo(NetworkPacket *pkt)
Definition serverpackethandler.cpp:1834
void Receive(float min_time)
Receive and process all incoming packets.
Definition server.cpp:1080
void notifyPlayers(const std::wstring &msg)
Definition server.cpp:3519
std::unordered_map< std::pair< v3s16, u16 >, std::string, SBCHash > SerializedBlockCache
Definition server.h:512
bool hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount)
Definition server.cpp:3400
void SendNodeDef(session_t peer_id, const NodeDefManager *nodedef, u16 protocol_version)
Definition server.cpp:1503
StepSettings getStepSettings()
Definition server.h:346
void SendBreath(session_t peer_id, u16 breath)
Definition server.cpp:1463
std::shared_ptr< con::IConnection > m_con
Definition server.h:673
void setLocalPlayerAnimations(RemotePlayer *player, v2f animation_frames[4], f32 frame_speed)
Definition server.cpp:3448
void setClouds(RemotePlayer *player, const CloudParams &params)
Definition server.cpp:3497
void HandlePlayerHPChange(PlayerSAO *sao, const PlayerHPChangeReason &reason)
Definition server.cpp:1439
float m_emergethread_trigger_timer
Definition server.h:664
ModIPCStore m_ipcstore
Definition server.h:695
std::string m_path_mod_data
Definition server.h:643
void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code)
Definition server.cpp:2623
void setAsyncFatalError(const LuaError &e)
Definition server.h:349
void SendMinimapModes(session_t peer_id, std::vector< MinimapMode > &modes, size_t wanted_mode)
Definition server.cpp:2805
virtual EmergeManager * getEmergeManager()
Definition server.h:321
ServerEnvironment * m_env
Definition server.h:670
void fillMediaCache()
Definition server.cpp:2590
bool m_simple_singleplayer_mode
Definition server.h:648
std::unordered_map< std::string, Translations > server_translations
Definition server.h:693
virtual std::string getWorldPath() const
Definition server.h:333
ChatInterface * m_admin_chat
Definition server.h:719
NodeDefManager * m_nodedef
Definition server.h:688
bool hudChange(RemotePlayer *player, u32 id, HudElementStat stat, void *value)
Definition server.cpp:3370
void SendPlayerFov(session_t peer_id)
Definition server.cpp:1995
Definition settings.h:109
Definition test_moveaction.cpp:12
Definition test_server_shutdown_state.cpp:13
Definition translation.h:19
Definition voxel.h:44
Definition connection.h:34
Definition peerhandler.h:13
Definition ordered_mutex.h:13
ClientState
Definition clientiface.h:164
@ CS_Active
Definition clientiface.h:173
#define BS
Definition constants.h:61
HudElementStat
Definition hud.h:59
MinimapType
Definition hud.h:108
@ MINIMAP_TYPE_OFF
Definition hud.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
rtt_stat_type
Definition connection.h:16
Definition activeobjectmgr.cpp:11
AccessDeniedCode
Definition networkprotocol.h:902
@ CSM_RF_NONE
Definition networkprotocol.h:927
u16 session_t
Definition networkprotocol.h:22
ClientDeletionReason
Definition server.h:83
@ CDR_LEAVE
Definition server.h:84
@ CDR_DENY
Definition server.h:86
@ CDR_TIMEOUT
Definition server.h:85
constexpr static const FlagDesc flagdesc_anticheat[]
Definition server.h:76
@ AC_INTERACTION
Definition server.h:72
@ AC_MOVEMENT
Definition server.h:73
@ AC_DIGGING
Definition server.h:71
void dedicated_server_loop(Server &server, bool &kill)
Definition server.cpp:4051
SoundLocation
Definition sound.h:67
Definition chat_interface.h:48
Definition chat_interface.h:60
Definition chatmessage.h:20
Definition clientdynamicinfo.h:12
Definition server.h:136
u32 uptime
Definition server.h:139
u8 ser_vers
Definition server.h:140
u8 patch
Definition server.h:142
u16 prot_vers
Definition server.h:141
ClientState state
Definition server.h:137
std::string vers_string
Definition server.h:143
Address addr
Definition server.h:138
std::string lang_code
Definition server.h:143
u8 major
Definition server.h:142
u8 minor
Definition server.h:142
Definition skyparams.h:65
Definition string.h:68
Definition gameparams.h:12
Definition hud.h:84
Describes ambient light settings for a player.
Definition lighting.h:46
Definition map.h:44
Definition mapnode.h:124
Definition server.h:90
MediaInfo(std::string_view path_="", std::string_view sha1_digest_="")
Definition server.h:98
bool delete_at_shutdown
Definition server.h:96
std::string path
Definition server.h:91
std::string sha1_digest
Definition server.h:92
bool no_announce
Definition server.h:94
Definition server.h:127
u16 size
Definition server.h:130
MinimapType type
Definition server.h:128
std::string texture
Definition server.h:131
std::string label
Definition server.h:129
u16 scale
Definition server.h:132
Definition server.h:146
std::condition_variable_any condvar
Signalled on any changes to the map contents.
Definition server.h:153
std::shared_mutex mutex
RW lock for this entire structure.
Definition server.h:151
ModIPCStore()=default
~ModIPCStore()
Definition server.cpp:76
std::unordered_map< std::string, std::unique_ptr< PackedValue > > map
Map storing the data.
Definition server.h:159
void signal()
Definition server.h:162
Definition mods.h:25
Definition skyparams.h:48
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:304
Definition particles.h:315
Definition player_sao.h:230
Definition rollback_interface.h:40
Definition server.h:110
std::string to_player
Definition server.h:117
float gain
Definition server.h:113
std::unordered_set< session_t > clients
Definition server.h:124
std::string exclude_player
Definition server.h:118
SoundSpec spec
Definition server.h:122
v3f pos
Definition server.h:115
float max_hear_distance
Definition server.h:114
v3f getPos(ServerEnvironment *env, bool *pos_exists) const
Definition server.cpp:168
SoundLocation type
Definition server.h:111
Definition server.h:293
bool ephemeral
Definition server.h:299
u32 token
Definition server.h:297
std::optional< std::string_view > data
Definition server.h:296
std::string to_player
Definition server.h:298
std::string filename
Definition server.h:294
std::optional< std::string > filepath
Definition server.h:295
std::unordered_set< session_t > waiting_players
Definition server.h:502
std::string filename
Definition server.h:500
float expiry_timer
Definition server.h:501
Definition server.h:506
size_t operator()(const std::pair< v3s16, u16 > &p) const
Definition server.h:507
Definition server.h:483
void trigger(float delay, const std::string &msg, bool reconnect)
Definition server.cpp:204
bool isTimerRunning() const
Definition server.h:494
void tick(float dtime, Server *server)
Definition server.cpp:211
void reset()
Definition server.cpp:196
bool is_requested
Definition server.h:486
bool should_reconnect
Definition server.h:487
float m_timer
Definition server.h:496
std::wstring getShutdownTimerMessage() const
Definition server.cpp:243
std::string message
Definition server.h:488
Definition server.h:340
bool pause
Definition server.h:342
float steplen
Definition server.h:341
Definition skyparams.h:20
Describes the sound information for playback.
Definition sound.h:20
Definition skyparams.h:56
Definition subgames.h:15
Definition skyparams.h:38
static std::string p(std::string path)
Definition test_filesys.cpp:55