mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-05-23 11:53:52 +00:00
fix: fix sprinting
This commit is contained in:
parent
b5111232aa
commit
6cba5705dd
3 changed files with 33 additions and 12 deletions
|
|
@ -274,11 +274,13 @@ void LocalPlayer::aiStep()
|
|||
if (changingDimensionDelay > 0) changingDimensionDelay--;
|
||||
bool wasJumping = input->jumping;
|
||||
float runTreshold = 0.8f;
|
||||
float sprintForward = input->sprintForward;
|
||||
|
||||
bool wasRunning = input->ya >= runTreshold;
|
||||
bool wasRunning = sprintForward >= runTreshold;
|
||||
//input->tick( dynamic_pointer_cast<Player>( shared_from_this() ) );
|
||||
// 4J-PB - make it a localplayer
|
||||
input->tick( this );
|
||||
sprintForward = input->sprintForward;
|
||||
if (isUsingItem())
|
||||
{
|
||||
input->xa *= 0.2f;
|
||||
|
|
@ -302,9 +304,20 @@ void LocalPlayer::aiStep()
|
|||
// world with low food, then reload it in creative.
|
||||
if(abilities.mayfly || isAllowedToFly() ) enoughFoodToSprint = true;
|
||||
|
||||
bool forwardEnoughToTriggerSprint = sprintForward >= runTreshold;
|
||||
bool forwardReturnedToDeadzone = sprintForward == 0.0f;
|
||||
bool forwardEnoughToContinueSprint = sprintForward >= runTreshold;
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
if (GetXboxPad() == 0 && input->usingKeyboardMovement)
|
||||
{
|
||||
forwardEnoughToContinueSprint = sprintForward > 0.0f;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
// Keyboard sprint: Ctrl held while moving forward
|
||||
if (GetXboxPad() == 0 && KMInput.IsKeyDown(VK_CONTROL) && input->ya > 0.0f &&
|
||||
if (GetXboxPad() == 0 && input->usingKeyboardMovement && KMInput.IsKeyDown(VK_CONTROL) && sprintForward > 0.0f &&
|
||||
enoughFoodToSprint && !isUsingItem() && !hasEffect(MobEffect::blindness) && onGround)
|
||||
{
|
||||
if (!isSprinting()) setSprinting(true);
|
||||
|
|
@ -314,7 +327,7 @@ void LocalPlayer::aiStep()
|
|||
// 4J - altered this slightly to make sure that the joypad returns to below returnTreshold in between registering two movements up to runThreshold
|
||||
if (onGround && !isSprinting() && enoughFoodToSprint && !isUsingItem() && !hasEffect(MobEffect::blindness))
|
||||
{
|
||||
if( !wasRunning && input->ya >= runTreshold )
|
||||
if( !wasRunning && forwardEnoughToTriggerSprint )
|
||||
{
|
||||
if (sprintTriggerTime == 0)
|
||||
{
|
||||
|
|
@ -331,7 +344,7 @@ void LocalPlayer::aiStep()
|
|||
}
|
||||
}
|
||||
}
|
||||
else if( ( sprintTriggerTime > 0 ) && ( input->ya == 0.0f ) ) // ya of 0.0f here signifies that we have returned to the deadzone
|
||||
else if( ( sprintTriggerTime > 0 ) && forwardReturnedToDeadzone ) // zero sprintForward here signifies that we have returned to the deadzone
|
||||
{
|
||||
sprintTriggerRegisteredReturn = true;
|
||||
}
|
||||
|
|
@ -339,7 +352,7 @@ void LocalPlayer::aiStep()
|
|||
if (isSneaking()) sprintTriggerTime = 0;
|
||||
// 4J-PB - try not stopping sprint on collision
|
||||
//if (isSprinting() && (input->ya < runTreshold || horizontalCollision || !enoughFoodToSprint))
|
||||
if (isSprinting() && (input->ya < runTreshold || !enoughFoodToSprint))
|
||||
if (isSprinting() && (!forwardEnoughToContinueSprint || !enoughFoodToSprint || isSneaking() || isUsingItem()))
|
||||
{
|
||||
setSprinting(false);
|
||||
}
|
||||
|
|
@ -1622,4 +1635,3 @@ void LocalPlayer::SetPlayerAdditionalModelParts(vector<ModelPart *>pAdditionalMo
|
|||
{
|
||||
m_pAdditionalModelParts=pAdditionalModelParts;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue