Inventory: Send dirty lists where appropriate (#8742)
[oweals/minetest.git] / src / client / game.cpp
index 8413578100b7b7f153f12639126a60282558d29c..5bf41bcd6efd0bb99ed83bdacc1d92923849f29e 100644 (file)
@@ -599,7 +599,6 @@ struct GameRunData {
        bool dig_instantly;
        bool digging_blocked;
        bool left_punch;
-       bool update_wielded_item_trigger;
        bool reset_jump_timer;
        float nodig_delay_timer;
        float dig_time;
@@ -1018,7 +1017,6 @@ bool Game::startup(bool *kill,
        // Reinit runData
        runData = GameRunData();
        runData.time_from_last_punch = 10.0;
-       runData.update_wielded_item_trigger = true;
 
        m_game_ui->initFlags();
 
@@ -2466,7 +2464,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
        }
 
        // autoforward if set: simulate "up" key
-       if (player->getPlayerSettings().continuous_forward) {
+       if (player->getPlayerSettings().continuous_forward && !player->isDead()) {
                control.up = true;
                keypress_bits |= 1U << 0;
        }
@@ -2483,7 +2481,7 @@ inline void Game::step(f32 *dtime)
        bool can_be_and_is_paused =
                        (simple_singleplayer_mode && g_menumgr.pausesGame());
 
-       if (can_be_and_is_paused) {     // This is for a singleplayer server
+       if (can_be_and_is_paused) { // This is for a singleplayer server
                *dtime = 0;             // No time passes
        } else {
                if (server)
@@ -3736,19 +3734,11 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
        if (player->getWieldIndex() != runData.new_playeritem)
                client->setPlayerItem(runData.new_playeritem);
 
-       // Update local inventory if it has changed
-       if (client->getLocalInventoryUpdated()) {
-               //infostream<<"Updating local inventory"<<std::endl;
-               runData.update_wielded_item_trigger = true;
-       }
-
-       if (runData.update_wielded_item_trigger) {
+       if (client->updateWieldedItem()) {
                // Update wielded tool
                ItemStack selected_item, hand_item;
                ItemStack &tool_item = player->getWieldedItem(&selected_item, &hand_item);
                camera->wield(tool_item);
-
-               runData.update_wielded_item_trigger = false;
        }
 
        /*