aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryou <ovvv@web.de>2017-05-20 20:43:13 +0200
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-05-20 20:43:13 +0200
commit358074b2960b369dfd248bd31e08db93e114a4aa (patch)
tree2f09f3cc09e1131a9d658d19d14b4e6048f266a3 /src
parenta2bb776ea81715a7b9eae4b2ea8aca032d42fb5e (diff)
downloadminetest-358074b2960b369dfd248bd31e08db93e114a4aa.tar.gz
minetest-358074b2960b369dfd248bd31e08db93e114a4aa.tar.bz2
minetest-358074b2960b369dfd248bd31e08db93e114a4aa.zip
Fix instant digging (#5785)
Use runData.dig_time_complete instead of params.time to find out whether it's instant digging. runData.dig_time_complete is set to something very big if the node can't be dug, whereas param.time is 0 when digging is impossible or it's instant digging. So not using param.time fixes #5728.
Diffstat (limited to 'src')
-rw-r--r--src/game.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/game.cpp b/src/game.cpp
index f967e349c..5d4edb3d0 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -3903,16 +3903,6 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos,
params = getDigParams(nodedef_manager->get(n).groups, tp);
}
- if (!runData.digging) {
- infostream << "Started digging" << std::endl;
- runData.dig_instantly = params.time == 0;
- if (client->moddingEnabled() && client->getScript()->on_punchnode(nodepos, n))
- return;
- client->interact(0, pointed);
- runData.digging = true;
- runData.ldown_for_dig = true;
- }
-
if (!params.diggable) {
// I guess nobody will wait for this long
runData.dig_time_complete = 10000000.0;
@@ -3927,6 +3917,16 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos,
}
}
+ if (!runData.digging) {
+ infostream << "Started digging" << std::endl;
+ runData.dig_instantly = runData.dig_time_complete == 0;
+ if (client->moddingEnabled() && client->getScript()->on_punchnode(nodepos, n))
+ return;
+ client->interact(0, pointed);
+ runData.digging = true;
+ runData.ldown_for_dig = true;
+ }
+
if (!runData.dig_instantly) {
runData.dig_index = (float)crack_animation_length
* runData.dig_time