diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/MovingConfig.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/MovingConfig.java index 62d3ef48..a905ab0c 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/MovingConfig.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/MovingConfig.java @@ -3,6 +3,7 @@ package fr.neatmonster.nocheatplus.checks.moving; import java.util.HashMap; import java.util.Map; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; @@ -133,7 +134,7 @@ public class MovingConfig extends ACheckConfig { public final boolean survivalFlyAccountingV; public final boolean sfSetBackPolicyVoid; public final boolean sfSetBackPolicyFallDamage; - public final boolean sfBedStep; + public final double sfStepHeight; public final long survivalFlyVLFreeze; public final ActionList survivalFlyActions; @@ -232,11 +233,18 @@ public class MovingConfig extends ACheckConfig { survivalFlyAccountingV = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_EXTENDED_VACC); sfSetBackPolicyFallDamage = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_SETBACKPOLICY_FALLDAMAGE); sfSetBackPolicyVoid = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_SETBACKPOLICY_VOIDTOVOID); - AlmostBoolean bedStep = config.getAlmostBoolean(ConfPaths.MOVING_SURVIVALFLY_BEDSTEP, AlmostBoolean.MAYBE); - if (bedStep == AlmostBoolean.MAYBE) { - sfBedStep = ServerVersion.select("1.8", false, true, true, true); + final double sfStepHeight = config.getDouble(ConfPaths.MOVING_SURVIVALFLY_STEPHEIGHT, Double.MAX_VALUE); + if (sfStepHeight == Double.MAX_VALUE) { + final String ref; + if (Bukkit.getVersion().toLowerCase().indexOf("spigot") != -1) { + // Assume 1.8 clients being supported. + ref = "1.7.10"; + } else { + ref = "1.8"; + } + this.sfStepHeight = ServerVersion.select(ref, 0.5, 0.6, 0.6, 0.5).doubleValue(); } else { - sfBedStep = bedStep.decide(); + this.sfStepHeight = sfStepHeight; } survivalFlyVLFreeze = config.getLong(ConfPaths.MOVING_SURVIVALFLY_VLFREEZE, 2000L); survivalFlyActions = config.getOptimizedActionList(ConfPaths.MOVING_SURVIVALFLY_ACTIONS, Permissions.MOVING_SURVIVALFLY); diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/SurvivalFly.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/SurvivalFly.java index d4311208..4cf253a5 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/SurvivalFly.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/moving/SurvivalFly.java @@ -6,7 +6,6 @@ import java.util.Locale; import java.util.Set; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; @@ -392,19 +391,13 @@ public class SurvivalFly extends Check { // Simple-step blocker. // TODO: Complex step blocker: distance to set-back + low jump + accounting info if ((resetFrom || data.noFallAssumeGround) && resetTo && vDistanceAboveLimit <= 0D && - yDistance > MovingUtil.estimateJumpLiftOff(player, data, 0.1)) { + yDistance > cc.sfStepHeight && yDistance > MovingUtil.estimateJumpLiftOff(player, data, 0.1)) { boolean step = true; // Exclude a lost-ground case. if (data.noFallAssumeGround && data.sfLastYDist != Double.MAX_VALUE && data.sfLastYDist <= 0.0 && yDistance > 0.0 && yDistance + Math.abs(data.sfLastYDist) <= 2.0 * (MovingUtil.estimateJumpLiftOff(player, data, 0.1))) { step = false; } - // Exclude 1.8 beds. - // TODO: Add feature flag (bedstep) and check here. - // TODO: Quick check the distance and offset parameters (!). - if (yDistance <= 0.5625 && cc.sfBedStep && to.standsOnBlock(BlockProperties.getId(Material.BED_BLOCK))) { - step = false; - } // Check bypass permission last. if (step && !player.hasPermission(Permissions.MOVING_SURVIVALFLY_STEP)) { vDistanceAboveLimit = Math.max(vDistanceAboveLimit, Math.abs(from.isOnClimbable() ? yDistance : yDistance - MovingUtil.estimateJumpLiftOff(player, data, 0.1) )); // Could adjust if on ladders etc. diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java index 59d2917a..c4664cf7 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/ConfPaths.java @@ -566,7 +566,7 @@ public abstract class ConfPaths { private static final String MOVING_SURVIVALFLY_SETBACKPOLICY = MOVING_SURVIVALFLY + "setbackpolicy."; public static final String MOVING_SURVIVALFLY_SETBACKPOLICY_FALLDAMAGE = MOVING_SURVIVALFLY_SETBACKPOLICY + "falldamage"; public static final String MOVING_SURVIVALFLY_SETBACKPOLICY_VOIDTOVOID = MOVING_SURVIVALFLY_SETBACKPOLICY + "voidtovoid"; - public static final String MOVING_SURVIVALFLY_BEDSTEP = MOVING_SURVIVALFLY + "bedstep"; + public static final String MOVING_SURVIVALFLY_STEPHEIGHT = MOVING_SURVIVALFLY + "stepheight"; public static final String MOVING_SURVIVALFLY_VLFREEZE = MOVING_SURVIVALFLY + "vlfreeze"; public static final String MOVING_SURVIVALFLY_ACTIONS = MOVING_SURVIVALFLY + "actions"; @@ -710,5 +710,7 @@ public abstract class ConfPaths { public static final String NET_FLYINGFREQUENCY_MAXPACKETS = "checks.net.flyingfrequency.maxpackets"; @Deprecated public static final String COMPATIBILITY_BUKKITONLY = "compatibility.bukkitapionly"; + @Deprecated + public static final String MOVING_SURVIVALFLY_BEDSTEP ="checks.moving.survivalfly.bedstep"; } diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java index 8396f51d..b84dde57 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/config/DefaultConfig.java @@ -400,7 +400,7 @@ public class DefaultConfig extends ConfigFile { set(ConfPaths.MOVING_SURVIVALFLY_CHECK, true); // set(ConfPaths.MOVING_SURVIVALFLY_EXTENDED_HACC, false); set(ConfPaths.MOVING_SURVIVALFLY_EXTENDED_VACC, true); - set(ConfPaths.MOVING_SURVIVALFLY_BEDSTEP, "default"); + set(ConfPaths.MOVING_SURVIVALFLY_STEPHEIGHT, "default"); set(ConfPaths.MOVING_SURVIVALFLY_SETBACKPOLICY_FALLDAMAGE, true); set(ConfPaths.MOVING_SURVIVALFLY_SETBACKPOLICY_VOIDTOVOID, true); // The settings aren't enabled by default. Simply write them yourself in the configuration file.