Merge pull request #3640 from scorbett123/fixWaterJump

Fix for infinite loop in water
This commit is contained in:
Leijurv
2022-10-04 13:04:04 -07:00
committed by GitHub
2 changed files with 3 additions and 2 deletions

View File

@@ -123,7 +123,7 @@ public abstract class Movement implements IMovement, MovementHelper {
public MovementStatus update() {
ctx.player().getAbilities().flying = false;
currentState = updateState(currentState);
if (MovementHelper.isLiquid(ctx, ctx.playerFeet())) {
if (MovementHelper.isLiquid(ctx, ctx.playerFeet()) && ctx.player().position().y < dest.y + 0.6) {
currentState.setInput(Input.JUMP, true);
}
if (ctx.player().isInWall()) {

View File

@@ -70,7 +70,7 @@ public class MovementTraverse extends Movement {
@Override
protected Set<BetterBlockPos> calculateValidPositions() {
return ImmutableSet.of(src, dest);
return ImmutableSet.of(src, dest); // src.above means that we don't get caught in an infinite loop in water
}
public static double cost(CalculationContext context, int x, int y, int z, int destX, int destZ) {
@@ -237,6 +237,7 @@ public class MovementTraverse extends Movement {
if (feet.getY() != dest.getY() && !ladder) {
logDebug("Wrong Y coordinate");
if (feet.getY() < dest.getY()) {
System.out.println("In movement traverse");
return state.setInput(Input.JUMP, true);
}
return state;