- Fixed NullPointerExceptions on the teleport functions of the Phase check. This is caused by a concurrency issue where I didn't set the Location object as a final constant and it would get updated to null by another thread.
- Added a Cache on the XMaterial#matchXMaterial(Material) method so it isn't running the logic repeatedly. This improved performance.
- Instead of using an object as a key in BlockUpdateHandler, we use an Integer array. This should theoretically improve performance by reducing the amount of hashing required. However, we shall see how this works in practice.
- Reduced the amounts of instructions needed to run in the getCollidingBlocks() method for the Emulator in APlayer by removing the use of a Stream and just replacing it with a for() loop.
- Added inventory check type in API
- Added Inventory (A) detection
- Added Inventory (B) detection
- Improved the flag rate and accuracy of Aim check
- Added other bot check that flies around player to Killaura (Bot) to account for clients not doing a proper RayCast and opting to just turn on attack invisibles and mobs.
- Added comments to Killaura (Trace)
- Optimized Fly (A) detection and added comments
- Fixed false positive caused by incorrect acceleration prediction in Fly (A). I used the current onGround when that is actually never a factor in vertical acceleration, only the product of what the client moves to.
- Removed "optimization" in Fly (A) that basically just stopped prediction when client sends onGround and sets motionY to 0. Changed this behavior to it still do the acceleration subtraction 0.08 times 0.98 but run a collision check that will set the y to 0 if necessary; more closely replicates vanilla mechanics.
- Optimized Horizontal check and fixing field name motionX to more appropriate motion name.
- Optimized Velocity (B) by using current Horizontal optimizations and applying them to this check.
- Moved logs command in AnticheatCommand class to its own LogsCommand class. Added other kinds of logs commands like /kauri logs paste to send it to pastebin and /kauri logs web to view logs on the website.
- Fixed error on plugin shutdown caused by NPE. This was due to an order of operations issue with PlayerRegistry and PacketHandler
- Added wrapper for PacketPlayInWindowClick, PacketPlayInClientCommand.
- Added KLocation#getDirection() method as a shorthand to doing MathUtils.getDirection(KLocation field);
- Moved Helper#angularDistance to MathUtils#angularDistance
- Added CollisionBox#downcast() method as a shorthand method to not have to create a new List field every time I want to get the downcasted SimpleCollisionBox of any wrapped CollisionBox.
- Completed Autoclicker (C), Oscillation check.
- Added Autoclicker (D). Checks for autoblocks
- Added NoFall (C). Fall distance check.
- Updated Phase setback to patch bypass.
- Added PacketPlayOutMapChunk wrapper.
- Tracking MapChunk updates to client, patches false positive from blocks not being updated on anticheat from plugins like FAWE.
- Now sniffs packets that aren't wrapped too when packet debugging player.
- Updated Fly (A) to now account for vertical collisions on predictions.
- Added experimental flag to CheckData.
- Removed lastFlagRun alert limiter.
- Increased amount of alerts that can be displayed in a second from 40 to 80.
- Fixed WPacketPlayOutMultiBlockChange bug where the x and z where incorrect. I didn't shift the value based on the chunk location like the vanilla packet does.
- Added BukkitRunnable which passes through the BukkitTask so tasks can be cancelled when using RunUtils, without having to use the Bukkit implementation instead.
- Fixed signs returning as collidable blocks in Materials, causing false positives.
- Fixed NullPointerException in the CHEST wrapper enum inside BlockData. Needed to use the BlockUtils#getRelative method instead, incase the APlayer object pass-through was null.
- Optimized Horizontal a bit more, reducing iterations.