]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/game.cpp
[CSM] Fix minimap problems (#5405)
[dragonfireclient.git] / src / game.cpp
index 66c8859c8298a2ee8876ad4eba4e9b1e6bc186a1..4a3acf493cbaca4d769880f5c71b757b50c57f9c 100644 (file)
@@ -179,6 +179,8 @@ struct LocalFormspecHandler : public TextDest {
                                return;
                        }
                }
+
+               // Don't disable this part when modding is disabled, it's used in builtin
                m_client->getScript()->on_formspec_input(m_formname, fields);
        }
 
@@ -713,7 +715,7 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter
                m_eye_position_vertex.set(eye_position_array, services);
 
                float minimap_yaw_array[3];
-               v3f minimap_yaw = m_client->getMapper()->getYawVec();
+               v3f minimap_yaw = m_client->getMinimap()->getYawVec();
 #if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8)
                minimap_yaw_array[0] = minimap_yaw.X;
                minimap_yaw_array[1] = minimap_yaw.Y;
@@ -1471,7 +1473,7 @@ class Game {
        Sky *sky;                         // Free using ->Drop()
        Inventory *local_inventory;
        Hud *hud;
-       Mapper *mapper;
+       Minimap *mapper;
 
        GameRunData runData;
        VolatileRunFlags flags;
@@ -1767,7 +1769,7 @@ void Game::run()
                updateProfilerGraphs(&graph);
 
                // Update if minimap has been disabled by the server
-               flags.show_minimap &= !client->isMinimapDisabledByServer();
+               flags.show_minimap &= client->shouldShowMinimap();
        }
 }
 
@@ -2027,7 +2029,7 @@ bool Game::createClient(const std::string &playername,
                return false;
        }
 
-       mapper = client->getMapper();
+       mapper = client->getMinimap();
        mapper->setMinimapMode(MINIMAP_MODE_OFF);
 
        return true;
@@ -3185,9 +3187,10 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
 
        for ( ; event.type != CE_NONE; event = client->getClientEvent()) {
 
-               if (event.type == CE_PLAYER_DAMAGE &&
-                               client->getHP() != 0) {
-                       client->getScript()->on_damage_taken(event.player_damage.amount);
+               if (event.type == CE_PLAYER_DAMAGE && client->getHP() != 0) {
+                       if (client->moddingEnabled()) {
+                               client->getScript()->on_damage_taken(event.player_damage.amount);
+                       }
 
                        *damage_flash += 95.0 + 3.2 * event.player_damage.amount;
                        *damage_flash = MYMIN(*damage_flash, 127.0);
@@ -3202,6 +3205,7 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
                        cam->camera_yaw = event.player_force_move.yaw;
                        cam->camera_pitch = event.player_force_move.pitch;
                } else if (event.type == CE_DEATHSCREEN) {
+                       // This should be enabled for death formspec in builtin
                        client->getScript()->on_death();
 
                        /* Handle visualization */
@@ -3895,17 +3899,20 @@ void Game::handleDigging(GameRunData *runData,
                const PointedThing &pointed, const v3s16 &nodepos,
                const ToolCapabilities &playeritem_toolcap, f32 dtime)
 {
+
+       LocalPlayer *player = client->getEnv().getLocalPlayer();
+       ClientMap &map = client->getEnv().getClientMap();
+       MapNode n = client->getEnv().getClientMap().getNodeNoEx(nodepos);
+
        if (!runData->digging) {
                infostream << "Started digging" << std::endl;
+               if (client->moddingEnabled() && client->getScript()->on_punchnode(nodepos, n))
+                       return;
                client->interact(0, pointed);
                runData->digging = true;
                runData->ldown_for_dig = true;
        }
 
-       LocalPlayer *player = client->getEnv().getLocalPlayer();
-       ClientMap &map = client->getEnv().getClientMap();
-       MapNode n = client->getEnv().getClientMap().getNodeNoEx(nodepos);
-
        // NOTE: Similar piece of code exists on the server side for
        // cheat detection.
        // Get digging parameters
@@ -3968,7 +3975,7 @@ void Game::handleDigging(GameRunData *runData,
        } else {
                infostream << "Digging completed" << std::endl;
                client->setCrack(-1, v3s16(0, 0, 0));
-       
+
                runData->dig_time = 0;
                runData->digging = false;
 
@@ -3990,9 +3997,10 @@ void Game::handleDigging(GameRunData *runData,
                bool is_valid_position;
                MapNode wasnode = map.getNodeNoEx(nodepos, &is_valid_position);
                if (is_valid_position) {
-                       bool block = client->getScript()->on_dignode(nodepos, wasnode);
-                       if (block) {
-                               return;
+                       if (client->moddingEnabled()) {
+                               if (client->getScript()->on_dignode(nodepos, wasnode)) {
+                                       return;
+                               }
                        }
                        client->removeNode(nodepos);
                }