From 61bc88b64ffdd3d99032fcbab28c732995c3460d Mon Sep 17 00:00:00 2001 From: asofold Date: Fri, 8 Mar 2013 23:24:51 +0100 Subject: [PATCH] Add "strict" method to fight.direction. Set as default, the "strict" option will also check the angle between the viewing direction and the direction towards the target. This might not stay the default method, but it does help against auras in close combat. --- .../nocheatplus/checks/fight/Direction.java | 10 +++++++++- .../nocheatplus/checks/fight/FightConfig.java | 2 ++ .../fr/neatmonster/nocheatplus/config/ConfPaths.java | 1 + .../neatmonster/nocheatplus/config/DefaultConfig.java | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) 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");