Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package anticheat.checks.movement;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.event.Event;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.player.PlayerMoveEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.potion.PotionEffectType;
- import anticheat.Exile;
- import anticheat.detections.Checks;
- import anticheat.detections.ChecksListener;
- import anticheat.detections.ChecksType;
- import anticheat.events.PacketedMovementEvent;
- import anticheat.user.User;
- import anticheat.utils.Color;
- import anticheat.utils.MathUtils;
- import anticheat.utils.MiscUtils;
- import anticheat.utils.PlayerUtils;
- @ChecksListener(events = { PlayerMoveEvent.class, PacketedMovementEvent.class, EntityDamageByEntityEvent.class, PlayerQuitEvent.class })
- public class Speed extends Checks {
- private Map<UUID, Integer> verbose;
- public Speed() {
- super("Speed", ChecksType.MOVEMENT, Exile.getAC(), 3, true, true);
- this.verbose = new HashMap<UUID, Integer>();
- }
- @Override
- protected void onEvent(Event event) {
- if (!this.getState()) {
- return;
- }
- if (event instanceof PlayerMoveEvent) {
- PlayerMoveEvent e = (PlayerMoveEvent) event;
- Player player = e.getPlayer();
- User user = Exile.getAC().getUserManager().getUser(player.getUniqueId());
- double vector = MathUtils.offset(MathUtils.getHorizontalVector(e.getFrom().toVector()),
- MathUtils.getHorizontalVector(e.getTo().toVector()));
- double maxSpeed = 0;
- int speed = PlayerUtils.getPotionEffectLevel(player, PotionEffectType.SPEED);
- if(player.isFlying()) {
- return;
- }
- Location below = player.getLocation().clone().subtract(0.0D, 1.0D, 0.0D);
- int verbose = this.verbose.getOrDefault(player.getUniqueId(), 0);
- if(user.getGroundTicks() > 0) {
- if(user.getGroundTicks() == 1) {
- if(speed == 0) {
- maxSpeed = 0.52;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.586;
- }
- } else if(speed == 1) {
- maxSpeed = 0.57;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.63;
- }
- } else if(speed == 2) {
- maxSpeed = 0.612;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.687;
- }
- } else if(speed == 3) {
- maxSpeed = 0.7;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.75;
- }
- } else if(speed == 4) {
- maxSpeed = 0.78;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.83;
- }
- } else if(speed >= 5) {
- maxSpeed = 0.878 + ((speed - 5) * 0.9);
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.93 + ((speed - 5) * 0.9);
- }
- }
- } else if(user.getGroundTicks() == 2) {
- if(speed == 0) {
- maxSpeed = 0.54;
- } else if(speed == 1) {
- maxSpeed = 0.572;
- } else if(speed == 2) {
- maxSpeed = 0.62;
- } else if(speed == 3) {
- maxSpeed = 0.715;
- } else if(speed == 4) {
- maxSpeed = 0.765;
- } else if(speed >= 5) {
- maxSpeed = 0.812 + ((speed - 5) * 0.584);
- }
- } else if(user.getGroundTicks() == 3) {
- if(speed == 0) {
- maxSpeed = 0.498;
- } else if(speed == 1) {
- maxSpeed = 0.56;
- } else if(speed == 2) {
- maxSpeed = 0.61;
- } else if(speed == 3) {
- maxSpeed = 0.7118;
- } else if(speed == 4) {
- maxSpeed = 0.761;
- } else if(speed >= 5) {
- maxSpeed = 0.816 + ((speed - 5) * 0.59);
- }
- } else if(user.getGroundTicks() == 4) {
- if(speed == 0) {
- maxSpeed = 0.491;
- } else if(speed == 1) {
- maxSpeed = 0.5484;
- } else if(speed == 2) {
- maxSpeed = 0.601;
- } else if(speed == 3) {
- maxSpeed = 0.71001;
- } else if(speed == 4) {
- maxSpeed = 0.7621;
- } else if(speed >= 5) {
- maxSpeed = 0.818 + ((speed - 5) * 0.59);
- }
- } else if(user.getGroundTicks() >= 5) {
- if(speed == 0) {
- maxSpeed = 0.4901;
- if(MiscUtils.isStair(below.getBlock())) {
- maxSpeed = 0.562;
- }
- } else if(speed == 1) {
- maxSpeed = 0.5401;
- if(MiscUtils.isStair(below.getBlock())) {
- maxSpeed = 0.562;
- }
- } else if(speed == 2) {
- maxSpeed = 0.6;
- } else if(speed == 3) {
- maxSpeed = 0.71;
- } else if(speed == 4) {
- maxSpeed = 0.762;
- } else if(speed >= 5) {
- maxSpeed = 0.82 + ((speed - 5) * 0.6);
- }
- }
- } else {
- if(user.getAirTicks() == 1) {
- if(speed == 0) {
- maxSpeed = 0.352845;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.381;
- }
- } else if(speed == 1) {
- maxSpeed = 0.37;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.397;
- }
- } else if(speed == 2) {
- maxSpeed = 0.385;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.413;
- }
- } else if(speed == 3) {
- maxSpeed = 0.416;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.441;
- }
- } else if(speed == 4) {
- maxSpeed = 0.432;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.462;
- }
- } else if(speed >= 5) {
- maxSpeed = 0.454 + ((speed - 5) * 0.5);
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.491 + ((speed - 5) * 0.5);
- }
- }
- } else if(user.getAirTicks() == 2) {
- if(speed == 0) {
- maxSpeed = 0.347;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.68;
- }
- } else if(speed == 1) {
- maxSpeed = 0.362;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.72;
- }
- } else if(speed == 2) {
- maxSpeed = 0.375;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.8;
- }
- } else if(speed == 3) {
- maxSpeed = 0.404;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.86;
- }
- } else if(speed == 4) {
- maxSpeed = 0.419;
- if(user.getBlockTicks() > 0) {
- maxSpeed = 0.92;
- }
- } else if(speed >= 5) {
- maxSpeed = 0.44 + ((speed - 5) * 0.5);
- if(user.getBlockTicks() > 0) {
- maxSpeed = 1.0 + ((speed - 5) * 0.5);
- }
- }
- } else if(user.getAirTicks() == 3) {
- if(speed == 0) {
- maxSpeed = 0.341;
- } else if(speed == 1) {
- maxSpeed = 0.356;
- } else if(speed == 2) {
- maxSpeed = 0.37;
- } else if(speed == 3) {
- maxSpeed = 0.395;
- } else if(speed == 4) {
- maxSpeed = 0.408;
- } else if(speed >= 5) {
- maxSpeed = 0.429 + ((speed - 5) * 0.38);
- }
- } else if(user.getAirTicks() == 4) {
- if(speed == 0) {
- maxSpeed = 0.34;
- } else if(speed == 1) {
- maxSpeed = 0.349;
- } else if(speed == 2) {
- maxSpeed = 0.359;
- } else if(speed == 3) {
- maxSpeed = 0.385;
- } else if(speed == 4) {
- maxSpeed = 0.396;
- } else if(speed >= 5) {
- maxSpeed = 0.414 + ((speed - 5) * 0.425);
- }
- } else if(user.getAirTicks() >= 5) {
- if(speed == 0) {
- maxSpeed = 0.613;
- } else if(speed == 1) {
- maxSpeed = 0.645;
- } else if(speed == 2) {
- maxSpeed = 0.679;
- } else if(speed == 3) {
- maxSpeed = 0.74;
- } else if(speed == 4) {
- maxSpeed = 0.78;
- } else if(speed >= 5) {
- maxSpeed = 0.805 + ((speed - 5) * 0.4);
- }
- }
- if(user.getIceTicks() > 0) {
- maxSpeed+= 0.2;
- }
- if(PlayerUtils.isInWater(player) ) {
- maxSpeed -= 0.1;
- }
- }
- if(vector > maxSpeed) {
- debug("Verbose (+1): " + verbose + " Speed: " + vector + " MaxSpeed: " + maxSpeed);
- verbose+= 2;
- } else {
- verbose = verbose > 0 ? verbose - 1 : verbose;
- }
- if(verbose > 7) {
- user.setVL(this, user.getVL(this) + 1);
- verbose = 0;
- alert(player, Color.Gray + "Reason: " + Color.White + "Kanker");
- }
- this.verbose.put(player.getUniqueId(), verbose);
- }
- if (event instanceof PlayerQuitEvent) {
- PlayerQuitEvent e = (PlayerQuitEvent) event;
- if(verbose.containsKey(e.getPlayer().getUniqueId())) {
- verbose.remove(e.getPlayer().getUniqueId());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment