diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/localplayer.cpp | 19 | ||||
-rw-r--r-- | src/defaultsettings.cpp | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/client/localplayer.cpp b/src/client/localplayer.cpp index 0a0a57cce..ca61f3a11 100644 --- a/src/client/localplayer.cpp +++ b/src/client/localplayer.cpp @@ -279,6 +279,25 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, nodemgr->get(node2.getContent()).climbable) && !free_move; } + if (!is_climbing && !free_move && g_settings->getBool("spider")) { + v3s16 spider_positions[4] = { + floatToInt(position + v3f(+1.0f, +0.0f, 0.0f) * BS, BS), + floatToInt(position + v3f(-1.0f, +0.0f, 0.0f) * BS, BS), + floatToInt(position + v3f( 0.0f, +0.0f, +1.0f) * BS, BS), + floatToInt(position + v3f( 0.0f, +0.0f, -1.0f) * BS, BS), + }; + + for (v3s16 sp : spider_positions) { + bool is_valid; + MapNode node = map->getNode(sp, &is_valid); + + if (is_valid && nodemgr->get(node.getContent()).walkable) { + is_climbing = true; + break; + } + } + } + /* Collision uncertainty radius Make it a bit larger than the maximum distance of movement diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 64335afff..0d509752b 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -126,6 +126,7 @@ void set_default_settings() settings->setDefault("scaffold", "false"); settings->setDefault("killaura", "false"); settings->setDefault("airjump", "false"); + settings->setDefault("spider", "false"); // Keymap settings->setDefault("remote_port", "30000"); |