Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cc.funkemunky.anticheat.impl.checks.combat;
- import cc.funkemunky.anticheat.api.checks.CancelType;
- import cc.funkemunky.anticheat.api.checks.Check;
- import cc.funkemunky.anticheat.api.checks.CheckInfo;
- import cc.funkemunky.anticheat.api.checks.CheckType;
- import cc.funkemunky.anticheat.api.utils.CustomLocation;
- import cc.funkemunky.anticheat.api.utils.Packets;
- import cc.funkemunky.api.tinyprotocol.api.Packet;
- import cc.funkemunky.api.utils.BoundingBox;
- import cc.funkemunky.api.utils.Init;
- import cc.funkemunky.api.utils.MiscUtils;
- import lombok.val;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.event.Event;
- import org.bukkit.util.Vector;
- import java.util.stream.Collectors;
- @CheckInfo(name = "Reach", type = CheckType.REACH, cancelType = CancelType.COMBAT, maxVL = 50)
- @Init
- @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})
- public class Reach extends Check {
- private int vl;
- @Override
- public void onPacket(Object packet, String packetType, long timeStamp) {
- if(getData().getLastAttack().hasNotPassed(0) && getData().getTarget() != null && MiscUtils.entityDimensions.containsKey(getData().getTarget().getType())) {
- val move = getData().getMovementProcessor();
- val pastLocation = getData().getEntityPastLocation().getEstimatedLocation(getData().getTransPing(), 135L + (getData().getPing() - getData().getLastPing())).stream().map(loc -> getHitBox(getData().getTarget(), loc)).collect(Collectors.toList());
- val vecs = pastLocation.stream().map(BoundingBox::getMinimum).collect(Collectors.toList());
- vecs.addAll( pastLocation.stream().map(BoundingBox::getMaximum).collect(Collectors.toList()));
- val distance = (float) vecs.stream().mapToDouble(vec -> vec.distance(move.getTo().toVector())).min().orElse(0);
- if(distance > 3.45) {
- if(vl++ > 10) {
- flag("distance=" + distance + " ping=" + getData().getTransPing(), true, true);
- }
- } else vl-= vl > 0 ? 1 : 0;
- }
- }
- @Override
- public void onBukkitEvent(Event event) {
- }
- private BoundingBox getHitBox(LivingEntity entity, CustomLocation loc) {
- val bounds = MiscUtils.entityDimensions.getOrDefault(entity.getType(), new Vector(1,1,1));
- return new BoundingBox(loc.toVector(), loc.toVector()).grow((float) bounds.getX(), 0, (float) bounds.getZ()).add(0,0,0,0, (float) bounds.getY(), 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment