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()