[BLIND] Attempt to fix double-jump issues.

This commit is contained in:
asofold 2015-05-24 22:05:05 +02:00
parent 3cf6943efb
commit d6ec0c332a

View File

@ -32,6 +32,7 @@ import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.event.player.PlayerToggleSprintEvent;
import org.bukkit.event.player.PlayerVelocityEvent;
@ -1498,6 +1499,27 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = false)
public void onToggleFlight(final PlayerToggleFlightEvent event) {
// (ignoreCancelled = false: we track the bit of vertical extra momentum/thing).
final Player player = event.getPlayer();
if (player.isFlying() || event.isFlying() && !event.isCancelled()) {
return;
}
final MovingData data = MovingData.getData(player);
final MovingConfig cc = MovingConfig.getConfig(player);
// TODO: data.isVelocityJumpPhase() might be too harsh, but prevents too easy abuse.
if (!MovingUtil.shouldCheckSurvivalFly(player, data, cc) || data.isVelocityJumpPhase() ||
BlockProperties.isOnGroundOrResetCond(player, player.getLocation(useLoc), cc.yOnGround)) {
useLoc.setWorld(null);
return;
}
useLoc.setWorld(null);
// TODO: Configurable.
// TODO: Confine to minimum activation ticks.
data.addVelocity(player, cc, 0.0, 0.0, 0.3);
}
@Override
public void onTick(final int tick, final long timeLast) {
final List<String> rem = new ArrayList<String>(hoverTicks.size()); // Pessimistic.