Remove the "bedstep" workaround in favor of a configurable step height.

This commit is contained in:
asofold 2015-08-09 16:17:43 +02:00
parent c9df8238f7
commit 56d32c4f3e
4 changed files with 18 additions and 15 deletions

View File

@ -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);

View File

@ -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.

View File

@ -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";
}

View File

@ -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.