funkemunky

Reach check ROCK

Apr 25th, 2019
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.62 KB | None | 0 0
  1. package cc.funkemunky.anticheat.impl.checks.combat;
  2.  
  3. import cc.funkemunky.anticheat.api.checks.CancelType;
  4. import cc.funkemunky.anticheat.api.checks.Check;
  5. import cc.funkemunky.anticheat.api.checks.CheckInfo;
  6. import cc.funkemunky.anticheat.api.checks.CheckType;
  7. import cc.funkemunky.anticheat.api.utils.CustomLocation;
  8. import cc.funkemunky.anticheat.api.utils.Packets;
  9. import cc.funkemunky.api.tinyprotocol.api.Packet;
  10. import cc.funkemunky.api.utils.BoundingBox;
  11. import cc.funkemunky.api.utils.Init;
  12. import cc.funkemunky.api.utils.MiscUtils;
  13. import lombok.val;
  14. import org.bukkit.entity.LivingEntity;
  15. import org.bukkit.event.Event;
  16. import org.bukkit.util.Vector;
  17.  
  18. import java.util.stream.Collectors;
  19.  
  20. @CheckInfo(name = "Reach", type = CheckType.REACH, cancelType = CancelType.COMBAT, maxVL = 50)
  21. @Init
  22. @Packets(packets = {Packet.Client.POSITION_LOOK, Packet.Client.POSITION, Packet.Client.LOOK, Packet.Client.FLYING, Packet.Client.LEGACY_LOOK, Packet.Client.LEGACY_POSITION, Packet.Client.LEGACY_POSITION_LOOK})
  23. public class Reach extends Check {
  24.  
  25.     private int vl;
  26.  
  27.     @Override
  28.     public void onPacket(Object packet, String packetType, long timeStamp) {
  29.         if(getData().getLastAttack().hasNotPassed(0) && getData().getTarget() != null && MiscUtils.entityDimensions.containsKey(getData().getTarget().getType())) {
  30.             val move = getData().getMovementProcessor();
  31.  
  32.             val pastLocation = getData().getEntityPastLocation().getEstimatedLocation(getData().getTransPing(), 135L + (getData().getPing() - getData().getLastPing())).stream().map(loc -> getHitBox(getData().getTarget(), loc)).collect(Collectors.toList());
  33.  
  34.             val vecs = pastLocation.stream().map(BoundingBox::getMinimum).collect(Collectors.toList());
  35.  
  36.             vecs.addAll( pastLocation.stream().map(BoundingBox::getMaximum).collect(Collectors.toList()));
  37.  
  38.             val distance = (float) vecs.stream().mapToDouble(vec -> vec.distance(move.getTo().toVector())).min().orElse(0);
  39.  
  40.             if(distance > 3.45) {
  41.                 if(vl++ > 10) {
  42.                     flag("distance=" + distance + " ping=" + getData().getTransPing(), true, true);
  43.                 }
  44.             } else vl-= vl > 0 ? 1 : 0;
  45.         }
  46.     }
  47.  
  48.     @Override
  49.     public void onBukkitEvent(Event event) {
  50.  
  51.     }
  52.  
  53.     private BoundingBox getHitBox(LivingEntity entity, CustomLocation loc) {
  54.         val bounds = MiscUtils.entityDimensions.getOrDefault(entity.getType(), new Vector(1,1,1));
  55.  
  56.         return new BoundingBox(loc.toVector(), loc.toVector()).grow((float) bounds.getX(), 0, (float) bounds.getZ()).add(0,0,0,0, (float) bounds.getY(), 0);
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment