Fix player rotations (#7941)
[oweals/minetest.git] / src / serverenvironment.h
index ea295b9191997fedb849219e143c7d36fa7b6812..b7a121adff241706fc2e3161676cfc28df4a4cd9 100644 (file)
@@ -32,6 +32,7 @@ struct GameParams;
 class MapBlock;
 class RemotePlayer;
 class PlayerDatabase;
+class AuthDatabase;
 class PlayerSAO;
 class ServerEnvironment;
 class ActiveBlockModifier;
@@ -232,9 +233,6 @@ public:
        */
        void saveMeta();
        void loadMeta();
-       // to be called instead of loadMeta if
-       // env_meta.txt doesn't exist (e.g. new world)
-       void loadDefaultMeta();
 
        u32 addParticleSpawner(float exptime);
        u32 addParticleSpawner(float exptime, u16 attached_id);
@@ -257,6 +255,19 @@ public:
        */
        u16 addActiveObject(ServerActiveObject *object);
 
+       /**
+        * Verify if id is a free active object id
+        * @param id
+        * @return true if slot is free
+        */
+       bool isFreeServerActiveObjectId(u16 id) const;
+
+       /**
+        * Retrieve the first free ActiveObject ID
+        * @return free activeobject ID or 0 if none was found
+        */
+       u16 getFreeServerActiveObjectId();
+
        /*
                Add an active object as a static object to the corresponding
                MapBlock.
@@ -356,10 +367,21 @@ public:
 
        static bool migratePlayersDatabase(const GameParams &game_params,
                        const Settings &cmd_args);
+
+       AuthDatabase *getAuthDatabase() { return m_auth_database; }
+       static bool migrateAuthDatabase(const GameParams &game_params,
+                       const Settings &cmd_args);
 private:
 
+       /**
+        * called if env_meta.txt doesn't exist (e.g. new world)
+        */
+       void loadDefaultMeta();
+
        static PlayerDatabase *openPlayerDatabase(const std::string &name,
                        const std::string &savedir, const Settings &conf);
+       static AuthDatabase *openAuthDatabase(const std::string &name,
+                       const std::string &savedir, const Settings &conf);
        /*
                Internal ActiveObject interface
                -------------------------------------------
@@ -429,11 +451,8 @@ private:
        ActiveBlockList m_active_blocks;
        IntervalLimiter m_active_blocks_management_interval;
        IntervalLimiter m_active_block_modifier_interval;
-       IntervalLimiter m_active_object_interval;
        IntervalLimiter m_active_blocks_nodemetadata_interval;
-       float m_active_block_interval_overload_skip = 1.0f;
-       float m_active_object_interval_overload_skip = 1.0f;
-       float m_avg_ao_time = 0.0f;
+       int m_active_block_interval_overload_skip = 0;
        // Time from the beginning of the game in seconds.
        // Incremented in step().
        u32 m_game_time = 0;
@@ -455,6 +474,7 @@ private:
        std::vector<RemotePlayer*> m_players;
 
        PlayerDatabase *m_player_database = nullptr;
+       AuthDatabase *m_auth_database = nullptr;
 
        // Particles
        IntervalLimiter m_particle_management_interval;