1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Disable vertical movement when both jump and sneak keys are pressed (#13426)

This commit is contained in:
Zemtzov7 2023-05-18 23:30:21 +05:00 committed by GitHub
parent 15fb4cab15
commit 35112f2453
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -573,7 +573,8 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
} }
} }
if (control.sneak) { if (control.sneak && !control.jump) {
// Descend player in freemove mode, liquids and climbable nodes by sneak key, only if jump key is released
if (free_move) { if (free_move) {
// In free movement mode, sneak descends // In free movement mode, sneak descends
if (fast_move && (control.aux1 || always_fly_fast)) if (fast_move && (control.aux1 || always_fly_fast))
@ -606,6 +607,8 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
if (control.jump) { if (control.jump) {
if (free_move) { if (free_move) {
if (!control.sneak) {
// Don't fly up if sneak key is pressed
if (player_settings.aux1_descends || always_fly_fast) { if (player_settings.aux1_descends || always_fly_fast) {
if (fast_move) if (fast_move)
speedV.Y = movement_speed_fast; speedV.Y = movement_speed_fast;
@ -617,6 +620,7 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
else else
speedV.Y = movement_speed_walk; speedV.Y = movement_speed_walk;
} }
}
} else if (m_can_jump) { } else if (m_can_jump) {
/* /*
NOTE: The d value in move() affects jump height by NOTE: The d value in move() affects jump height by
@ -629,13 +633,13 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
setSpeed(speedJ); setSpeed(speedJ);
m_client->getEventManager()->put(new SimpleTriggerEvent(MtEvent::PLAYER_JUMP)); m_client->getEventManager()->put(new SimpleTriggerEvent(MtEvent::PLAYER_JUMP));
} }
} else if (in_liquid && !m_disable_jump) { } else if (in_liquid && !m_disable_jump && !control.sneak) {
if (fast_climb) if (fast_climb)
speedV.Y = movement_speed_fast; speedV.Y = movement_speed_fast;
else else
speedV.Y = movement_speed_walk; speedV.Y = movement_speed_walk;
swimming_vertical = true; swimming_vertical = true;
} else if (is_climbing && !m_disable_jump) { } else if (is_climbing && !m_disable_jump && !control.sneak) {
if (fast_climb) if (fast_climb)
speedV.Y = movement_speed_fast; speedV.Y = movement_speed_fast;
else else