diff --git a/pom.xml b/pom.xml index 339a6ef..bae80e3 100644 --- a/pom.xml +++ b/pom.xml @@ -98,12 +98,6 @@ 1.8.8 provided - - dev.brighten.ac - API - 1.0 - compile - com.h2database h2 @@ -156,7 +150,7 @@ co.aikar acf-bukkit 0.5.0-SNAPSHOT - provided + compile diff --git a/src/main/java/dev/brighten/ac/Anticheat.java b/src/main/java/dev/brighten/ac/Anticheat.java index 9db32be..20be9db 100644 --- a/src/main/java/dev/brighten/ac/Anticheat.java +++ b/src/main/java/dev/brighten/ac/Anticheat.java @@ -50,7 +50,7 @@ import java.util.concurrent.atomic.AtomicLong; @Getter @Init -@MavenLibrary(groupId = "co.aikar", artifactId = "acf-bukkit", version = "0.5.0", repo = @Repository(url = "https://nexus.funkemunky.cc/content/repositories/releases/")) +//@MavenLibrary(groupId = "co.aikar", artifactId = "acf-bukkit", version = "0.5.0", repo = @Repository(url = "https://nexus.funkemunky.cc/content/repositories/releases/")) @MavenLibrary(groupId = "com.google.guava", artifactId = "guava", version = "21.0", repo = @Repository(url = "https://repo1.maven.org/maven2")) @MavenLibrary(groupId = "com.h2database", artifactId = "h2", version = "2.1.214", repo = @Repository(url = "https://repo1.maven.org/maven2")) @MavenLibrary(groupId = "it.unimi.dsi", artifactId = "fastutil", version = "8.5.6", repo = @Repository(url = "https://repo1.maven.org/maven2")) diff --git a/src/main/java/dev/brighten/ac/check/impl/combat/Hitbox.java b/src/main/java/dev/brighten/ac/check/impl/combat/Hitbox.java index 80b398c..45415eb 100644 --- a/src/main/java/dev/brighten/ac/check/impl/combat/Hitbox.java +++ b/src/main/java/dev/brighten/ac/check/impl/combat/Hitbox.java @@ -8,16 +8,13 @@ import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInUseEntity; -import dev.brighten.ac.packet.wrapper.objects.EnumParticle; 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.EntityData; import dev.brighten.ac.utils.world.types.SimpleCollisionBox; -import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.util.Vector; import java.util.*; @@ -81,8 +78,6 @@ public class Hitbox extends Check { SimpleCollisionBox box = (SimpleCollisionBox) EntityData.getEntityBox(oldLocation.toVector(), target.one); - box.draw(EnumParticle.FLAME, Bukkit.getOnlinePlayers().toArray(new Player[0])); - if(player.getPlayerVersion().isBelow(ProtocolVersion.V1_9)) { box = box.expand(0.1325); } else box = box.expand(0.0325); @@ -92,8 +87,6 @@ public class Hitbox extends Check { SimpleCollisionBox box = (SimpleCollisionBox) EntityData.getEntityBox(oldLocation.toVector(), target.one); - box.draw(EnumParticle.FLAME, Bukkit.getOnlinePlayers().toArray(new Player[0])); - if(player.getPlayerVersion().isBelow(ProtocolVersion.V1_9)) { box = box.expand(0.1325); } else box = box.expand(0.0325); @@ -104,8 +97,6 @@ public class Hitbox extends Check { SimpleCollisionBox box = (SimpleCollisionBox) EntityData.getEntityBox(oldLocation.toVector(), target.one); - box.draw(EnumParticle.FLAME, Bukkit.getOnlinePlayers().toArray(new Player[0])); - if(player.getPlayerVersion().isBelow(ProtocolVersion.V1_9)) { box = box.expand(0.1325); } else box = box.expand(0.0325); diff --git a/src/main/java/dev/brighten/ac/check/impl/movement/fly/FlyC.java b/src/main/java/dev/brighten/ac/check/impl/movement/fly/FlyC.java index 8fc67e4..731ccb2 100644 --- a/src/main/java/dev/brighten/ac/check/impl/movement/fly/FlyC.java +++ b/src/main/java/dev/brighten/ac/check/impl/movement/fly/FlyC.java @@ -20,6 +20,8 @@ public class FlyC extends Check { super(player); } + private double slimeY = 0; + WAction flyingAction = packet -> { if(player.getMovement().getLastTeleport().isNotPassed((1)) || player.getMovement().getMoveTicks() <= 2 @@ -34,6 +36,17 @@ public class FlyC extends Check { // Adding only possible jump height with current circumstances possibleHeights.add(MovementUtils.getJumpHeight(player)); + if(player.getBlockInfo().onSlime && packet.isOnGround() && player.getMovement().getDeltaY() < 0) { + double ldeltaY = player.getMovement().getLDeltaY() * -1, deltaY = player.getMovement().getDeltaY() * -1; + + if(ldeltaY > deltaY) { + deltaY+= ldeltaY; + } + slimeY = deltaY; + debug("SlimeY: " + slimeY); + } else if(!player.getInfo().wasOnSlime) + slimeY = 0; + // Adding all possible velocity deltaY. player.getVelocityHandler().getPossibleVectors().forEach(vec -> possibleHeights.add(vec.getY())); @@ -44,6 +57,9 @@ public class FlyC extends Check { jumpCheck: { if(!jumped || player.getInfo().blockAbove.isNotPassed(1) || player.getInfo().climbTimer.isNotPassed(1) + || player.getInfo().wasOnSlime + || player.getInfo().lastFence.isNotPassed(1) + || player.getInfo().lastHalfBlock.isNotPassed(1) || player.getInfo().slimeTimer.isNotPassed(1) || player.getInfo().lastLiquid.isNotPassed(1)) break jumpCheck; @@ -62,6 +78,9 @@ public class FlyC extends Check { .map(s -> String.valueOf(MathUtils.round(s, 5))).collect(Collectors.joining(";"))); } + if(player.getInfo().wasOnSlime) + possibleHeights.add(slimeY); + maximumHeightCheck: { if(player.getInfo().nearGround) break maximumHeightCheck; diff --git a/src/main/java/dev/brighten/ac/data/info/BlockInformation.java b/src/main/java/dev/brighten/ac/data/info/BlockInformation.java index 66f9cd2..d44635d 100644 --- a/src/main/java/dev/brighten/ac/data/info/BlockInformation.java +++ b/src/main/java/dev/brighten/ac/data/info/BlockInformation.java @@ -238,7 +238,7 @@ public class BlockInformation { .isIntersected(blockBox)) player.getInfo().setNearGround(true); - if(groundBox.isCollided(blockBox)) { + if(groundBox.copy().expandMin(0, -0.4, 0).isCollided(blockBox)) { player.getInfo().setServerGround(true); if(blockMaterial != null) @@ -247,11 +247,13 @@ public class BlockInformation { case BLUE_ICE: case FROSTED_ICE: case PACKED_ICE: { - onIce = true; + if(groundBox.isCollided(blockBox)) + onIce = true; break; } case SOUL_SAND: { - onSoulSand = true; + if(groundBox.isCollided(blockBox)) + onSoulSand = true; break; } case SLIME_BLOCK: { diff --git a/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java b/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java index f39e1a2..6f7ccb7 100644 --- a/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java +++ b/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java @@ -28,7 +28,8 @@ public class GeneralInformation { lastPlace = new TickTimer(), climbTimer = new TickTimer(), lastUseItem = new TickTimer(), lastRespawn = new TickTimer(), lastEntityCollision = new TickTimer(), lastWeb = new TickTimer(), lastLiquid = new TickTimer(), lastBlockDig = new TickTimer(), lastBlockPlace = new TickTimer(), - lastBlockUpdate = new TickTimer(), lastMiscNear = new TickTimer(), lastHalfBlock = new TickTimer(); + lastBlockUpdate = new TickTimer(), lastMiscNear = new TickTimer(), lastHalfBlock = new TickTimer(), + lastFence = new TickTimer(); public LivingEntity target; public boolean serverGround, lastServerGround, canFly, nearGround, worldLoaded, generalCancel, inVehicle, creative, sneaking, lsneaking, sprinting, gliding, riptiding, wasOnSlime, onLadder, doingVelocity, breakingBlock; diff --git a/src/main/java/dev/brighten/ac/handler/MovementHandler.java b/src/main/java/dev/brighten/ac/handler/MovementHandler.java index c6a770e..5832ae9 100644 --- a/src/main/java/dev/brighten/ac/handler/MovementHandler.java +++ b/src/main/java/dev/brighten/ac/handler/MovementHandler.java @@ -230,7 +230,9 @@ public class MovementHandler { if (player.getInfo().isGliding()) player.getInfo().getLastElytra().reset(); if (player.getInfo().isSneaking()) player.getInfo().getLastSneak().reset(); if (player.getBlockInfo().inLiquid) player.getInfo().getLastLiquid().reset(); - if(player.getBlockInfo().inWeb) player.getInfo().lastWeb.reset(); + if (player.getBlockInfo().inWeb) player.getInfo().lastWeb.reset(); + if (player.getBlockInfo().onHalfBlock) player.getInfo().getLastHalfBlock().reset(); + if (player.getBlockInfo().fenceBelow) player.getInfo().getLastFence().reset(); if (!to.isOnGround() && moveTicks > 0) { if (!jumped && from.isOnGround()