diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java index 507208ce..bc2dd42b 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Direction.java @@ -64,7 +64,15 @@ public class Direction extends Check { // the center of the target entity. If the line of sight is more too far off, "off" will be bigger than 0. final Location loc = player.getLocation(); final Vector direction = player.getEyeLocation().getDirection(); - final double off = CheckUtils.directionCheck(loc, player.getEyeHeight(), direction, dLoc.getX(), dLoc.getY() + height / 2D, dLoc.getZ(), width, height, CheckUtils.DIRECTION_PRECISION); + + final double off; + if (cc.directionStrict){ + off = CheckUtils.combinedDirectionCheck(loc, player.getEyeHeight(), direction, dLoc.getX(), dLoc.getY() + height / 2D, dLoc.getZ(), width, height, CheckUtils.DIRECTION_PRECISION, 80.0); + } + else{ + // Also take into account the angle. + off = CheckUtils.directionCheck(loc, player.getEyeHeight(), direction, dLoc.getX(), dLoc.getY() + height / 2D, dLoc.getZ(), width, height, CheckUtils.DIRECTION_PRECISION); + } if (off > 0.1) { // Player failed the check. Let's try to guess how far he was from looking directly to the entity... diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightConfig.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightConfig.java index d9b45fbc..fb50210a 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightConfig.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/FightConfig.java @@ -73,6 +73,7 @@ public class FightConfig extends ACheckConfig { public final ActionList criticalActions; public final boolean directionCheck; + public final boolean directionStrict; public final long directionPenalty; public final ActionList directionActions; @@ -134,6 +135,7 @@ public class FightConfig extends ACheckConfig { criticalActions = data.getOptimizedActionList(ConfPaths.FIGHT_CRITICAL_ACTIONS, Permissions.FIGHT_CRITICAL); directionCheck = data.getBoolean(ConfPaths.FIGHT_DIRECTION_CHECK); + directionStrict = data.getBoolean(ConfPaths.FIGHT_DIRECTION_STRICT); directionPenalty = data.getLong(ConfPaths.FIGHT_DIRECTION_PENALTY); directionActions = data.getOptimizedActionList(ConfPaths.FIGHT_DIRECTION_ACTIONS, Permissions.FIGHT_DIRECTION); diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java index 7d154fbb..f6c7d4c6 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java @@ -390,6 +390,7 @@ public abstract class ConfPaths { private static final String FIGHT_DIRECTION = FIGHT + "direction."; public static final String FIGHT_DIRECTION_CHECK = FIGHT_DIRECTION + "active"; + public static final String FIGHT_DIRECTION_STRICT = FIGHT_DIRECTION + "strict"; public static final String FIGHT_DIRECTION_PENALTY = FIGHT_DIRECTION + "penalty"; public static final String FIGHT_DIRECTION_ACTIONS = FIGHT_DIRECTION + "actions"; diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java index 6f4dce72..01de2e6a 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java @@ -305,6 +305,7 @@ public class DefaultConfig extends ConfigFile { set(ConfPaths.FIGHT_CRITICAL_ACTIONS, "cancel vl>50 log:critical:0:5:cif cancel"); set(ConfPaths.FIGHT_DIRECTION_CHECK, true); + set(ConfPaths.FIGHT_DIRECTION_STRICT, true); set(ConfPaths.FIGHT_DIRECTION_PENALTY, 500L); set(ConfPaths.FIGHT_DIRECTION_ACTIONS, "cancel vl>5 log:fdirection:3:5:f cancel vl>20 log:fdirection:0:5:if cancel vl>50 log:fdirection:0:5:cif cancel");