X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fserverenvironment.h;h=7c370fd5495cedc725e6433d45b3a3ba7998a669;hb=9d1a3ba66809b22f5e176e2199d29f015dd2567e;hp=99110542a5c918175f379a723d9ac951ecde2b34;hpb=0891975ad6c8d6d3e15b20f33b22cf5baca7eb62;p=oweals%2Fminetest.git diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 99110542a..7c370fd54 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -27,7 +27,9 @@ with this program; if not, write to the Free Software Foundation, Inc., class IGameDef; class ServerMap; +struct GameParams; class RemotePlayer; +class PlayerDatabase; class PlayerSAO; class ServerEnvironment; class ActiveBlockModifier; @@ -49,11 +51,10 @@ public: virtual ~ActiveBlockModifier(){}; // Set of contents to trigger on - virtual std::set getTriggerContents()=0; + virtual const std::set &getTriggerContents() const = 0; // Set of required neighbors (trigger doesn't happen if none are found) // Empty = do not check neighbors - virtual std::set getRequiredNeighbors() - { return std::set(); } + virtual const std::set &getRequiredNeighbors() const = 0; // Trigger interval in seconds virtual float getTriggerInterval() = 0; // Random chance of (1 / return value), 0 is disallowed @@ -217,9 +218,11 @@ public: // Save players void saveLoadedPlayers(); void savePlayer(RemotePlayer *player); - RemotePlayer *loadPlayer(const std::string &playername, PlayerSAO *sao); + PlayerSAO *loadPlayer(RemotePlayer *player, bool *new_player, u16 peer_id, + bool is_singleplayer); void addPlayer(RemotePlayer *player); void removePlayer(RemotePlayer *player); + bool removePlayerFromDatabase(const std::string &name); /* Save and load time of day and game timer @@ -334,8 +337,13 @@ public: RemotePlayer *getPlayer(const u16 peer_id); RemotePlayer *getPlayer(const char* name); + + static bool migratePlayersDatabase(const GameParams &game_params, + const Settings &cmd_args); private: + static PlayerDatabase *openPlayerDatabase(const std::string &name, + const std::string &savedir, const Settings &conf); /* Internal ActiveObject interface ------------------------------------------- @@ -419,6 +427,8 @@ private: // peer_ids in here should be unique, except that there may be many 0s std::vector m_players; + PlayerDatabase *m_player_database; + // Particles IntervalLimiter m_particle_management_interval; UNORDERED_MAP m_particle_spawners;