diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java index 9522c078..08dbd0eb 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java @@ -166,7 +166,10 @@ public class Direction extends Check { public boolean loopFinish(final Player player, final Location loc, final Entity damaged, final DirectionContext context, final boolean forceViolation, final FightData data, final FightConfig cc) { boolean cancel = false; final double off = forceViolation && context.minViolation != Double.MAX_VALUE ? context.minViolation : context.minResult; - if (off > 0.1) { + if (off == Double.MAX_VALUE) { + return false; + } + else if (off > 0.1) { // Add the overall violation level of the check. data.directionVL += context.minViolation; @@ -178,7 +181,8 @@ public class Direction extends Check { // Deal an attack penalty time. data.attackPenalty.applyPenalty(cc.directionPenalty); } - } else { + } + else { // Reward the player by lowering their violation level. data.directionVL *= 0.8D; } diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightListener.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightListener.java index 5ff5718f..6d3ae462 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightListener.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightListener.java @@ -251,6 +251,7 @@ public class FightListener extends CheckListener implements JoinLeaveListener{ reachPassed = true; } } + // TODO: For efficiency one could omit checking at all if reach is failed all the time. if (directionEnabled && (reachPassed || !directionPassed)) { if (direction.loopCheck(player, damagedLoc, damagedPlayer, entry, directionContext, data, cc)) { thisPassed = false; diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Reach.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Reach.java index de50d3de..1e277840 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Reach.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Reach.java @@ -215,6 +215,9 @@ public class Reach extends Check { */ public boolean loopFinish(final Player player, final Location pLoc, final Entity damaged, final ReachContext context, final boolean forceViolation, final FightData data, final FightConfig cc) { final double lenpRel = forceViolation && context.minViolation != Double.MAX_VALUE ? context.minViolation : context.minResult; + if (lenpRel == Double.MAX_VALUE) { + return false; + } double violation = lenpRel - context.distanceLimit; boolean cancel = false; if (violation > 0) {