Don't test block change activity before the extreme move check runs.

(+ only test activity, if the extreme move check was passed.)
This commit is contained in:
asofold 2017-01-08 16:17:21 +01:00
parent 6bcaef9057
commit 272aaf3063

View File

@ -661,8 +661,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
BounceType verticalBounce = BounceType.NO_BOUNCE;
// TODO: More adaptive margin / method (bounding boxes).
final boolean useBlockChangeTracker = cc.trackBlockMove && (cc.passableCheck || checkSf || checkCf)
&& blockChangeTracker.hasActivityShuffled(from.getWorld().getUID(), pFrom, pTo, 1.5625);
final boolean useBlockChangeTracker;
if (checkSf || checkCf) {
// Ensure we have a set-back set.
@ -689,6 +688,10 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
newTo = checkExtremeMove(player, pFrom, pTo, data, cc);
}
useBlockChangeTracker = newTo == null
&& cc.trackBlockMove && (cc.passableCheck || checkSf || checkCf)
&& blockChangeTracker.hasActivityShuffled(from.getWorld().getUID(), pFrom, pTo, 1.5625);
// Check jumping on things like slime blocks.
// Detect bounce type / use prepared bounce.
if (newTo == null) {
@ -738,6 +741,10 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
}
}
}
else {
// TODO: Might still allow block change tracker with only passable enabled.
useBlockChangeTracker = false;
}
// Check passable first to prevent set-back override.
// TODO: Redesign to set set-backs later (queue + invalidate).
@ -1771,7 +1778,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
final double damage = BridgeHealth.getDamage(event);
// NoFall bypass checks.
if (!data.noFallSkipAirCheck) {
// Cheat: let Minecraft gather and deal fall damage.
// Cheat: let Minecraft gather and deal fall damage.
/*
* TODO: data.noFallSkipAirCheck is used to skip checking in
* general, thus move into that block or not?