Minetest  5.4.0
client.h
Go to the documentation of this file.
1 /*
2 Minetest
3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14 
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 #pragma once
21 
22 #include "clientenvironment.h"
24 #include <ostream>
25 #include <map>
26 #include <set>
27 #include <vector>
28 #include <unordered_set>
29 #include "clientobject.h"
30 #include "gamedef.h"
31 #include "inventorymanager.h"
32 #include "localplayer.h"
33 #include "client/hud.h"
34 #include "particles.h"
35 #include "mapnode.h"
36 #include "tileanimation.h"
37 #include "mesh_generator_thread.h"
38 #include "network/address.h"
39 #include "network/peerhandler.h"
40 #include <fstream>
41 
42 #define CLIENT_CHAT_MESSAGE_LIMIT_PER_10S 10.0f
43 
44 struct ClientEvent;
45 struct MeshMakeData;
46 struct ChatMessage;
47 class MapBlockMesh;
51 class ISoundManager;
52 class NodeDefManager;
53 //class IWritableCraftDefManager;
55 struct MapDrawControl;
56 class ModChannelMgr;
57 class MtEventManager;
58 struct PointedThing;
59 class MapDatabase;
60 class Minimap;
61 struct MinimapMapblock;
62 class Camera;
63 class NetworkPacket;
64 namespace con {
65 class Connection;
66 }
67 
71  LC_Ready
72 };
73 
74 /*
75  Packet counter
76 */
77 
79 {
80 public:
81  PacketCounter() = default;
82 
83  void add(u16 command)
84  {
85  auto n = m_packets.find(command);
86  if (n == m_packets.end())
87  m_packets[command] = 1;
88  else
89  n->second++;
90  }
91 
92  void clear()
93  {
94  m_packets.clear();
95  }
96 
97  u32 sum() const;
98  void print(std::ostream &o) const;
99 
100 private:
101  // command, count
102  std::map<u16, u32> m_packets;
103 };
104 
105 class ClientScripting;
106 class GameUI;
107 
108 class Client : public con::PeerHandler, public InventoryManager, public IGameDef
109 {
110 public:
111  /*
112  NOTE: Nothing is thread-safe here.
113  */
114 
115  Client(
116  const char *playername,
117  const std::string &password,
118  const std::string &address_name,
119  MapDrawControl &control,
121  IWritableShaderSource *shsrc,
122  IWritableItemDefManager *itemdef,
123  NodeDefManager *nodedef,
125  MtEventManager *event,
126  bool ipv6,
127  GameUI *game_ui
128  );
129 
130  ~Client();
132 
133  // Load local mods into memory
134  void scanModSubfolder(const std::string &mod_name, const std::string &mod_path,
135  std::string mod_subpath);
136  inline void scanModIntoMemory(const std::string &mod_name, const std::string &mod_path)
137  {
138  scanModSubfolder(mod_name, mod_path, "");
139  }
140 
141  /*
142  request all threads managed by client to be stopped
143  */
144  void Stop();
145 
146 
147  bool isShutdown();
148 
149  /*
150  The name of the local player should already be set when
151  calling this, as it is sent in the initialization.
152  */
153  void connect(Address address, bool is_local_server);
154 
155  /*
156  Stuff that references the environment is valid only as
157  long as this is not called. (eg. Players)
158  If this throws a PeerNotFoundException, the connection has
159  timed out.
160  */
161  void step(float dtime);
162 
163  /*
164  * Command Handlers
165  */
166 
167  void handleCommand(NetworkPacket* pkt);
168 
186  void handleCommand_Fov(NetworkPacket *pkt);
187  void handleCommand_HP(NetworkPacket* pkt);
227 
228  void ProcessData(NetworkPacket *pkt);
229 
230  void Send(NetworkPacket* pkt);
231 
232  void interact(InteractAction action, const PointedThing &pointed);
233 
234  void sendNodemetaFields(v3s16 p, const std::string &formname,
235  const StringMap &fields);
236  void sendInventoryFields(const std::string &formname,
237  const StringMap &fields);
239  void sendChatMessage(const std::wstring &message);
240  void clearOutChatQueue();
241  void sendChangePassword(const std::string &oldpassword,
242  const std::string &newpassword);
243  void sendDamage(u16 damage);
244  void sendRespawn();
245  void sendReady();
246 
250  static const std::string &getBuiltinLuaPath();
251  static const std::string &getClientModsLuaPath();
252 
253  const std::vector<ModSpec> &getMods() const override;
254  const ModSpec* getModSpec(const std::string &modname) const override;
255 
256  // Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent)
257  void removeNode(v3s16 p);
258 
259  // helpers to enforce CSM restrictions
260  MapNode CSMGetNode(v3s16 p, bool *is_valid_position);
261  int CSMClampRadius(v3s16 pos, int radius);
262  v3s16 CSMClampPos(v3s16 pos);
263 
264  void addNode(v3s16 p, MapNode n, bool remove_metadata = true);
265 
266  void setPlayerControl(PlayerControl &control);
267 
268  // Returns true if the inventory of the local player has been
269  // updated from the server. If it is true, it is set to false.
270  bool updateWieldedItem();
271 
272  /* InventoryManager interface */
273  Inventory* getInventory(const InventoryLocation &loc) override;
274  void inventoryAction(InventoryAction *a) override;
275 
276  // Send the item number 'item' as player item to the server
277  void setPlayerItem(u16 item);
278 
279  const std::list<std::string> &getConnectedPlayerNames()
280  {
281  return m_env.getPlayerNames();
282  }
283 
284  float getAnimationTime();
285 
286  int getCrackLevel();
287  v3s16 getCrackPos();
288  void setCrack(int level, v3s16 pos);
289 
290  u16 getHP();
291 
292  bool checkPrivilege(const std::string &priv) const
293  { return (m_privileges.count(priv) != 0); }
294 
295  const std::unordered_set<std::string> &getPrivilegeList() const
296  { return m_privileges; }
297 
298  bool getChatMessage(std::wstring &message);
299  void typeChatMessage(const std::wstring& message);
300 
301  u64 getMapSeed(){ return m_map_seed; }
302 
303  void addUpdateMeshTask(v3s16 blockpos, bool ack_to_server=false, bool urgent=false);
304  // Including blocks at appropriate edges
305  void addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server=false, bool urgent=false);
306  void addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server=false, bool urgent=false);
307 
308  void updateCameraOffset(v3s16 camera_offset)
309  { m_mesh_update_thread.m_camera_offset = camera_offset; }
310 
311  bool hasClientEvents() const { return !m_client_event_queue.empty(); }
312  // Get event from queue. If queue is empty, it triggers an assertion failure.
314 
315  bool accessDenied() const { return m_access_denied; }
316 
318 
319  void setFatalError(const std::string &reason)
320  {
321  m_access_denied = true;
322  m_access_denied_reason = reason;
323  }
324 
325  // Renaming accessDeniedReason to better name could be good as it's used to
326  // disconnect client when CSM failed.
327  const std::string &accessDeniedReason() const { return m_access_denied_reason; }
328 
329  const bool itemdefReceived() const
330  { return m_itemdef_received; }
331  const bool nodedefReceived() const
332  { return m_nodedef_received; }
333  const bool mediaReceived() const
334  { return !m_media_downloader; }
335  const bool activeObjectsReceived() const
336  { return m_activeobjects_received; }
337 
339  { return m_proto_ver; }
340 
341  void confirmRegistration();
344 
345  float mediaReceiveProgress();
346 
347  void afterContentReceived();
348 
349  float getRTT();
350  float getCurRate();
351 
352  Minimap* getMinimap() { return m_minimap; }
353  void setCamera(Camera* camera) { m_camera = camera; }
354 
355  Camera* getCamera () { return m_camera; }
356 
357  bool shouldShowMinimap() const;
358 
359  // IGameDef interface
361  const NodeDefManager* getNodeDefManager() override;
365  u16 allocateUnknownNodeId(const std::string &name) override;
366  virtual ISoundManager* getSoundManager();
369  bool checkLocalPrivilege(const std::string &priv)
370  { return checkPrivilege(priv); }
371  virtual scene::IAnimatedMesh* getMesh(const std::string &filename, bool cache = false);
372  const std::string* getModFile(std::string filename);
373 
374  std::string getModStoragePath() const override;
375  bool registerModStorage(ModMetadata *meta) override;
376  void unregisterModStorage(const std::string &name) override;
377 
378  // The following set of functions is used by ClientMediaDownloader
379  // Insert a media file appropriately into the appropriate manager
380  bool loadMedia(const std::string &data, const std::string &filename,
381  bool from_media_push = false);
382  // Send a request for conventional media transfer
383  void request_media(const std::vector<std::string> &file_requests);
384 
386 
387  void makeScreenshot();
388 
389  inline void pushToChatQueue(ChatMessage *cec)
390  {
391  m_chat_queue.push(cec);
392  }
393 
395  const bool modsLoaded() const { return m_mods_loaded; }
396 
397  void pushToEventQueue(ClientEvent *event);
398 
399  void showMinimap(bool show = true);
400 
401  const Address getServerAddress();
402 
403  const std::string &getAddressName() const
404  {
405  return m_address_name;
406  }
407 
408  inline u64 getCSMRestrictionFlags() const
409  {
411  }
412 
414  {
415  return m_csm_restriction_flags & flag;
416  }
417 
418  inline std::unordered_map<u32, u32> &getHUDTranslationMap()
419  {
420  return m_hud_server_to_client;
421  }
422 
423  bool joinModChannel(const std::string &channel) override;
424  bool leaveModChannel(const std::string &channel) override;
425  bool sendModChannelMessage(const std::string &channel,
426  const std::string &message) override;
427  ModChannel *getModChannel(const std::string &channel) override;
428 
429  const std::string &getFormspecPrepend() const
430  {
432  }
433 private:
434  void loadMods();
435 
436  // Virtual methods from con::PeerHandler
437  void peerAdded(con::Peer *peer) override;
438  void deletingPeer(con::Peer *peer, bool timeout) override;
439 
440  void initLocalMapSaving(const Address &address,
441  const std::string &hostname,
442  bool is_local_server);
443 
444  void ReceiveAll();
445 
446  void sendPlayerPos();
447 
448  void deleteAuthData();
449  // helper method shared with clientpackethandler
450  static AuthMechanism choseAuthMech(const u32 mechs);
451 
452  void sendInit(const std::string &playerName);
453  void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism);
454  void startAuth(AuthMechanism chosen_auth_mechanism);
455  void sendDeletedBlocks(std::vector<v3s16> &blocks);
456  void sendGotBlocks(const std::vector<v3s16> &blocks);
457  void sendRemovedSounds(std::vector<s32> &soundList);
458 
459  // Helper function
460  inline std::string getPlayerName()
461  { return m_env.getLocalPlayer()->getName(); }
462 
463  bool canSendChatMessage() const;
464 
465  float m_packetcounter_timer = 0.0f;
467  float m_avg_rtt_timer = 0.0f;
470 
477 
478 
482  std::unique_ptr<con::Connection> m_con;
483  std::string m_address_name;
484  Camera *m_camera = nullptr;
485  Minimap *m_minimap = nullptr;
487 
488  // Server serialization version
490 
491  // Used version of the protocol with server
492  // Values smaller than 25 only mean they are smaller than 25,
493  // and aren't accurate. We simply just don't know, because
494  // the server didn't send the version back then.
495  // If 0, server init hasn't been received yet.
496  u16 m_proto_ver = 0;
497 
498  bool m_update_wielded_item = false;
502  // Block mesh animation parameters
503  float m_animation_time = 0.0f;
504  int m_crack_level = -1;
506  // 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT
507  //s32 m_daynight_i;
508  //u32 m_daynight_ratio;
509  std::queue<std::wstring> m_out_chat_queue;
512  std::queue<ChatMessage *> m_chat_queue;
513 
514  // The authentication methods we can use to enter sudo mode (=change password)
516 
517  // The seed returned by the server in TOCLIENT_INIT is stored here
518  u64 m_map_seed = 0;
519 
520  // Auth data
521  std::string m_playername;
522  std::string m_password;
523  // If set, this will be sent (and cleared) upon a TOCLIENT_ACCEPT_SUDO_MODE
524  std::string m_new_password;
525  // Usable by auth mechanisms.
527  void *m_auth_data = nullptr;
528 
529  bool m_access_denied = false;
531  std::string m_access_denied_reason = "";
532  std::queue<ClientEvent *> m_client_event_queue;
533  bool m_itemdef_received = false;
534  bool m_nodedef_received = false;
536  bool m_mods_loaded = false;
537 
539  // Set of media filenames pushed by server at runtime
540  std::unordered_set<std::string> m_media_pushed_files;
541 
542  // time_of_day speed approximation for old protocol
543  bool m_time_of_day_set = false;
544  float m_last_time_of_day_f = -1.0f;
546 
547  // An interval for generally sending object positions and stuff
549 
550  // Sounds
552  // Mapping from server sound ids to our sound ids
553  std::unordered_map<s32, int> m_sounds_server_to_client;
554  // And the other way!
555  std::unordered_map<int, s32> m_sounds_client_to_server;
556  // Relation of client id to object id
557  std::unordered_map<int, u16> m_sounds_to_objects;
558 
559  // Map server hud ids to client hud ids
560  std::unordered_map<u32, u32> m_hud_server_to_client;
561 
562  // Privileges
563  std::unordered_set<std::string> m_privileges;
564 
565  // Detached inventories
566  // key = name
567  std::unordered_map<std::string, Inventory*> m_detached_inventories;
568 
569  // Storage for mesh data for creating multiple instances of the same mesh
571 
572  // own state
574 
576 
577  // Used for saving server map to disk client-side
578  MapDatabase *m_localdb = nullptr;
581 
582  // Client modding
584  std::unordered_map<std::string, ModMetadata *> m_mod_storages;
586  std::vector<ModSpec> m_mods;
588 
589  bool m_shutdown = false;
590 
591  // CSM restrictions byteflag
594 
595  std::unique_ptr<ModChannelMgr> m_modchannel_mgr;
596 };
Definition: address.h:47
Definition: camera.h:79
Definition: clientenvironment.h:64
const std::list< std::string > & getPlayerNames()
Definition: clientenvironment.h:138
LocalPlayer * getLocalPlayer() const
Definition: clientenvironment.h:78
Definition: clientmedia.h:42
Definition: scripting_client.h:38
Definition: client.h:109
void setFatalError(const std::string &reason)
Definition: client.h:319
void handleCommand_NodeDef(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:747
void handleCommand_DeleteParticleSpawner(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1030
const std::string * getModFile(std::string filename)
Definition: client.cpp:1930
ICraftDefManager * getCraftDefManager() override
Definition: client.cpp:1869
std::string getModStoragePath() const override
Definition: client.cpp:1970
void handleCommand_Privileges(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:883
v3s16 getCrackPos()
Definition: client.cpp:1489
void loadMods()
Definition: client.cpp:136
void handleCommand_AuthAccept(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:120
MapDatabase * m_localdb
Definition: client.h:578
void clearOutChatQueue()
Definition: client.cpp:1220
void handleCommand_ModChannelMsg(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1536
MtEventManager * getEventManager()
Definition: client.cpp:1895
void handleCommand_DetachedInventory(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:911
StringMap m_mesh_data
Definition: client.h:570
bool loadMedia(const std::string &data, const std::string &filename, bool from_media_push=false)
Definition: client.cpp:648
void handleCommand_AddNode(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:238
Minimap * m_minimap
Definition: client.h:485
IItemDefManager * getItemDefManager() override
Definition: client.cpp:1861
float m_connection_reinit_timer
Definition: client.h:466
std::unordered_map< int, u16 > m_sounds_to_objects
Definition: client.h:557
float m_inventory_from_server_age
Definition: client.h:500
void handleCommand_DenySudoMode(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:167
void handleCommand_PlayerSpeed(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1476
void interact(InteractAction action, const PointedThing &pointed)
Definition: client.cpp:938
const bool activeObjectsReceived() const
Definition: client.h:335
void request_media(const std::vector< std::string > &file_requests)
Definition: client.cpp:761
bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const
Definition: client.h:413
void updateCameraOffset(v3s16 camera_offset)
Definition: client.h:308
void Stop()
Definition: client.cpp:256
MapNode CSMGetNode(v3s16 p, bool *is_valid_position)
Helper function for Client Side Modding CSM restrictions are applied there, this should not be used f...
Definition: client.cpp:1328
void handleCommand_AnnounceMedia(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:639
const ModSpec * getModSpec(const std::string &modname) const override
Definition: client.cpp:251
Client(const char *playername, const std::string &password, const std::string &address_name, MapDrawControl &control, IWritableTextureSource *tsrc, IWritableShaderSource *shsrc, IWritableItemDefManager *itemdef, NodeDefManager *nodedef, ISoundManager *sound, MtEventManager *event, bool ipv6, GameUI *game_ui)
Definition: client.cpp:89
u64 m_csm_restriction_flags
Definition: client.h:592
std::unordered_map< std::string, ModMetadata * > m_mod_storages
Definition: client.h:584
std::queue< ClientEvent * > m_client_event_queue
Definition: client.h:532
const Address getServerAddress()
Definition: client.cpp:1649
void handleCommand_HP(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:555
void handleCommand_UpdatePlayerList(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1403
void addUpdateMeshTask(v3s16 blockpos, bool ack_to_server=false, bool urgent=false)
Definition: client.cpp:1566
void handleCommand_ActiveObjectMessages(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:481
ClientScripting * getScript()
Definition: client.h:394
void handleCommand_ItemDef(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:767
StringMap m_mod_vfs
Definition: client.h:587
IntervalLimiter m_map_timer_and_unload_interval
Definition: client.h:469
float m_recommended_send_interval
Definition: client.h:548
float m_avg_rtt_timer
Definition: client.h:467
float m_mod_storage_save_timer
Definition: client.h:585
static const std::string & getBuiltinLuaPath()
Definition: client.cpp:233
void handleCommand_ChatMessage(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:400
std::unordered_map< u32, u32 > m_hud_server_to_client
Definition: client.h:560
IntervalLimiter m_localdb_save_interval
Definition: client.h:579
void handleCommand_HudSetParam(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1187
const bool modsLoaded() const
Definition: client.h:395
void handleCommand_HudSetSky(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1209
void addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server=false, bool urgent=false)
Definition: client.cpp:1578
NodeDefManager * m_nodedef
Definition: client.h:474
bool m_mods_loaded
Definition: client.h:536
bool m_simple_singleplayer_mode
Definition: client.h:343
bool m_minimap_disabled_by_server
Definition: client.h:486
void addNode(v3s16 p, MapNode n, bool remove_metadata=true)
Definition: client.cpp:1365
void handleCommand_HudSetStars(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1325
u32 m_sudo_auth_methods
Definition: client.h:515
void handleCommand_Movement(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:511
void setCamera(Camera *camera)
Definition: client.h:353
void handleCommand_HudSetMoon(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1312
ITextureSource * tsrc()
Definition: client.h:248
void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism)
Definition: client.cpp:1023
float m_animation_time
Definition: client.h:503
void pushToChatQueue(ChatMessage *cec)
Definition: client.h:389
void setPlayerControl(PlayerControl &control)
Definition: client.cpp:1383
LocalClientState m_state
Definition: client.h:573
std::vector< ModSpec > m_mods
Definition: client.h:586
Camera * m_camera
Definition: client.h:484
void handleCommand_LocalPlayerAnimations(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1383
void sendInventoryFields(const std::string &formname, const StringMap &fields)
Definition: client.cpp:1144
int m_crack_level
Definition: client.h:504
IWritableShaderSource * m_shsrc
Definition: client.h:472
std::unordered_map< std::string, Inventory * > m_detached_inventories
Definition: client.h:567
std::string getPlayerName()
Definition: client.h:460
void sendNodemetaFields(v3s16 p, const std::string &formname, const StringMap &fields)
Definition: client.cpp:1122
void sendInit(const std::string &playerName)
Definition: client.cpp:1009
void scanModIntoMemory(const std::string &mod_name, const std::string &mod_path)
Definition: client.h:136
void handleCommand_Hello(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:54
void deleteAuthData()
Definition: client.cpp:975
static AuthMechanism choseAuthMech(const u32 mechs)
Definition: client.cpp:995
bool hasClientEvents() const
Definition: client.h:311
void pushToEventQueue(ClientEvent *event)
Definition: client.cpp:1849
std::unordered_map< int, s32 > m_sounds_client_to_server
Definition: client.h:555
std::string m_access_denied_reason
Definition: client.h:531
const bool mediaReceived() const
Definition: client.h:333
std::string m_password
Definition: client.h:522
void inventoryAction(InventoryAction *a) override
Definition: client.cpp:1463
std::string m_new_password
Definition: client.h:524
void handleCommand_HudChange(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1110
Inventory * getInventory(const InventoryLocation &loc) override
Definition: client.cpp:1419
void typeChatMessage(const std::wstring &message)
Definition: client.cpp:1552
IWritableTextureSource * m_tsrc
Definition: client.h:471
void Send(NetworkPacket *pkt)
Definition: client.cpp:900
float mediaReceiveProgress()
Definition: client.cpp:1654
float m_removed_sounds_check_timer
Definition: client.h:551
bool checkPrivilege(const std::string &priv) const
Definition: client.h:292
void sendDamage(u16 damage)
Definition: client.cpp:1239
void handleCommand_EyeOffset(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1395
std::queue< std::wstring > m_out_chat_queue
Definition: client.h:509
u32 m_csm_restriction_noderange
Definition: client.h:593
bool m_is_registration_confirmation_state
Definition: client.h:342
void handleCommand_FormspecPrepend(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1458
int CSMClampRadius(v3s16 pos, int radius)
Definition: client.cpp:1340
ClientEvent * getClientEvent()
Definition: client.cpp:1639
void makeScreenshot()
Definition: client.cpp:1773
void handleCommand_MovePlayer(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:591
ISoundManager * m_sound
Definition: client.h:475
void handleCommand_NodemetaChanged(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:258
std::string m_playername
Definition: client.h:521
const std::string & accessDeniedReason() const
Definition: client.h:327
float m_last_time_of_day_f
Definition: client.h:544
u16 getProtoVersion()
Definition: client.h:338
void sendDeletedBlocks(std::vector< v3s16 > &blocks)
Definition: client.cpp:1084
void handleCommand_DeathScreen(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:622
IWritableItemDefManager * m_itemdef
Definition: client.h:473
bool checkLocalPrivilege(const std::string &priv)
Definition: client.h:369
virtual ISoundManager * getSoundManager()
Definition: client.cpp:1891
void ProcessData(NetworkPacket *pkt)
Definition: client.cpp:849
bool sendModChannelMessage(const std::string &channel, const std::string &message) override
Definition: client.cpp:2005
void handleCommand_PlaySound(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:787
bool registerModStorage(ModMetadata *meta) override
Definition: client.cpp:1947
void startAuth(AuthMechanism chosen_auth_mechanism)
Definition: client.cpp:1035
void unregisterModStorage(const std::string &name) override
Definition: client.cpp:1959
void handleCommand_Null(NetworkPacket *pkt)
Definition: client.h:169
bool joinModChannel(const std::string &channel) override
Definition: client.cpp:1979
void handleCommand_SrpBytesSandB(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1425
void scanModSubfolder(const std::string &mod_name, const std::string &mod_path, std::string mod_subpath)
Definition: client.cpp:205
~Client()
Definition: client.cpp:278
void deletingPeer(con::Peer *peer, bool timeout) override
Definition: client.cpp:741
void removeNode(v3s16 p)
Definition: client.cpp:1306
u64 getCSMRestrictionFlags() const
Definition: client.h:408
void initLocalMapSaving(const Address &address, const std::string &hostname, bool is_local_server)
Definition: client.cpp:784
u16 m_proto_ver
Definition: client.h:496
bool canSendChatMessage() const
Definition: client.cpp:1179
void handleCommand_InventoryFormSpec(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:902
bool m_activeobjects_received
Definition: client.h:535
GameUI * m_game_ui
Definition: client.h:575
void sendChangePassword(const std::string &oldpassword, const std::string &newpassword)
Definition: client.cpp:1225
u16 allocateUnknownNodeId(const std::string &name) override
Definition: client.cpp:1883
void handleCommand_Deprecated(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:47
void sendReady()
Definition: client.cpp:1252
u8 m_server_ser_ver
Definition: client.h:489
void handleCommand_HudSetFlags(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1149
void peerAdded(con::Peer *peer) override
Definition: client.cpp:736
void step(float dtime)
Definition: client.cpp:323
bool accessDenied() const
Definition: client.h:315
const std::vector< ModSpec > & getMods() const override
Definition: client.cpp:245
bool m_update_wielded_item
Definition: client.h:498
float m_chat_message_allowance
Definition: client.h:511
void sendPlayerPos()
Definition: client.cpp:1265
void handleCommand_HudSetSun(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1299
void * m_auth_data
Definition: client.h:527
PacketCounter m_packetcounter
Definition: client.h:501
u64 getMapSeed()
Definition: client.h:301
ParticleManager m_particle_manager
Definition: client.h:481
int getCrackLevel()
Definition: client.cpp:1484
float m_time_of_day_update_timer
Definition: client.h:545
u16 getHP()
Definition: client.cpp:1514
const std::string & getFormspecPrepend() const
Definition: client.h:429
void handleCommand_RemoveNode(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:228
void sendChatMessage(const std::wstring &message)
Definition: client.cpp:1193
void handleCommand_Breath(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:579
void handleCommand_BlockData(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:284
void sendRemovedSounds(std::vector< s32 > &soundList)
Definition: client.cpp:1107
std::unique_ptr< ModChannelMgr > m_modchannel_mgr
Definition: client.h:595
void afterContentReceived()
Definition: client.cpp:1694
void handleCommand_HudRemove(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1092
const bool itemdefReceived() const
Definition: client.h:329
virtual IWritableShaderSource * getShaderSource()
Definition: client.cpp:1878
float getCurRate()
Definition: client.cpp:1767
void handleCommand_ActiveObjectRemoveAdd(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:436
bool m_shutdown
Definition: client.h:589
bool isShutdown()
Definition: client.cpp:273
void handleCommand_Inventory(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:332
void addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server=false, bool urgent=false)
Definition: client.cpp:1596
void handleCommand_OverrideDayNightRatio(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1367
bool m_nodedef_received
Definition: client.h:534
u64 m_map_seed
Definition: client.h:518
Inventory * m_inventory_from_server
Definition: client.h:499
void handleCommand_MinimapModes(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1624
bool m_itemdef_received
Definition: client.h:533
void setPlayerItem(u16 item)
Definition: client.cpp:1390
LocalClientState getState()
Definition: client.h:385
ClientMediaDownloader * m_media_downloader
Definition: client.h:538
void confirmRegistration()
Definition: client.cpp:1029
float getRTT()
Definition: client.cpp:1762
float m_playerpos_send_timer
Definition: client.h:468
ModChannel * getModChannel(const std::string &channel) override
Definition: client.cpp:2024
virtual scene::IAnimatedMesh * getMesh(const std::string &filename, bool cache=false)
Definition: client.cpp:1905
bool m_access_denied
Definition: client.h:529
void connect(Address address, bool is_local_server)
Definition: client.cpp:314
static const std::string & getClientModsLuaPath()
Definition: client.cpp:239
void handleCommand_AccessDenied(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:176
ITextureSource * getTextureSource()
Definition: client.cpp:1874
std::unordered_map< u32, u32 > & getHUDTranslationMap()
Definition: client.h:418
void handleCommand_AddParticleSpawner(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:975
ClientEnvironment & getEnv()
Definition: client.h:247
u16 m_cache_save_interval
Definition: client.h:580
void handleCommand_ModChannelSignal(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1554
void handleCommand_CSMRestrictionFlags(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1467
bool leaveModChannel(const std::string &channel) override
Definition: client.cpp:1992
const bool nodedefReceived() const
Definition: client.h:331
AuthMechanism m_chosen_auth_mech
Definition: client.h:526
std::queue< ChatMessage * > m_chat_queue
Definition: client.h:512
std::unordered_set< std::string > m_privileges
Definition: client.h:563
void showMinimap(bool show=true)
Definition: client.cpp:1854
void handleCommand_Fov(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:535
void sendGotBlocks(const std::vector< v3s16 > &blocks)
Definition: client.cpp:1097
MtEventManager * m_event
Definition: client.h:476
void handleCommand_MediaPush(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1487
void handleCommand(NetworkPacket *pkt)
Definition: client.cpp:840
void handleCommand_TimeOfDay(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:352
void setCrack(int level, v3s16 pos)
Definition: client.cpp:1494
bool m_access_denied_reconnect
Definition: client.h:530
bool updateWieldedItem()
Definition: client.cpp:1402
bool reconnectRequested() const
Definition: client.h:317
std::unordered_set< std::string > m_media_pushed_files
Definition: client.h:540
const NodeDefManager * getNodeDefManager() override
Definition: client.cpp:1865
void handleCommand_AcceptSudoMode(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:153
const std::list< std::string > & getConnectedPlayerNames()
Definition: client.h:279
v3s16 m_crack_pos
Definition: client.h:505
std::unique_ptr< con::Connection > m_con
Definition: client.h:482
DISABLE_CLASS_COPY(Client)
bool getChatMessage(std::wstring &message)
Definition: client.cpp:1521
const std::unordered_set< std::string > & getPrivilegeList() const
Definition: client.h:295
ISoundManager * sound()
Definition: client.h:249
float m_packetcounter_timer
Definition: client.h:465
std::string m_address_name
Definition: client.h:483
const std::string & getAddressName() const
Definition: client.h:403
ClientEnvironment m_env
Definition: client.h:480
void ReceiveAll()
Definition: client.cpp:813
void sendInventoryAction(InventoryAction *a)
Definition: client.cpp:1164
void handleCommand_SpawnParticle(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:960
Camera * getCamera()
Definition: client.h:355
std::unordered_map< s32, int > m_sounds_server_to_client
Definition: client.h:553
void handleCommand_HudAdd(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1042
void handleCommand_ShowFormSpec(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:944
void handleCommand_CloudParams(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:1339
u32 m_last_chat_message_sent
Definition: client.h:510
Minimap * getMinimap()
Definition: client.h:352
void handleCommand_Media(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:692
bool m_time_of_day_set
Definition: client.h:543
virtual ParticleManager * getParticleManager()
Definition: client.cpp:1900
float getAnimationTime()
Definition: client.cpp:1479
void sendRespawn()
Definition: client.cpp:1246
v3s16 CSMClampPos(v3s16 pos)
Definition: client.cpp:1352
bool shouldShowMinimap() const
Definition: client.cpp:1844
void handleCommand_FadeSound(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:868
void handleCommand_StopSound(NetworkPacket *pkt)
Definition: clientpackethandler.cpp:855
MeshUpdateThread m_mesh_update_thread
Definition: client.h:479
ClientScripting * m_script
Definition: client.h:583
Definition: gameui.h:44
Definition: craftdef.h:405
Definition: gamedef.h:49
Definition: itemdef.h:105
Definition: sound.h:36
Definition: tile.h:86
Definition: itemdef.h:139
Definition: shader.h:138
Definition: tile.h:113
Definition: numeric.h:319
Definition: inventorymanager.h:106
Definition: inventory.h:282
Definition: mapblock_mesh.h:86
Definition: database.h:38
Definition: mesh_generator_thread.h:110
v3s16 m_camera_offset
Definition: mesh_generator_thread.h:118
Definition: minimap.h:114
Definition: modchannels.h:67
Definition: modchannels.h:38
Definition: mods.h:144
Definition: mtevent.h:64
Definition: networkpacket.h:28
This class is for getting the actual properties of nodes from their content ID.
Definition: nodedef.h:510
Definition: client.h:79
std::map< u16, u32 > m_packets
Definition: client.h:102
void print(std::ostream &o) const
Definition: client.cpp:75
void add(u16 command)
Definition: client.h:83
PacketCounter()=default
u32 sum() const
Definition: client.cpp:67
void clear()
Definition: client.h:92
Class doing particle as well as their spawners handling.
Definition: particles.h:142
const char * getName() const
Definition: player.h:147
std::string formspec_prepend
Definition: player.h:181
Definition: connection.h:755
Definition: peerhandler.h:40
Definition: connection.h:523
LocalClientState
Definition: client.h:68
@ LC_Init
Definition: client.h:70
@ LC_Created
Definition: client.h:69
@ LC_Ready
Definition: client.h:71
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
Definition: client.h:64
CSMRestrictionFlags
Definition: networkprotocol.h:1041
@ CSM_RF_NONE
Definition: networkprotocol.h:1042
InteractAction
Definition: networkprotocol.h:1057
AuthMechanism
Definition: networkprotocol.h:983
std::unordered_map< std::string, std::string > StringMap
Definition: string.h:60
Definition: chatmessage.h:35
Definition: clientevent.h:56
Definition: inventorymanager.h:126
Definition: inventorymanager.h:28
Definition: clientmap.h:29
Definition: mapnode.h:118
Definition: mapblock_mesh.h:40
Definition: minimap.h:65
Definition: mods.h:37
Definition: player.h:48
An active object or node which is selected by a ray on the map.
Definition: pointedthing.h:36
std::string p(std::string path)
Definition: test_filepath.cpp:59