Quick workaround for split moves (disable handling).

https://hub.spigotmc.org/jira/browse/SPIGOT-1646
This commit is contained in:
asofold 2016-03-02 18:53:20 +01:00
parent d91a37256c
commit 3c3ae4b351
4 changed files with 16 additions and 2 deletions

View File

@ -167,6 +167,11 @@ public class MovingConfig extends ACheckConfig {
public final double yOnGround;
// General things.
/**
* If to allow splitting moves, due to player.getLocation reflecting
* soemthing else than from/to.
*/
public final boolean splitMoves;
public final boolean ignoreStance;
public final boolean tempKickIllegal;
public final boolean loadChunksOnJoin;
@ -277,6 +282,8 @@ public class MovingConfig extends ACheckConfig {
noFallyOnGround = config.getDouble(ConfPaths.MOVING_NOFALL_YONGROUND, Y_ON_GROUND_MIN, Y_ON_GROUND_MAX, yOnGround);
// TODO: Ignore the stance, once it is known that the server catches such.
AlmostBoolean refSplitMoves = config.getAlmostBoolean(ConfPaths.MOVING_SPLITMOVES, AlmostBoolean.MAYBE);
splitMoves = refSplitMoves == AlmostBoolean.MAYBE ? ServerVersion.compareMinecraftVersion("1.9") == -1 : refSplitMoves.decide();
AlmostBoolean refIgnoreStance = config.getAlmostBoolean(ConfPaths.MOVING_IGNORESTANCE, AlmostBoolean.MAYBE);
ignoreStance = refIgnoreStance == AlmostBoolean.MAYBE ? ServerVersion.compareMinecraftVersion("1.8") >= 0 : refIgnoreStance.decide();
tempKickIllegal = config.getBoolean(ConfPaths.MOVING_TEMPKICKILLEGAL);

View File

@ -414,10 +414,15 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
final Location loc = player.getLocation(moveInfo.useLoc);
final MoveData lastMove = data.moveData.getFirst();
// TODO: On pistons pulling the player back: -1.15 yDistance for split move 1 (untracked position > 0.5 yDistance!).
if (TrigUtil.isSamePos(from, loc)
if (
// Handling split moves has been disabled.
!cc.splitMoves ||
// The usual case: no micro move happened.
TrigUtil.isSamePos(from, loc)
// Special case / bug? TODO: Which/why, which version of MC/spigot?
|| lastMove.valid && TrigUtil.isSamePos(loc, lastMove.from.x, lastMove.from.y, lastMove.from.z)
// Could also be other envelopes (0.9 velocity upwards), too tedious to research.
//&& data.lastYDist < -SurvivalFly.GRAVITY_MIN && data.lastYDist > -SurvivalFly.GRAVITY_MAX - SurvivalFly.GRAVITY_MIN
//&& data.lastYDist < -SurvivalFly.GRAVITY_MIN && data.lastYDist > -SurvivalFly.GRAVITY_MAX - SurvivalFly.GRAVITY_MIN
) {
// Fire move from -> to
// (Special case: Location has not been updated last moving event.)

View File

@ -598,6 +598,7 @@ public abstract class ConfPaths {
public static final String MOVING_SURVIVALFLY_YSTEP = MOVING_SURVIVALFLY + "ystep";
// General.
public static final String MOVING_SPLITMOVES = MOVING + "splitmoves"; // Needs better categories...
public static final String MOVING_TEMPKICKILLEGAL = MOVING + "tempkickillegal";
public static final String MOVING_IGNORESTANCE = MOVING + "ignorestance";
// TODO: Might add a section for illegal move.

View File

@ -423,6 +423,7 @@ public class DefaultConfig extends ConfigFile {
set(ConfPaths.MOVING_VELOCITY_STRICTINVALIDATION, true);
// General.
set(ConfPaths.MOVING_SPLITMOVES, "default");
set(ConfPaths.MOVING_IGNORESTANCE, "default");
set(ConfPaths.MOVING_TEMPKICKILLEGAL, true);
set(ConfPaths.MOVING_LOADCHUNKS_JOIN, true);