Updating Phase check

This commit is contained in:
Dawson
2022-09-30 16:17:24 -04:00
parent 64887c73a2
commit 99ac5ec942
6 changed files with 59 additions and 13 deletions
@@ -3,14 +3,11 @@ package dev.brighten.ac.check.impl.movement;
import dev.brighten.ac.api.check.CheckType;
import dev.brighten.ac.check.Check;
import dev.brighten.ac.check.CheckData;
import dev.brighten.ac.check.WTimedAction;
import dev.brighten.ac.check.WCancellable;
import dev.brighten.ac.data.APlayer;
import dev.brighten.ac.packet.ProtocolVersion;
import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying;
import dev.brighten.ac.utils.Helper;
import dev.brighten.ac.utils.KLocation;
import dev.brighten.ac.utils.Materials;
import dev.brighten.ac.utils.XMaterial;
import dev.brighten.ac.utils.*;
import dev.brighten.ac.utils.timer.Timer;
import dev.brighten.ac.utils.timer.impl.TickTimer;
import dev.brighten.ac.utils.world.types.SimpleCollisionBox;
@@ -46,13 +43,39 @@ public class Phase extends Check {
private final Timer lastFlag = new TickTimer(5);
private KLocation fromWhereShitAintBad = null;
private int ticks;
WTimedAction<WPacketPlayInFlying> packet = (packet, now) -> {
private KLocation toSetback = null;
WCancellable<WPacketPlayInFlying> packet = (packet) -> {
if(packet.isMoved() && ticks < 3) {
ticks++;
return false;
}
if(toSetback != null && packet.isMoved()) {
if(player.getMovement().getTo().getLoc().toVector().distanceSquared(toSetback.toVector()) < 0.0001) {
toSetback = null;
debug("Reached loc");
} else {
RunUtils.task(() -> player.getBukkitPlayer().teleport(toSetback
.toLocation(player.getBukkitPlayer().getWorld())));
debug("Hasnt reached location");
return true;
}
}
if(!packet.isMoved() || player.getCreation().isNotPassed(800L)
|| ((player.getInfo().lastRespawn.isNotPassed(500L)
|| player.getMovement().getMoveTicks() == 0) && lastFlag.isPassed(12))
|| player.getInfo().lastRespawn.isNotPassed(10)
|| (player.getMovement().getMoveTicks() == 0
&& player.getMovement().getPosLocs().stream()
.anyMatch(kloc -> kloc.toVector()
.distanceSquared(player.getMovement().getTo().getLoc().toVector()) < 0.01))
|| player.getInfo().isCreative() || player.getInfo().isCanFly()) {
return;
debug("Returned: " + player.getMovement().getMoveTicks() + "," + player.getMovement().getPosLocs().stream()
.anyMatch(kloc -> kloc.toVector()
.distanceSquared(player.getMovement().getTo().getLoc().toVector()) < 0.01));
return false;
}
SimpleCollisionBox fromBox = player.getMovement().getFrom().getBox().copy(), toBox = fromBox.copy();
@@ -81,8 +104,23 @@ public class Phase extends Check {
toBox.offset(0, 0, deltaZ);
debug("(%s): new=[%.3f, %.3f, %.3f] old=[%.3f, %.3f, %.3f]", deltaX, deltaY, deltaZ,
KLocation calculatedTo = player.getMovement().getFrom().getLoc().clone().add(deltaX, deltaY, deltaZ);
double dx = Math.abs(deltaX - player.getMovement().getDeltaX()),
dy = Math.abs(deltaY - player.getMovement().getDeltaY()),
dz = Math.abs(deltaZ - player.getMovement().getDeltaZ());
double totalDelta = dx + dy + dz;
if(totalDelta > 0.001) {
RunUtils.task(() -> player.getBukkitPlayer().teleport(calculatedTo
.toLocation(player.getBukkitPlayer().getWorld())));
flag("x=%.4f, y=%.4f, z=%.4f", dx, dy, dz);
}
debug("(%s) [%.5f]: new=[%.3f, %.3f, %.3f] old=[%.3f, %.3f, %.3f]", collisions.size(), totalDelta, deltaX, deltaY, deltaZ,
player.getMovement().getDeltaX(), player.getMovement().getDeltaY(),
player.getMovement().getDeltaZ());
return false;
};
}
@@ -39,6 +39,7 @@ public class MovementHandler {
private float deltaYaw, deltaPitch, lDeltaYaw, lDeltaPitch, pitchGCD, lastPitchGCD, yawGCD, lastYawGCD;
@Getter
private int moveTicks;
@Getter
private final List<KLocation> posLocs = new ArrayList<>();
@Getter
private final List<CollisionBox> lookingAtBoxes = new ArrayList<>();
@@ -58,6 +58,13 @@ public class KLocation {
return new KLocation(x, y, z, yaw, pitch, timeStamp);
}
public KLocation add(double x, double y, double z) {
this.x+= x;
this.y+= y;
this.z+= z;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -55,7 +55,7 @@ public class DynamicFence implements CollisionFactory {
private static boolean fenceConnects(ProtocolVersion v, APlayer player, WrappedBlock fenceBlock, BlockFace direction) {
Optional<WrappedBlock> targetBlock = BlockUtils.getRelative(player, fenceBlock.getLocation(), direction, 1);
if(targetBlock.isEmpty()) return false;
if(!targetBlock.isPresent()) return false;
Material target = targetBlock.get().getType();
Material fence = fenceBlock.getType();
@@ -48,7 +48,7 @@ public class DynamicPane implements CollisionFactory {
private static boolean fenceConnects(ProtocolVersion v, APlayer player, WrappedBlock fenceBlock, BlockFace direction) {
Optional<WrappedBlock> targetBlock = BlockUtils.getRelative(player, fenceBlock.getLocation(), direction, 1);
if(targetBlock.isEmpty()) return false;
if(!targetBlock.isPresent()) return false;
Material target = targetBlock.get().getType();
if (!isPane(target)&&DynamicFence.isBlacklisted(target))
@@ -62,7 +62,7 @@ public class DynamicWall implements CollisionFactory {
private static boolean wallConnects(ProtocolVersion v, APlayer player, WrappedBlock fenceBlock, BlockFace direction) {
Optional<WrappedBlock> targetBlock = BlockUtils.getRelative(player, fenceBlock.getLocation(), direction, 1);
if(targetBlock.isEmpty()) return false;
if(!targetBlock.isPresent()) return false;
Material target = targetBlock.get().getType();