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