mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2025-03-02 10:31:25 +01:00
Set fall distance when a player leaves.
This commit is contained in:
parent
affeaecb34
commit
708fdd8a00
@ -22,8 +22,10 @@ import org.bukkit.event.player.PlayerBedLeaveEvent;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||
@ -36,9 +38,9 @@ import fr.neatmonster.nocheatplus.checks.combined.Combined;
|
||||
import fr.neatmonster.nocheatplus.checks.combined.CombinedData;
|
||||
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
|
||||
import fr.neatmonster.nocheatplus.players.Permissions;
|
||||
import fr.neatmonster.nocheatplus.utilities.BlockCache;
|
||||
import fr.neatmonster.nocheatplus.utilities.BlockProperties;
|
||||
import fr.neatmonster.nocheatplus.utilities.PlayerLocation;
|
||||
import fr.neatmonster.nocheatplus.utilities.BlockCache;
|
||||
|
||||
/*
|
||||
* M"""""`'"""`YM oo
|
||||
@ -693,4 +695,14 @@ public class MovingListener implements Listener {
|
||||
data.clearNoFallData();
|
||||
// Entity fall-distance should be reset elsewhere.
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerQuit(final PlayerQuitEvent event){
|
||||
noFall.onLeave(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onPlayerKick(final PlayerKickEvent event){
|
||||
noFall.onLeave(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
@ -151,6 +151,22 @@ public class NoFall extends Check {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Quit or kick: adjust fall distance if necessary.
|
||||
* @param player
|
||||
*/
|
||||
public void onLeave(final Player player) {
|
||||
final MovingData data = MovingData.getData(player);
|
||||
final float fallDistance = player.getFallDistance();
|
||||
if (data.noFallFallDistance - fallDistance > 0){
|
||||
// Might use tolerance, might log, might use method (compare: MovingListener.onEntityDamage).
|
||||
// Might consider triggering violations here as well.
|
||||
final float yDiff = (float) (data.noFallMaxY - player.getLocation().getY());
|
||||
final float maxDist = Math.max(yDiff, Math.max(data.noFallFallDistance, fallDistance));
|
||||
player.setFallDistance(maxDist);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<ParameterName, String> getParameterMap(final ViolationData violationData) {
|
||||
|
Loading…
Reference in New Issue
Block a user