From 24a1f83d3508d2875519aeafa273c60e6b8534bc Mon Sep 17 00:00:00 2001 From: Dawson <30784509+funkemunky@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:50:05 -0400 Subject: [PATCH] Shit --- Anticheat/pom.xml | 14 +- .../ac/check/impl/combat/aim/AimB.java | 2 - .../impl/combat/autoclicker/AutoclickerA.java | 2 +- .../impl/combat/autoclicker/AutoclickerB.java | 2 +- .../ac/check/impl/combat/killaura/KABot.java | 15 +- .../check/impl/movement/nofall/NoFallB.java | 5 +- .../check/impl/movement/speed/Prediction.java | 13 +- .../impl/movement/velocity/VelocityA.java | 4 +- .../impl/movement/velocity/VelocityB.java | 2 +- .../ac/check/impl/packet/order/Timer.java | 2 +- .../ac/check/impl/packet/order/UseEntity.java | 2 +- .../brighten/ac/check/impl/world/BlockA.java | 9 +- .../brighten/ac/check/impl/world/BlockB.java | 4 +- .../dev/brighten/ac/command/LogsCommand.java | 2 +- .../java/dev/brighten/ac/data/APlayer.java | 1 - .../ac/data/info/BlockInformation.java | 6 +- .../ac/data/info/GeneralInformation.java | 2 +- .../ac/handler/EntityLocationHandler.java | 19 +- .../brighten/ac/handler/MovementHandler.java | 36 +- .../ac/handler/block/BlockUpdateHandler.java | 2 +- .../java/dev/brighten/ac/logging/Log.java | 4 +- .../ac/packet/wrapper/impl/Processor_18.java | 63 +-- .../packet/wrapper/objects/EnumParticle.java | 1 + .../wrapper/objects/WrappedEnumDirection.java | 2 +- .../out/WPacketPlayOutNamedEntitySpawn.java | 1 - .../java/dev/brighten/ac/utils/Color.java | 2 - .../dev/brighten/ac/utils/EntityLocation.java | 1 + .../dev/brighten/ac/utils/MathHelper.java | 501 ------------------ .../java/dev/brighten/ac/utils/MiscUtils.java | 13 + .../dev/brighten/ac/utils/MovementUtils.java | 1 + .../brighten/ac/utils/ReflectionsUtil.java | 106 ---- .../java/dev/brighten/ac/utils/Vec3D.java | 18 +- .../java/dev/brighten/ac/utils/json/CDL.java | 5 - .../dev/brighten/ac/utils/json/Cookie.java | 4 - .../brighten/ac/utils/json/CookieList.java | 5 - .../java/dev/brighten/ac/utils/json/HTTP.java | 4 - .../brighten/ac/utils/json/HTTPTokener.java | 3 - .../dev/brighten/ac/utils/json/JSONArray.java | 4 - .../dev/brighten/ac/utils/json/JSONML.java | 6 - .../brighten/ac/utils/json/JSONStringer.java | 2 - .../brighten/ac/utils/json/JSONTokener.java | 4 - .../brighten/ac/utils/json/JSONWriter.java | 3 - .../java/dev/brighten/ac/utils/json/XML.java | 5 - .../brighten/ac/utils/json/XMLTokener.java | 4 - .../brighten/ac/utils/math/FloatVector.java | 2 +- .../dev/brighten/ac/utils/math/IntVector.java | 2 +- .../java/dev/brighten/ac/utils/menu/Menu.java | 1 + .../brighten/ac/utils/menu/MenuListener.java | 2 +- .../ac/utils/menu/preset/SettingsMenu.java | 2 +- .../brighten/ac/utils/world/BlockData.java | 5 +- .../utils/world/types/SimpleCollisionBox.java | 11 +- Compat-1_19_R3/pom.xml | 37 ++ Compat/pom.xml | 59 +++ .../brighten/ac/packet/ProtocolVersion.java | 0 .../java/dev/brighten/ac/utils/FastTrig.java | 0 .../java/dev/brighten/ac/utils/KLocation.java | 132 +++++ .../java/dev/brighten/ac/utils/MathUtils.java | 73 +-- .../java/dev/brighten/ac/utils/Tuple.java | 5 +- .../brighten/ac/utils/objects/BiSupplier.java | 0 .../brighten/ac/utils/objects/Interval.java | 0 .../ac/utils/objects/MethodFunction.java | 19 +- .../ac/utils/objects/MultiFunction.java | 0 .../ac/utils/objects/QuadFunction.java | 0 .../ac/utils/objects/RemoteClassLoader.java | 0 .../ac/utils/objects/TriFunction.java | 0 .../ac/utils/objects/VariableValue.java | 0 .../evicting/ConcurrentEvictingList.java | 0 .../evicting/ConcurrentEvictingMap.java | 0 .../utils/objects/evicting/EvictingList.java | 0 .../utils/objects/evicting/EvictingMap.java | 0 .../filtered/ConcurrentFilteredList.java | 0 .../filtered/ConcurrentFilteredSet.java | 0 .../utils/objects/filtered/FilteredList.java | 0 .../utils/objects/filtered/FilteredSet.java | 0 .../objects/listmap/ConcurrentListMap.java | 0 .../ac/utils/objects/listmap/HashListMap.java | 0 .../ac/utils/objects/listmap/ListMap.java | 0 .../ac/utils/reflections/Reflections.java | 6 +- .../reflections/impl/CraftReflection.java | 2 +- .../reflections/impl/MinecraftReflection.java | 56 +- .../utils/reflections/types/WrappedClass.java | 0 .../reflections/types/WrappedConstructor.java | 0 .../utils/reflections/types/WrappedField.java | 0 .../reflections/types/WrappedMethod.java | 0 pom.xml | 2 + 85 files changed, 446 insertions(+), 876 deletions(-) delete mode 100644 Anticheat/src/main/java/dev/brighten/ac/utils/MathHelper.java create mode 100644 Compat-1_19_R3/pom.xml create mode 100644 Compat/pom.xml rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/packet/ProtocolVersion.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/FastTrig.java (100%) create mode 100644 Compat/src/main/java/dev/brighten/ac/utils/KLocation.java rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/MathUtils.java (94%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/Tuple.java (87%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/BiSupplier.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/Interval.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java (82%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/MultiFunction.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/QuadFunction.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/RemoteClassLoader.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/TriFunction.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/VariableValue.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingList.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingMap.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingList.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingMap.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredList.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredSet.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredList.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredSet.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/listmap/ConcurrentListMap.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/listmap/HashListMap.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/objects/listmap/ListMap.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java (98%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java (92%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedClass.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedConstructor.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedField.java (100%) rename {Anticheat => Compat}/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedMethod.java (100%) diff --git a/Anticheat/pom.xml b/Anticheat/pom.xml index ecbf5d3..19344bd 100644 --- a/Anticheat/pom.xml +++ b/Anticheat/pom.xml @@ -94,7 +94,13 @@ dev.brighten.ac API - 1.0-SNAPSHOT + ${version} + compile + + + dev.brighten.ac + Compat + ${version} compile @@ -109,12 +115,6 @@ 1.0-SNAPSHOT compile - - me.hydro - emulator - 1.2-neo - compile - org.github.spigot 1.13 diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/aim/AimB.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/aim/AimB.java index 231ec68..252b359 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/aim/AimB.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/aim/AimB.java @@ -1,8 +1,6 @@ package dev.brighten.ac.check.impl.combat.aim; -import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; -import dev.brighten.ac.check.CheckData; import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerA.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerA.java index b1858c3..14e3812 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerA.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerA.java @@ -1,8 +1,8 @@ package dev.brighten.ac.check.impl.combat.autoclicker; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.ProtocolVersion; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerB.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerB.java index cc24d90..fc9c351 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerB.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/autoclicker/AutoclickerB.java @@ -1,8 +1,8 @@ package dev.brighten.ac.check.impl.combat.autoclicker; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.WTimedAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInArmAnimation; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/killaura/KABot.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/killaura/KABot.java index 84fe950..2999a4e 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/killaura/KABot.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/combat/killaura/KABot.java @@ -6,9 +6,12 @@ import dev.brighten.ac.check.CheckData; import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInArmAnimation; +import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInUseEntity; import lombok.val; +import java.util.List; + @CheckData(name = "KillAura (Bot)", checkId = "kabot", type = CheckType.KILLAURA) public class KABot extends Check { @@ -24,10 +27,20 @@ public class KABot extends Check { if(buffer2 > 0) buffer2-= 0.25f; }; + WAction flying = packet -> { + if(player.getInfo().lastAttack.isNotPassed(20)) { + player.getMob().setInvisible(false); + } else player.getMob().setInvisible(true); + }; + WAction packet = packet -> { val optional = player.getEntityLocationHandler().getFakeMob(packet.getEntityId()); - if(optional.isPresent() && player.getEntityLocationHandler().clientHasEntity.get()) { + if(optional.isPresent() + && (player.getEntityLocationHandler().clientHasEntity.get() + || player.getEntityLocationHandler() + .getFakeMob(player.getBukkitPlayer().getEntityId()) + .map(List::size).orElse(0) > 0)) { if(++buffer > 3) { flag("Attacked player without attacking bot!"); } diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/nofall/NoFallB.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/nofall/NoFallB.java index d2313cf..8cd9e23 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/nofall/NoFallB.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/nofall/NoFallB.java @@ -1,12 +1,11 @@ package dev.brighten.ac.check.impl.movement.nofall; -import dev.brighten.ac.check.WAction; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; +import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; -import dev.brighten.ac.utils.annotation.Async; @CheckData(name = "NoFall (B)", checkId = "nofallb", type = CheckType.MOVEMENT) public class NoFallB extends Check { diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/speed/Prediction.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/speed/Prediction.java index 24310e6..b56644e 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/speed/Prediction.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/speed/Prediction.java @@ -5,11 +5,9 @@ import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; import dev.brighten.ac.check.WAction; 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.Color; import dev.brighten.ac.utils.KLocation; -import dev.brighten.ac.utils.MathUtils; import dev.brighten.ac.utils.timer.Timer; import dev.brighten.ac.utils.timer.impl.TickTimer; import lombok.val; @@ -20,7 +18,7 @@ import me.hydro.emulator.util.Vector; public class Prediction extends Check { private float buffer; private boolean maybeSkippedPos; - private int lastFlying; + private int lastFlying, notMoveTicks; private final Timer lastSkipPos = new TickTimer(); public Prediction(APlayer player) { @@ -28,10 +26,13 @@ public class Prediction extends Check { } WAction flying = packet -> { - + if(!packet.isMoved()) { + if(++notMoveTicks > 2) { + return; + } + } else notMoveTicks = 0; check: { - if(!packet.isMoved() - || player.getBlockInfo().onClimbable + if(player.getBlockInfo().onClimbable || player.getInfo().lastLiquid.isNotPassed(2) || player.getInfo().isGeneralCancel()) break check; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityA.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityA.java index f3a0845..7a8d33c 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityA.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityA.java @@ -1,9 +1,9 @@ package dev.brighten.ac.check.impl.movement.velocity; -import dev.brighten.ac.check.WAction; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; +import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; import org.bukkit.util.Vector; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityB.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityB.java index 7e7f188..c9254cd 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityB.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/movement/velocity/VelocityB.java @@ -8,13 +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.utils.KLocation; -import dev.brighten.ac.utils.MathHelper; import dev.brighten.ac.utils.MathUtils; import dev.brighten.ac.utils.math.IntVector; import dev.brighten.ac.utils.timer.Timer; import dev.brighten.ac.utils.timer.impl.TickTimer; import lombok.AllArgsConstructor; import lombok.val; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; import org.bukkit.potion.PotionEffectType; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/Timer.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/Timer.java index f21a10e..5200d21 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/Timer.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/Timer.java @@ -4,8 +4,8 @@ import dev.brighten.ac.Anticheat; 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.WAction; +import dev.brighten.ac.check.WTimedAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInBlockPlace; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/UseEntity.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/UseEntity.java index 8e7a1a8..7807bf9 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/UseEntity.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/packet/order/UseEntity.java @@ -1,8 +1,8 @@ package dev.brighten.ac.check.impl.packet.order; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.WTimedAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockA.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockA.java index 2961579..9a23396 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockA.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockA.java @@ -1,14 +1,17 @@ package dev.brighten.ac.check.impl.world; -import dev.brighten.ac.check.WAction; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; +import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInBlockPlace; import dev.brighten.ac.packet.wrapper.in.WPacketPlayInFlying; -import dev.brighten.ac.utils.*; +import dev.brighten.ac.utils.BlockUtils; +import dev.brighten.ac.utils.KLocation; +import dev.brighten.ac.utils.MathUtils; +import dev.brighten.ac.utils.Tuple; import dev.brighten.ac.utils.annotation.Async; import dev.brighten.ac.utils.math.cond.MaxDouble; import dev.brighten.ac.utils.world.BlockData; diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockB.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockB.java index 7aeab3a..f13caeb 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockB.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/world/BlockB.java @@ -1,9 +1,9 @@ package dev.brighten.ac.check.impl.world; -import dev.brighten.ac.check.WAction; +import dev.brighten.ac.api.check.CheckType; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckData; -import dev.brighten.ac.api.check.CheckType; +import dev.brighten.ac.check.WAction; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.utils.annotation.Async; import org.bukkit.block.Block; diff --git a/Anticheat/src/main/java/dev/brighten/ac/command/LogsCommand.java b/Anticheat/src/main/java/dev/brighten/ac/command/LogsCommand.java index 6663bd7..0baaa35 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/command/LogsCommand.java +++ b/Anticheat/src/main/java/dev/brighten/ac/command/LogsCommand.java @@ -1,8 +1,8 @@ package dev.brighten.ac.command; import co.aikar.commands.BaseCommand; -import co.aikar.commands.annotation.*; import co.aikar.commands.annotation.Optional; +import co.aikar.commands.annotation.*; import dev.brighten.ac.Anticheat; import dev.brighten.ac.check.CheckSettings; import dev.brighten.ac.gui.Logs; diff --git a/Anticheat/src/main/java/dev/brighten/ac/data/APlayer.java b/Anticheat/src/main/java/dev/brighten/ac/data/APlayer.java index 62e4e2a..d35e942 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/data/APlayer.java +++ b/Anticheat/src/main/java/dev/brighten/ac/data/APlayer.java @@ -50,7 +50,6 @@ import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Consumer; -import java.util.stream.Collectors; public class APlayer { diff --git a/Anticheat/src/main/java/dev/brighten/ac/data/info/BlockInformation.java b/Anticheat/src/main/java/dev/brighten/ac/data/info/BlockInformation.java index 689c7a0..22d4e3f 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/data/info/BlockInformation.java +++ b/Anticheat/src/main/java/dev/brighten/ac/data/info/BlockInformation.java @@ -3,12 +3,16 @@ package dev.brighten.ac.data.info; import dev.brighten.ac.Anticheat; import dev.brighten.ac.data.APlayer; import dev.brighten.ac.packet.ProtocolVersion; -import dev.brighten.ac.utils.*; +import dev.brighten.ac.utils.BlockUtils; +import dev.brighten.ac.utils.Materials; +import dev.brighten.ac.utils.MiscUtils; +import dev.brighten.ac.utils.XMaterial; import dev.brighten.ac.utils.math.IntVector; import dev.brighten.ac.utils.world.BlockData; import dev.brighten.ac.utils.world.CollisionBox; import dev.brighten.ac.utils.world.EntityData; import dev.brighten.ac.utils.world.types.SimpleCollisionBox; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; diff --git a/Anticheat/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java b/Anticheat/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java index 146d2b9..d71145b 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java +++ b/Anticheat/src/main/java/dev/brighten/ac/data/info/GeneralInformation.java @@ -32,7 +32,7 @@ public class GeneralInformation { lastLiquid = new TickTimer(), lastBlockDig = new TickTimer(), lastBlockPlace = new TickTimer(), lastBlockUpdate = new TickTimer(), lastMiscNear = new TickTimer(), lastHalfBlock = new TickTimer(), lastFence = new TickTimer(), lastFakeBotHit = new TickTimer(), lastInventoryOpen = new TickTimer(), - botAttack = new TickTimer(), lastAttack = new TickTimer(); + botAttack = new TickTimer(), lastAttack = new TickTimer(), lastCanceledFlying = new TickTimer(); public LivingEntity target; public Optional groundJumpBoost; public boolean serverGround, lastServerGround, canFly, nearGround, worldLoaded, generalCancel, inVehicle, creative, diff --git a/Anticheat/src/main/java/dev/brighten/ac/handler/EntityLocationHandler.java b/Anticheat/src/main/java/dev/brighten/ac/handler/EntityLocationHandler.java index 4787f65..6babdcf 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/handler/EntityLocationHandler.java +++ b/Anticheat/src/main/java/dev/brighten/ac/handler/EntityLocationHandler.java @@ -9,7 +9,6 @@ import dev.brighten.ac.packet.wrapper.out.*; import dev.brighten.ac.utils.EntityLocation; import dev.brighten.ac.utils.KLocation; import dev.brighten.ac.utils.Tuple; -import dev.brighten.ac.utils.math.RayTrace; import dev.brighten.ac.utils.timer.Timer; import dev.brighten.ac.utils.timer.impl.MillisTimer; import dev.brighten.ac.utils.world.types.RayCollision; @@ -282,15 +281,16 @@ public class EntityLocationHandler { } KLocation eyeLoc = data.getMovement().getTo().getLoc().clone() - .add(0, data.getInfo().isSneaking() ? 1.54f : 1.62f, 0); + .add(0, 0.6, 0); RayCollision collision = new RayCollision(eyeLoc.toVector(), eyeLoc.getDirection()); - Vector point = collision.collisionPoint(1); + Vector point = collision.collisionPoint(0.4); - FakeMob mob = new FakeMob(EntityType.ZOMBIE); + FakeMob mob = new FakeMob(EntityType.SLIME); - mob.spawn(true, point.toLocation(location.getWorld()), data); + mob.spawn(true, point.toLocation(location.getWorld()), new ArrayList<>(Collections.singletonList( + new WrappedWatchableObject(0, 16, (byte) 5))), data); fakeMobToEntityId.put(mob.getEntityId(), data.getBukkitPlayer().getEntityId()); @@ -312,13 +312,12 @@ public class EntityLocationHandler { } for (FakeMob fakeMob : fakeMobs) { - if(fakeMob.getType() == EntityType.ZOMBIE) { - KLocation eyeLoc = data.getMovement().getTo().getLoc().clone() - .add(0, data.getInfo().isSneaking() ? 1.54f : 1.62f, 0); + if(fakeMob.getType() == EntityType.SLIME) { + KLocation eyeLoc = data.getMovement().getTo().getLoc().clone().add(0, 0.6, 0); RayCollision collision = new RayCollision(eyeLoc.toVector(), eyeLoc.getDirection()); - Vector point = collision.collisionPoint(1); + Vector point = collision.collisionPoint(0.4); fakeMob.teleport(point.getX(), point.getY(), point.getZ(), 0 ,0); break; @@ -342,8 +341,6 @@ public class EntityLocationHandler { int current = 0; for (FakeMob fakeMob : fakeMobs) { - if(fakeMob.getType() == EntityType.ZOMBIE) - continue; double offset = offsets[current++]; if(rel) { diff --git a/Anticheat/src/main/java/dev/brighten/ac/handler/MovementHandler.java b/Anticheat/src/main/java/dev/brighten/ac/handler/MovementHandler.java index 9a0f812..af02d31 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/handler/MovementHandler.java +++ b/Anticheat/src/main/java/dev/brighten/ac/handler/MovementHandler.java @@ -22,6 +22,7 @@ import me.hydro.emulator.object.iteration.Motion; import me.hydro.emulator.object.result.IterationResult; import me.hydro.emulator.util.PotionEffect; import me.hydro.emulator.util.Vector; +import me.hydro.emulator.util.mcp.MathHelper; import me.hydro.emulator.util.mcp.MathHelper.FastMathType; import org.bukkit.GameMode; import org.bukkit.Location; @@ -105,7 +106,7 @@ public class MovementHandler { private static final boolean[] ALWAYS_FALSE = new boolean[1]; private static final int[] FULL_RANGE = new int[]{-1, 0, 1}; - public void runEmulation(KLocation to) { + public void runEmulation(KLocation to, boolean isZeroThree) { /* * (org.bukkit.potion.PotionEffectType * Element 0: SPEED @@ -133,6 +134,10 @@ public class MovementHandler { } } + if(player.EMULATOR.getTags().contains("003") && !isZeroThree) { + runEmulation(to, true); + } + IterationResult minimum = null; iteration: { for (KLocation posLoc : posLocs) { @@ -157,8 +162,8 @@ public class MovementHandler { Motion previousMotion = player.EMULATOR.getMotion().clone(); - for (int forward : FULL_RANGE) { - for (int strafe : FULL_RANGE) { + for (int forward : isZeroThree ? new int[] {0} : FULL_RANGE) { + for (int strafe : isZeroThree ? new int[] {0} : FULL_RANGE) { for (boolean jumping : getJumpingIterations()) { for (boolean sprinting : getSprintingIterations(forward)) { for (boolean usingItem : getUsingItemIterations(forward, strafe)) { @@ -224,7 +229,20 @@ public class MovementHandler { if(minimum != null) { predicted = minimum.getPredicted(); - if (minimum.getOffset() > 1E-7) { + + double mx = player.EMULATOR.getMotion().getMotionX(); + double my = player.EMULATOR.getMotion().getMotionY(); + double mz = player.EMULATOR.getMotion().getMotionZ(); + + double total = mx * mx + my * my + mz * mz; + + if(total < 9E-4) { + player.getInfo().lastCanceledFlying.reset(); + player.getBukkitPlayer().sendMessage("003"); + minimum.getTags().add("003"); + } + + if (minimum.getOffset() > 1E-7 && !isZeroThree) { minimum.getTags().add("bad_offset"); minimum.getMotion().setMotionX(deltaX); minimum.getMotion().setMotionY(deltaY); @@ -232,13 +250,13 @@ public class MovementHandler { } player.EMULATOR.confirm(minimum.getIteration()); + if(minimum.getTags().contains("003")) { + player.EMULATOR.getTags().add("003"); + } + if(minimum.getTags().contains("bad_offset")) { player.EMULATOR.setLastReportedBoundingBox(getTo().getBox().toNeo()); } - - double mx = player.EMULATOR.getMotion().getMotionX(); - double my = player.EMULATOR.getMotion().getMotionY(); - double mz = player.EMULATOR.getMotion().getMotionZ(); } } @@ -301,7 +319,7 @@ public class MovementHandler { player.getBlockInfo().runCollisionCheck(); } - runEmulation(to.getLoc()); + runEmulation(to.getLoc(), false); if (moveTicks > 0) { diff --git a/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java b/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java index e011d84..fd337e8 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java +++ b/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java @@ -12,12 +12,12 @@ import dev.brighten.ac.utils.Materials; import dev.brighten.ac.utils.XMaterial; import dev.brighten.ac.utils.math.IntVector; import dev.brighten.ac.utils.world.types.RayCollision; +import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import lombok.RequiredArgsConstructor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; -import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import java.util.Optional; diff --git a/Anticheat/src/main/java/dev/brighten/ac/logging/Log.java b/Anticheat/src/main/java/dev/brighten/ac/logging/Log.java index 2f5d82b..37e3914 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/logging/Log.java +++ b/Anticheat/src/main/java/dev/brighten/ac/logging/Log.java @@ -1,9 +1,9 @@ package dev.brighten.ac.logging; -import lombok.Builder; -import lombok.Getter; import dev.brighten.ac.utils.json.JSONException; import dev.brighten.ac.utils.json.JSONObject; +import lombok.Builder; +import lombok.Getter; import java.util.UUID; diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java index 378d4ea..3fdd8fb 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java @@ -8,7 +8,6 @@ import dev.brighten.ac.packet.wrapper.objects.PlayerCapabilities; import dev.brighten.ac.packet.wrapper.objects.WrappedEnumDirection; import dev.brighten.ac.packet.wrapper.objects.WrappedWatchableObject; import dev.brighten.ac.packet.wrapper.out.*; -import dev.brighten.ac.utils.MathHelper; import dev.brighten.ac.utils.MiscUtils; import dev.brighten.ac.utils.math.FloatVector; import dev.brighten.ac.utils.math.IntVector; @@ -18,6 +17,7 @@ import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.SneakyThrows; import lombok.val; +import me.hydro.emulator.util.mcp.MathHelper; import net.minecraft.server.v1_8_R3.*; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +@SuppressWarnings("deprecation") public class Processor_18 implements PacketConverter { @Override public WPacketPlayInFlying processFlying(Object object) { @@ -266,7 +267,7 @@ public class Processor_18 implements PacketConverter { serial.b(packet.getId()); //No matter what this will always be written - Object packetToReturn = null; + Object packetToReturn; if(packet.isLooked() && packet.isMoved()) { // Moved and looked serial.writeByte(MathHelper.floor_double(packet.getX() * 32.)); @@ -574,8 +575,7 @@ public class Processor_18 implements PacketConverter { } private static final WrappedClass classSpawnEntityLiving = new WrappedClass(PacketPlayOutSpawnEntityLiving.class); - private static final WrappedField splDataWatcher = classSpawnEntityLiving.getFieldByType(DataWatcher.class, 0), - splWatchList = classSpawnEntityLiving.getFieldByType(List.class, 0); + private static final WrappedField splDataWatcher = classSpawnEntityLiving.getFieldByType(DataWatcher.class, 0); @SneakyThrows @Override @@ -598,8 +598,6 @@ public class Processor_18 implements PacketConverter { return builder.build(); } - private static final WrappedClass dataWatcherClass = new WrappedClass(DataWatcher.class); - private static final WrappedField watchableMap = dataWatcherClass.getFieldByName("d"); @Override public Object processSpawnLiving(WPacketPlayOutSpawnEntityLiving packet) { PacketPlayOutSpawnEntityLiving vanilla = new PacketPlayOutSpawnEntityLiving(); @@ -621,7 +619,7 @@ public class Processor_18 implements PacketConverter { DataWatcher watcher = new DataWatcher(null); for (WrappedWatchableObject w : packet.getWatchedObjects()) { - watcher.a(w.getDataValueId(), w.getWatchedObject());; + watcher.a(w.getDataValueId(), w.getWatchedObject()); } watcher.a(serializer); @@ -788,7 +786,7 @@ public class Processor_18 implements PacketConverter { int chunkZ = serialized.readInt(); PacketPlayOutMapChunk.ChunkMap chunkMap = new PacketPlayOutMapChunk.ChunkMap(); chunkMap.b = serialized.readShort() & '\uffff'; - chunkMap.a = new byte[a(Integer.bitCount(chunkMap.b), groundUp, true)]; + chunkMap.a = new byte[a(Integer.bitCount(chunkMap.b), groundUp)]; Map blocks = new Object2ObjectOpenHashMap<>(chunkMap.a.length); @@ -957,19 +955,14 @@ public class Processor_18 implements PacketConverter { } } - private static int a(int i, boolean flag, boolean flag1) { + private static int a(int i, boolean flag) { int j = i * 2 * 16 * 16 * 16; int k = i * 16 * 16 * 16 / 2; int l = flag ? i * 16 * 16 * 16 / 2 : 0; - int i1 = flag1 ? 256 : 0; + int i1 = 256; return j + k + l + i1; } - private static int a(byte[] abyte, byte[] abyte1, int i) { - System.arraycopy(abyte, 0, abyte1, i, abyte.length); - return i + abyte.length; - } - private PacketDataSerializer serialize(Packet packet) { PacketDataSerializer serial = new PacketDataSerializer(Unpooled.buffer()); try { @@ -985,44 +978,26 @@ public class Processor_18 implements PacketConverter { int i = (object.getObjectType() << 5 | object.getDataValueId() & 31) & 255; serializer.writeByte(i); switch (object.getObjectType()) { - case 0: { - serializer.writeByte((Byte)object.getWatchedObject()); - break; - } - case 1: { - serializer.writeShort((Short)object.getWatchedObject()); - break; - } - case 2: { - serializer.writeInt((Integer)object.getWatchedObject()); - break; - } - case 3: { - serializer.writeFloat((Float)object.getWatchedObject()); - break; - } - case 4: { - serializer.a((String)object.getWatchedObject()); - break; - } - case 5: { - ItemStack itemStack = (ItemStack)object.getWatchedObject(); + case 0 -> serializer.writeByte((Byte) object.getWatchedObject()); + case 1 -> serializer.writeShort((Short) object.getWatchedObject()); + case 2 -> serializer.writeInt((Integer) object.getWatchedObject()); + case 3 -> serializer.writeFloat((Float) object.getWatchedObject()); + case 4 -> serializer.a((String) object.getWatchedObject()); + case 5 -> { + ItemStack itemStack = (ItemStack) object.getWatchedObject(); serializer.a(itemStack); - break; } - case 6: { - BlockPosition blockPosition = (BlockPosition)object.getWatchedObject(); + case 6 -> { + BlockPosition blockPosition = (BlockPosition) object.getWatchedObject(); serializer.writeInt(blockPosition.getX()); serializer.writeInt(blockPosition.getY()); serializer.writeInt(blockPosition.getZ()); - break; } - case 7: { - Vector3f vector3f = (Vector3f)object.getWatchedObject(); + case 7 -> { + Vector3f vector3f = (Vector3f) object.getWatchedObject(); serializer.writeFloat(vector3f.getX()); serializer.writeFloat(vector3f.getY()); serializer.writeFloat(vector3f.getZ()); - break; } } } diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/EnumParticle.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/EnumParticle.java index c1ce170..e8f6c3a 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/EnumParticle.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/EnumParticle.java @@ -2,6 +2,7 @@ package dev.brighten.ac.packet.wrapper.objects; import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import java.util.ArrayList; import java.util.Map; diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/WrappedEnumDirection.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/WrappedEnumDirection.java index bb8a6f9..26a93b3 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/WrappedEnumDirection.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/objects/WrappedEnumDirection.java @@ -2,10 +2,10 @@ package dev.brighten.ac.packet.wrapper.objects; import dev.brighten.ac.packet.ProtocolVersion; -import dev.brighten.ac.utils.MathHelper; import dev.brighten.ac.utils.math.IntVector; import dev.brighten.ac.utils.reflections.Reflections; import dev.brighten.ac.utils.reflections.types.WrappedClass; +import me.hydro.emulator.util.mcp.MathHelper; import java.util.Arrays; import java.util.HashMap; diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/out/WPacketPlayOutNamedEntitySpawn.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/out/WPacketPlayOutNamedEntitySpawn.java index e71f352..41df168 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/out/WPacketPlayOutNamedEntitySpawn.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/out/WPacketPlayOutNamedEntitySpawn.java @@ -7,7 +7,6 @@ import lombok.Builder; import lombok.Getter; import lombok.Setter; import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; import java.util.UUID; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/Color.java b/Anticheat/src/main/java/dev/brighten/ac/utils/Color.java index 5878cbd..02373d4 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/Color.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/Color.java @@ -1,10 +1,8 @@ package dev.brighten.ac.utils; import dev.brighten.ac.packet.ProtocolVersion; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import java.util.logging.Level; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/EntityLocation.java b/Anticheat/src/main/java/dev/brighten/ac/utils/EntityLocation.java index 20bf8de..c4737a5 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/EntityLocation.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/EntityLocation.java @@ -3,6 +3,7 @@ package dev.brighten.ac.utils; import dev.brighten.ac.Anticheat; import dev.brighten.ac.utils.objects.evicting.EvictingList; import lombok.RequiredArgsConstructor; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.entity.Entity; import org.bukkit.util.Vector; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/MathHelper.java b/Anticheat/src/main/java/dev/brighten/ac/utils/MathHelper.java deleted file mode 100644 index e8b7856..0000000 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/MathHelper.java +++ /dev/null @@ -1,501 +0,0 @@ -package dev.brighten.ac.utils; - - -import java.util.Random; -import java.util.UUID; - -public class MathHelper { - public static final float SQRT_2 = sqrt_float(2.0F); - public static final float PI = (float) Math.PI; - public static final float PI2 = ((float) Math.PI * 2F); - public static final float PId2 = ((float) Math.PI / 2F); - public static final float deg2Rad = 0.017453292F; - private static final int SIN_BITS = 12; - private static final int SIN_MASK = 4095; - private static final int SIN_COUNT = 4096; - private static final float radFull = ((float) Math.PI * 2F); - private static final float degFull = 360.0F; - private static final float radToIndex = 651.8986F; - private static final float degToIndex = 11.377778F; - private static final float[] SIN_TABLE_FAST = new float[4096]; - /** - * A table of sin values computed from 0 (inclusive) to 2*pi (exclusive), with steps of 2*PI / 65536. - */ - private static final float[] SIN_TABLE = new float[65536]; - /** - * Though it looks like an array, this is really more like a mapping. Key (index of this array) is the upper 5 bits - * of the result of multiplying a 32-bit unsigned integer by the B(2, 5) De Bruijn sequence 0x077CB531. Value - * (value stored in the array) is the unique index (from the right) of the leftmost one-bit in a 32-bit unsigned - * integer that can cause the upper 5 bits to get that value. Used for highly optimized "find the log-base-2 of - * this number" calculations. - */ - private static final int[] multiplyDeBruijnBitPosition; - private static final double field_181163_d; - private static final double[] field_181164_e; - private static final double[] field_181165_f; - private static final String __OBFID = "CL_00001496"; - public static boolean fastMath = false; - - static { - for (int i = 0; i < 65536; ++i) { - SIN_TABLE[i] = (float) Math.sin((double) i * Math.PI * 2.0D / 65536.0D); - } - - for (int j = 0; j < 4096; ++j) { - SIN_TABLE_FAST[j] = (float) Math.sin(((float) j + 0.5F) / 4096.0F * ((float) Math.PI * 2F)); - } - - for (int l = 0; l < 360; l += 90) { - SIN_TABLE_FAST[(int) ((float) l * 11.377778F) & 4095] = (float) Math.sin((float) l * 0.017453292F); - } - - multiplyDeBruijnBitPosition = new int[]{0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9}; - field_181163_d = Double.longBitsToDouble(4805340802404319232L); - field_181164_e = new double[257]; - field_181165_f = new double[257]; - - for (int k = 0; k < 257; ++k) { - double d1 = (double) k / 256.0D; - double d0 = Math.asin(d1); - field_181165_f[k] = Math.cos(d0); - field_181164_e[k] = d0; - } - } - - /** - * sin looked up in a table - */ - public static float sin(float p_76126_0_) { - return fastMath ? SIN_TABLE_FAST[(int) (p_76126_0_ * 651.8986F) & 4095] : SIN_TABLE[(int) (p_76126_0_ * 10430.378F) & 65535]; - } - - /** - * cos looked up in the sin table with the appropriate offset - */ - public static float cos(float value) { - return fastMath ? SIN_TABLE_FAST[(int) ((value + ((float) Math.PI / 2F)) * 651.8986F) & 4095] : SIN_TABLE[(int) (value * 10430.378F + 16384.0F) & 65535]; - } - - public static float sqrt_float(float value) { - return (float) Math.sqrt(value); - } - - public static float sqrt_double(double value) { - return (float) Math.sqrt(value); - } - - /** - * Returns the greatest integer less than or equal to the float argument - */ - public static int floor_float(float value) { - int i = (int) value; - return value < (float) i ? i - 1 : i; - } - - /** - * returns par0 cast as an int, and no greater than Integer.MAX_VALUE-1024 - */ - public static int truncateDoubleToInt(double value) { - return (int) (value + 1024.0D) - 1024; - } - - /** - * Returns the greatest integer less than or equal to the double argument - */ - public static int floor_double(double value) { - int i = (int) value; - return value < (double) i ? i - 1 : i; - } - - /** - * Long version of floor_double - */ - public static long floor_double_long(double value) { - long i = (long) value; - return value < (double) i ? i - 1L : i; - } - - public static int func_154353_e(double value) { - return (int) (value >= 0.0D ? value : -value + 1.0D); - } - - public static float abs(float value) { - return value >= 0.0F ? value : -value; - } - - /** - * Returns the unsigned value of an int. - */ - public static int abs_int(int value) { - return value >= 0 ? value : -value; - } - - public static int ceiling_float_int(float value) { - int i = (int) value; - return value > (float) i ? i + 1 : i; - } - - public static int ceiling_double_int(double value) { - int i = (int) value; - return value > (double) i ? i + 1 : i; - } - - /** - * Returns the value of the first parameter, clamped to be within the lower and upper limits given by the second and - * third parameters. - */ - public static int clamp_int(int num, int min, int max) { - return num < min ? min : (num > max ? max : num); - } - - /** - * Returns the value of the first parameter, clamped to be within the lower and upper limits given by the second and - * third parameters - */ - public static float clamp_float(float num, float min, float max) { - return num < min ? min : (num > max ? max : num); - } - - public static double clamp_double(double num, double min, double max) { - return num < min ? min : (num > max ? max : num); - } - - public static double denormalizeClamp(double p_151238_0_, double p_151238_2_, double p_151238_4_) { - return p_151238_4_ < 0.0D ? p_151238_0_ : (p_151238_4_ > 1.0D ? p_151238_2_ : p_151238_0_ + (p_151238_2_ - p_151238_0_) * p_151238_4_); - } - - /** - * Maximum of the absolute value of two numbers. - */ - public static double abs_max(double p_76132_0_, double p_76132_2_) { - if (p_76132_0_ < 0.0D) { - p_76132_0_ = -p_76132_0_; - } - - if (p_76132_2_ < 0.0D) { - p_76132_2_ = -p_76132_2_; - } - - return p_76132_0_ > p_76132_2_ ? p_76132_0_ : p_76132_2_; - } - - /** - * Buckets an integer with specifed bucket sizes. Args: i, bucketSize - */ - public static int bucketInt(int p_76137_0_, int p_76137_1_) { - return p_76137_0_ < 0 ? -((-p_76137_0_ - 1) / p_76137_1_) - 1 : p_76137_0_ / p_76137_1_; - } - - public static int getRandomIntegerInRange(Random p_76136_0_, int p_76136_1_, int p_76136_2_) { - return p_76136_1_ >= p_76136_2_ ? p_76136_1_ : p_76136_0_.nextInt(p_76136_2_ - p_76136_1_ + 1) + p_76136_1_; - } - - public static float randomFloatClamp(Random p_151240_0_, float p_151240_1_, float p_151240_2_) { - return p_151240_1_ >= p_151240_2_ ? p_151240_1_ : p_151240_0_.nextFloat() * (p_151240_2_ - p_151240_1_) + p_151240_1_; - } - - public static double getRandomDoubleInRange(Random p_82716_0_, double p_82716_1_, double p_82716_3_) { - return p_82716_1_ >= p_82716_3_ ? p_82716_1_ : p_82716_0_.nextDouble() * (p_82716_3_ - p_82716_1_) + p_82716_1_; - } - - public static double average(long[] values) { - long i = 0L; - - for (long j : values) { - i += j; - } - - return (double) i / (double) values.length; - } - - public static boolean epsilonEquals(float p_180185_0_, float p_180185_1_) { - return abs(p_180185_1_ - p_180185_0_) < 1.0E-5F; - } - - public static int normalizeAngle(int p_180184_0_, int p_180184_1_) { - return (p_180184_0_ % p_180184_1_ + p_180184_1_) % p_180184_1_; - } - - /** - * the angle is reduced to an angle between -180 and +180 by mod, and a 360 check - */ - public static float wrapAngleTo180_float(float value) { - value = value % 360.0F; - - if (value >= 180.0F) { - value -= 360.0F; - } - - if (value < -180.0F) { - value += 360.0F; - } - - return value; - } - - /** - * the angle is reduced to an angle between -180 and +180 by mod, and a 360 check - */ - public static double wrapAngleTo180_double(double value) { - value = value % 360.0D; - - if (value >= 180.0D) { - value -= 360.0D; - } - - if (value < -180.0D) { - value += 360.0D; - } - - return value; - } - - /** - * parses the string as integer or returns the second parameter if it fails - */ - public static int parseIntWithDefault(String p_82715_0_, int p_82715_1_) { - try { - return Integer.parseInt(p_82715_0_); - } catch (Throwable var3) { - return p_82715_1_; - } - } - - /** - * parses the string as integer or returns the second parameter if it fails. this value is capped to par2 - */ - public static int parseIntWithDefaultAndMax(String p_82714_0_, int p_82714_1_, int p_82714_2_) { - return Math.max(p_82714_2_, parseIntWithDefault(p_82714_0_, p_82714_1_)); - } - - /** - * parses the string as double or returns the second parameter if it fails. - */ - public static double parseDoubleWithDefault(String p_82712_0_, double p_82712_1_) { - try { - return Double.parseDouble(p_82712_0_); - } catch (Throwable var4) { - return p_82712_1_; - } - } - - public static double parseDoubleWithDefaultAndMax(String p_82713_0_, double p_82713_1_, double p_82713_3_) { - return Math.max(p_82713_3_, parseDoubleWithDefault(p_82713_0_, p_82713_1_)); - } - - /** - * Returns the input value rounded up to the next highest power of two. - */ - public static int roundUpToPowerOfTwo(int value) { - int i = value - 1; - i = i | i >> 1; - i = i | i >> 2; - i = i | i >> 4; - i = i | i >> 8; - i = i | i >> 16; - return i + 1; - } - - /** - * Is the given value a power of two? (1, 2, 4, 8, 16, ...) - */ - private static boolean isPowerOfTwo(int value) { - return value != 0 && (value & value - 1) == 0; - } - - /** - * Uses a B(2, 5) De Bruijn sequence and a lookup table to efficiently calculate the log-base-two of the given - * value. Optimized for cases where the input value is a power-of-two. If the input value is not a power-of-two, - * then subtract 1 from the return value. - */ - private static int calculateLogBaseTwoDeBruijn(int value) { - value = isPowerOfTwo(value) ? value : roundUpToPowerOfTwo(value); - return multiplyDeBruijnBitPosition[(int) ((long) value * 125613361L >> 27) & 31]; - } - - /** - * Efficiently calculates the floor of the base-2 log of an integer value. This is effectively the index of the - * highest bit that is set. For example, if the number in binary is 0...100101, this will return 5. - */ - public static int calculateLogBaseTwo(int value) { - return calculateLogBaseTwoDeBruijn(value) - (isPowerOfTwo(value) ? 0 : 1); - } - - public static int func_154354_b(int p_154354_0_, int p_154354_1_) { - if (p_154354_1_ == 0) { - return 0; - } else if (p_154354_0_ == 0) { - return p_154354_1_; - } else { - if (p_154354_0_ < 0) { - p_154354_1_ *= -1; - } - - int i = p_154354_0_ % p_154354_1_; - return i == 0 ? p_154354_0_ : p_154354_0_ + p_154354_1_ - i; - } - } - - public static int func_180183_b(float p_180183_0_, float p_180183_1_, float p_180183_2_) { - return func_180181_b(floor_float(p_180183_0_ * 255.0F), floor_float(p_180183_1_ * 255.0F), floor_float(p_180183_2_ * 255.0F)); - } - - public static int func_180181_b(int p_180181_0_, int p_180181_1_, int p_180181_2_) { - int i = (p_180181_0_ << 8) + p_180181_1_; - i = (i << 8) + p_180181_2_; - return i; - } - - public static int func_180188_d(int p_180188_0_, int p_180188_1_) { - int i = (p_180188_0_ & 16711680) >> 16; - int j = (p_180188_1_ & 16711680) >> 16; - int k = (p_180188_0_ & 65280) >> 8; - int l = (p_180188_1_ & 65280) >> 8; - int i1 = (p_180188_0_ & 255) >> 0; - int j1 = (p_180188_1_ & 255) >> 0; - int k1 = (int) ((float) i * (float) j / 255.0F); - int l1 = (int) ((float) k * (float) l / 255.0F); - int i2 = (int) ((float) i1 * (float) j1 / 255.0F); - return p_180188_0_ & -16777216 | k1 << 16 | l1 << 8 | i2; - } - - public static double func_181162_h(double p_181162_0_) { - return p_181162_0_ - Math.floor(p_181162_0_); - } - - public static long getCoordinateRandom(int x, int y, int z) { - long i = (long) (x * 3129871L) ^ (long) z * 116129781L ^ (long) y; - i = i * i * 42317861L + i * 11L; - return i; - } - - public static UUID getRandomUuid(Random rand) { - long i = rand.nextLong() & -61441L | 16384L; - long j = rand.nextLong() & 4611686018427387903L | Long.MIN_VALUE; - return new UUID(i, j); - } - - public static double func_181160_c(double p_181160_0_, double p_181160_2_, double p_181160_4_) { - return (p_181160_0_ - p_181160_2_) / (p_181160_4_ - p_181160_2_); - } - - public static double func_181159_b(double p_181159_0_, double p_181159_2_) { - double d0 = p_181159_2_ * p_181159_2_ + p_181159_0_ * p_181159_0_; - - if (Double.isNaN(d0)) { - return Double.NaN; - } else { - boolean flag = p_181159_0_ < 0.0D; - - if (flag) { - p_181159_0_ = -p_181159_0_; - } - - boolean flag1 = p_181159_2_ < 0.0D; - - if (flag1) { - p_181159_2_ = -p_181159_2_; - } - - boolean flag2 = p_181159_0_ > p_181159_2_; - - if (flag2) { - double d1 = p_181159_2_; - p_181159_2_ = p_181159_0_; - p_181159_0_ = d1; - } - - double d9 = func_181161_i(d0); - p_181159_2_ = p_181159_2_ * d9; - p_181159_0_ = p_181159_0_ * d9; - double d2 = field_181163_d + p_181159_0_; - int i = (int) Double.doubleToRawLongBits(d2); - double d3 = field_181164_e[i]; - double d4 = field_181165_f[i]; - double d5 = d2 - field_181163_d; - double d6 = p_181159_0_ * d4 - p_181159_2_ * d5; - double d7 = (6.0D + d6 * d6) * d6 * 0.16666666666666666D; - double d8 = d3 + d7; - - if (flag2) { - d8 = (Math.PI / 2D) - d8; - } - - if (flag1) { - d8 = Math.PI - d8; - } - - if (flag) { - d8 = -d8; - } - - return d8; - } - } - - public static double func_181161_i(double p_181161_0_) { - double d0 = 0.5D * p_181161_0_; - long i = Double.doubleToRawLongBits(p_181161_0_); - i = 6910469410427058090L - (i >> 1); - p_181161_0_ = Double.longBitsToDouble(i); - p_181161_0_ = p_181161_0_ * (1.5D - d0 * p_181161_0_ * p_181161_0_); - return p_181161_0_; - } - - public static int func_181758_c(float p_181758_0_, float p_181758_1_, float p_181758_2_) { - int i = (int) (p_181758_0_ * 6.0F) % 6; - float f = p_181758_0_ * 6.0F - (float) i; - float f1 = p_181758_2_ * (1.0F - p_181758_1_); - float f2 = p_181758_2_ * (1.0F - f * p_181758_1_); - float f3 = p_181758_2_ * (1.0F - (1.0F - f) * p_181758_1_); - float f4; - float f5; - float f6; - - switch (i) { - case 0: - f4 = p_181758_2_; - f5 = f3; - f6 = f1; - break; - - case 1: - f4 = f2; - f5 = p_181758_2_; - f6 = f1; - break; - - case 2: - f4 = f1; - f5 = p_181758_2_; - f6 = f3; - break; - - case 3: - f4 = f1; - f5 = f2; - f6 = p_181758_2_; - break; - - case 4: - f4 = f3; - f5 = f1; - f6 = p_181758_2_; - break; - - case 5: - f4 = p_181758_2_; - f5 = f1; - f6 = f2; - break; - - default: - throw new RuntimeException("Something went wrong when converting from HSV to RGB. Input was " + p_181758_0_ + ", " + p_181758_1_ + ", " + p_181758_2_); - } - - int j = clamp_int((int) (f4 * 255.0F), 0, 255); - int k = clamp_int((int) (f5 * 255.0F), 0, 255); - int l = clamp_int((int) (f6 * 255.0F), 0, 255); - return j << 16 | k << 8 | l; - } -} diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/MiscUtils.java b/Anticheat/src/main/java/dev/brighten/ac/utils/MiscUtils.java index 39eece7..f0dba2d 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/MiscUtils.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/MiscUtils.java @@ -7,6 +7,7 @@ import dev.brighten.ac.utils.reflections.types.WrappedClass; import dev.brighten.ac.utils.reflections.types.WrappedField; import dev.brighten.ac.utils.world.types.SimpleCollisionBox; import dev.brighten.ac.utils.wrapper.Wrapper; +import me.hydro.emulator.util.mcp.MathHelper; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; @@ -358,6 +359,18 @@ public class MiscUtils { return true; } + public static int getDistanceToGround(Player p) { + Location loc = p.getLocation().clone(); + double y = loc.getBlockY(); + int distance = 0; + for (double i = y; i >= 0.0; i -= 1.0) { + loc.setY(i); + if (BlockUtils.getBlock(loc).getType().isSolid() || BlockUtils.getBlock(loc).isLiquid()) break; + ++distance; + } + return distance; + } + public static T getArgOrNull(T[] array, int index) { if(array.length > index) { return array[index]; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/MovementUtils.java b/Anticheat/src/main/java/dev/brighten/ac/utils/MovementUtils.java index a5aa351..ece9f71 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/MovementUtils.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/MovementUtils.java @@ -8,6 +8,7 @@ import dev.brighten.ac.utils.world.BlockData; import dev.brighten.ac.utils.world.CollisionBox; import dev.brighten.ac.utils.world.types.SimpleCollisionBox; import lombok.val; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/ReflectionsUtil.java b/Anticheat/src/main/java/dev/brighten/ac/utils/ReflectionsUtil.java index 75d17b4..98d5df0 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/ReflectionsUtil.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/ReflectionsUtil.java @@ -10,8 +10,6 @@ import org.bukkit.Server; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.material.Step; -import org.bukkit.material.WoodenStep; import org.bukkit.util.Vector; import java.io.File; @@ -23,7 +21,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.logging.Level; public class ReflectionsUtil { public static Class blockPosition = null; @@ -151,109 +148,6 @@ public class ReflectionsUtil { return toReturn; } - public static BoundingBox getBlockBoundingBox(Block block) { - try { - if (!isBukkitVerison("1_7")) { - Object bPos = blockPosition.getConstructor(int.class, int.class, int.class).newInstance(block.getLocation().getBlockX(), block.getLocation().getBlockY(), block.getLocation().getBlockZ()); - Object world = getWorldHandle(block.getWorld()); - Object data = getMethodValue(getMethod(world.getClass(), "getType", blockPosition), world, bPos); - Object blockNMS = getMethodValue(getMethod(getNMSClass("IBlockData"), "getBlock"), data); - - if (ProtocolVersion.getGameVersion().isBelow(ProtocolVersion.V1_13)) { - if (!isNewVersion()) { - - if (getMethodValueNoST(getMethodNoST(blockNMS.getClass(), "a", World, blockPosition, iBlockData), blockNMS, world, bPos, data) != null - && !BlockUtils.isSlab(block)) { - BoundingBox box = toBoundingBox(getMethodValue(getMethod(blockNMS.getClass(), "a", World, blockPosition, iBlockData), blockNMS, world, bPos, data)); - - if (ProtocolVersion.getGameVersion().isBelow(ProtocolVersion.V1_13)) { - if (block.getType().toString().contains("STEP") && !block.getType().toString().contains("WOOD")) { - Step slab = (Step) block.getType().getNewData(block.getData()); - - box.minY = block.getY(); - box.maxY = block.getY(); - if (slab.isInverted()) { - box = box.add(0, 0.5f, 0, 0, 1f, 0); - } else { - box = box.add(0, 0f, 0, 0, 0.5f, 0); - } - } else if (block.getType().toString().contains("STEP")) { - WoodenStep slab = (WoodenStep) block.getType().getNewData(block.getData()); - - box.minY = block.getY(); - box.maxY = block.getY(); - if (slab.isInverted()) { - box = box.add(0, 0.5f, 0, 0, 1f, 0); - } else { - box = box.add(0, 0f, 0, 0, 0.5f, 0); - } - } - } - return box; - } else if (getMethodValueNoST(getMethodNoST(vanillaBlock, "a", World, blockPosition, iBlockData), blockNMS, world, bPos, data) != null) { - BoundingBox box = toBoundingBox(getMethodValue(getMethod(vanillaBlock, "a", World, blockPosition, iBlockData), blockNMS, world, bPos, data)); - - if (ProtocolVersion.getGameVersion().isBelow(ProtocolVersion.V1_13)) { - if (block.getType().toString().contains("STEP") && !block.getType().toString().contains("WOOD")) { - Step slab = (Step) block.getType().getNewData(block.getData()); - - box.minY = block.getY(); - box.maxY = block.getY(); - if (slab.isInverted()) { - box = box.add(0, 0.5f, 0, 0, 1f, 0); - } else { - box = box.add(0, 0f, 0, 0, 0.5f, 0); - } - } else if (block.getType().toString().contains("STEP")) { - WoodenStep slab = (WoodenStep) block.getType().getNewData(block.getData()); - - box.minY = block.getY(); - box.maxY = block.getY(); - if (slab.isInverted()) { - box = box.add(0, 0.5f, 0, 0, 1f, 0); - } else { - box = box.add(0, 0f, 0, 0, 0.5f, 0); - } - } - } - return box; - } else { - return new BoundingBox(block.getX(), block.getY(), block.getZ(), block.getX(), block.getY(), block.getZ()); - } - } else { - if (getMethodValueNoST(getMethodNoST(blockNMS.getClass(), "a", iBlockData, getNMSClass("IBlockAccess"), blockPosition), blockNMS, data, world, bPos) != null) { - return toBoundingBox(getMethodValue(getMethod(blockNMS.getClass(), "a", iBlockData, getNMSClass("IBlockAccess"), blockPosition), blockNMS, data, world, bPos)).add(block.getX(), block.getY(), block.getZ(), block.getX(), block.getY(), block.getZ()); - } else if (getMethodValueNoST(getMethodNoST(vanillaBlock, "a", iBlockData, getNMSClass("IBlockAccess"), blockPosition), blockNMS, data, world, bPos) != null) { - return toBoundingBox(getMethodValue(getMethod(vanillaBlock, "a", iBlockData, getNMSClass("IBlockAccess"), blockPosition), blockNMS, data, world, bPos)).add(block.getX(), block.getY(), block.getZ(), block.getX(), block.getY(), block.getZ()); - } else { - return new BoundingBox(block.getX(), block.getY(), block.getZ(), block.getX(), block.getY(), block.getZ()); - } - } - } else { - Object voxelShape = getMethodValue(getMethod(vanillaBlock, "a", iBlockData, getNMSClass("IBlockAccess"), blockPosition), blockNMS, data, world, bPos); - Object axisAlignedBB = getMethodValue(getMethod(getNMSClass("VoxelShape"), "a"), voxelShape); - - - return toBoundingBox(axisAlignedBB); - - } - } else { - Object blockNMS = getVanillaBlock(block); - Object world = getWorldHandle(block.getWorld()); - if (getMethodValueNoST(getMethodNoST(vanillaBlock, "a", getNMSClass("World"), int.class, int.class, int.class), blockNMS, world, block.getLocation().getBlockX(), block.getLocation().getBlockY(), block.getLocation().getBlockZ()) != null) { - return toBoundingBox(getMethodValue(getMethod(vanillaBlock, "a", getNMSClass("World"), int.class, int.class, int.class), blockNMS, world, block.getLocation().getBlockX(), block.getLocation().getBlockY(), block.getLocation().getBlockZ())); - } else { - //Bukkit.broadcastMessage(block.getType().name()); - return new BoundingBox(block.getX(), block.getY(), block.getZ(), block.getX(), block.getY(), block.getZ()); - } - } - } catch (Exception e) { - Bukkit.getLogger().log(Level.SEVERE, "Error occured with block: " + block.getType().toString()); - e.printStackTrace(); - } - return null; - } - public static double getTPS(Server server) { Object handle = getMethodValue(getMethod(getCBClass("CraftServer"), "getHandle"), server); diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/Vec3D.java b/Anticheat/src/main/java/dev/brighten/ac/utils/Vec3D.java index 23fff4c..1b20579 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/Vec3D.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/Vec3D.java @@ -5,12 +5,13 @@ package dev.brighten.ac.utils; -import org.bukkit.Location; +import lombok.SneakyThrows; +import me.hydro.emulator.util.mcp.MathHelper; import javax.annotation.Nullable; import java.util.Objects; -public class Vec3D { +public class Vec3D implements Cloneable { public static final Vec3D a = new Vec3D(0.0D, 0.0D, 0.0D); public final double x; public final double y; @@ -34,10 +35,6 @@ public class Vec3D { this.z = var5; } - public Vec3D(Location var1) { - this(var1.getX(), var1.getY(), var1.getZ()); - } - public Vec3D a(Vec3D var1) { return new Vec3D(var1.x - this.x, var1.y - this.y, var1.z - this.z); } @@ -47,8 +44,9 @@ public class Vec3D { return var1 < 1.0E-4D ? a : new Vec3D(this.x / var1, this.y / var1, this.z / var1); } + @SneakyThrows public Vec3D clone() { - return new Vec3D(x, y, z); + return (Vec3D) super.clone(); } public double b(Vec3D var1) { @@ -146,19 +144,17 @@ public class Vec3D { public Vec3D a(float var1) { float var2 = MathHelper.cos(var1); float var3 = MathHelper.sin(var1); - double var4 = this.x; double var6 = this.y * (double)var2 + this.z * (double)var3; double var8 = this.z * (double)var2 - this.y * (double)var3; - return new Vec3D(var4, var6, var8); + return new Vec3D(this.x, var6, var8); } public Vec3D b(float var1) { float var2 = MathHelper.cos(var1); float var3 = MathHelper.sin(var1); double var4 = this.x * (double)var2 + this.z * (double)var3; - double var6 = this.y; double var8 = this.z * (double)var2 - this.x * (double)var3; - return new Vec3D(var4, var6, var8); + return new Vec3D(var4, this.y, var8); } @Override diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/CDL.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/CDL.java index 0330d63..e7064a1 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/CDL.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/CDL.java @@ -24,11 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONArray; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.JSONTokener; - /** * This provides static methods to convert comma delimited text into a * JSONArray, and to covert a JSONArray into comma delimited text. Comma diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/Cookie.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/Cookie.java index 2594f68..f6063ce 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/Cookie.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/Cookie.java @@ -24,10 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.JSONTokener; - /** * Convert a web browser cookie specification to a JSONObject and back. * JSON and Cookies are both notations for name/value pairs. diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/CookieList.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/CookieList.java index 28f0b80..13b1ef2 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/CookieList.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/CookieList.java @@ -24,11 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.Cookie; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.JSONTokener; - import java.util.Iterator; /** diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTP.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTP.java index fd29d05..e4b2b5d 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTP.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTP.java @@ -24,10 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.HTTPTokener; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; - import java.util.Iterator; /** diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTPTokener.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTPTokener.java index 6796c7a..0a44a1e 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTPTokener.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/HTTPTokener.java @@ -24,9 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONTokener; - /** * The HTTPTokener extends the JSONTokener to provide additional methods * for the parsing of HTTP headers. diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONArray.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONArray.java index ebe680d..518b697 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONArray.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONArray.java @@ -24,10 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.JSONTokener; - import java.io.IOException; import java.io.Writer; import java.lang.reflect.Array; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONML.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONML.java index 1f7a2ba..1e4a515 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONML.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONML.java @@ -24,12 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONArray; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.XML; -import dev.brighten.ac.utils.json.XMLTokener; - import java.util.Iterator; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONStringer.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONStringer.java index 17200bf..85d8ed8 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONStringer.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONStringer.java @@ -24,8 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONWriter; - import java.io.StringWriter; /** diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONTokener.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONTokener.java index c775c78..507408e 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONTokener.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONTokener.java @@ -1,9 +1,5 @@ package dev.brighten.ac.utils.json; -import dev.brighten.ac.utils.json.JSONArray; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; - import java.io.*; /* diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONWriter.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONWriter.java index 5247718..03a37c9 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONWriter.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/JSONWriter.java @@ -1,8 +1,5 @@ package dev.brighten.ac.utils.json; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; - import java.io.IOException; import java.io.Writer; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/XML.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/XML.java index b63f3a1..e56516f 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/XML.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/XML.java @@ -24,11 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONArray; -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONObject; -import dev.brighten.ac.utils.json.XMLTokener; - import java.util.Iterator; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/json/XMLTokener.java b/Anticheat/src/main/java/dev/brighten/ac/utils/json/XMLTokener.java index 2646f8f..39f5c81 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/json/XMLTokener.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/json/XMLTokener.java @@ -24,10 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import dev.brighten.ac.utils.json.JSONException; -import dev.brighten.ac.utils.json.JSONTokener; -import dev.brighten.ac.utils.json.XML; - /** * The XMLTokener extends the JSONTokener to provide additional methods * for the parsing of XML texts. diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/math/FloatVector.java b/Anticheat/src/main/java/dev/brighten/ac/utils/math/FloatVector.java index 5f2eb22..ac743df 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/math/FloatVector.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/math/FloatVector.java @@ -1,10 +1,10 @@ package dev.brighten.ac.utils.math; -import dev.brighten.ac.utils.MathHelper; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.util.Vector; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/math/IntVector.java b/Anticheat/src/main/java/dev/brighten/ac/utils/math/IntVector.java index 36b0aa6..2174a59 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/math/IntVector.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/math/IntVector.java @@ -1,10 +1,10 @@ package dev.brighten.ac.utils.math; -import dev.brighten.ac.utils.MathHelper; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.util.Vector; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/Menu.java b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/Menu.java index 4e8ca90..87ca5b9 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/Menu.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/Menu.java @@ -1,6 +1,7 @@ package dev.brighten.ac.utils.menu; import dev.brighten.ac.utils.menu.button.Button; +import dev.brighten.ac.utils.menu.type.BukkitInventoryHolder; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/MenuListener.java b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/MenuListener.java index 40bad57..4298615 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/MenuListener.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/MenuListener.java @@ -4,8 +4,8 @@ import dev.brighten.ac.Anticheat; import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.utils.BlockUtils; import dev.brighten.ac.utils.Color; -import dev.brighten.ac.utils.annotation.Init; import dev.brighten.ac.utils.XMaterial; +import dev.brighten.ac.utils.annotation.Init; import dev.brighten.ac.utils.menu.button.Button; import dev.brighten.ac.utils.menu.button.ClickAction; import dev.brighten.ac.utils.menu.button.UpdatingButton; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/preset/SettingsMenu.java b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/preset/SettingsMenu.java index 0b3b146..7de19e3 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/menu/preset/SettingsMenu.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/menu/preset/SettingsMenu.java @@ -1,8 +1,8 @@ package dev.brighten.ac.utils.menu.preset; -import dev.brighten.ac.utils.MathHelper; import dev.brighten.ac.utils.menu.preset.button.SettingButton; import dev.brighten.ac.utils.menu.type.impl.ChestMenu; +import me.hydro.emulator.util.mcp.MathHelper; public class SettingsMenu extends ChestMenu { public SettingsMenu(String title, SettingButton... buttons) { diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/world/BlockData.java b/Anticheat/src/main/java/dev/brighten/ac/utils/world/BlockData.java index b71b902..c800270 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/world/BlockData.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/world/BlockData.java @@ -5,7 +5,6 @@ import dev.brighten.ac.handler.block.WrappedBlock; import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.utils.BlockUtils; import dev.brighten.ac.utils.MiscUtils; -import dev.brighten.ac.utils.ReflectionsUtil; import dev.brighten.ac.utils.XMaterial; import dev.brighten.ac.utils.math.IntVector; import dev.brighten.ac.utils.world.blocks.*; @@ -51,10 +50,10 @@ public enum BlockData { new SimpleCollisionBox(0.4375, 0.0, 0.4375, 0.5625, 0.875, 0.5625) //top ), Material.BREWING_STAND), - _RAIL((protocol, player, b) -> ReflectionsUtil.getBlockBoundingBox(BlockUtils.getBlock(b.getLocation())) + /* _RAIL((protocol, player, b) -> ReflectionsUtil.getBlockBoundingBox(BlockUtils.getBlock(b.getLocation())) .toCollisionBox(),Arrays.stream(Material.values()) .filter(mat -> mat.name().toLowerCase().contains("rail")) - .toArray(Material[]::new)), + .toArray(Material[]::new)),*/ _ANVIL((protocol, player, b) -> { int dir = b.getData() & 0b01; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/world/types/SimpleCollisionBox.java b/Anticheat/src/main/java/dev/brighten/ac/utils/world/types/SimpleCollisionBox.java index c1422da..9c95ebf 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/world/types/SimpleCollisionBox.java +++ b/Anticheat/src/main/java/dev/brighten/ac/utils/world/types/SimpleCollisionBox.java @@ -83,7 +83,14 @@ public class SimpleCollisionBox implements CollisionBox { } public SimpleCollisionBox(Object aabb) { - this(MinecraftReflection.fromAABB(aabb)); + double[] box = MinecraftReflection.fromAABB(aabb); + + this.minX = box[0]; + this.minY = box[1]; + this.minZ = box[2]; + this.maxX = box[3]; + this.maxY = box[4]; + this.maxZ = box[5]; } public void sort() { @@ -343,7 +350,7 @@ public class SimpleCollisionBox implements CollisionBox { } public T toAxisAlignedBB() { - return MinecraftReflection.toAABB(this); + return MinecraftReflection.toAABB(minX, minY, minZ, maxX, maxY, maxZ); } public AxisAlignedBB toNeo() { diff --git a/Compat-1_19_R3/pom.xml b/Compat-1_19_R3/pom.xml new file mode 100644 index 0000000..ed7fd53 --- /dev/null +++ b/Compat-1_19_R3/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + dev.brighten.ac + EnterpriseAnticheat + 1.0-SNAPSHOT + + + Compat-1_19_R3 + + + 17 + 17 + UTF-8 + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + org.spigotmc + spigot-api + 1.19.4-R0.1-SNAPSHOT + provided + + + + \ No newline at end of file diff --git a/Compat/pom.xml b/Compat/pom.xml new file mode 100644 index 0000000..9777deb --- /dev/null +++ b/Compat/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + dev.brighten.ac + EnterpriseAnticheat + 1.0-SNAPSHOT + + + Compat + + + 17 + 17 + UTF-8 + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + funkemunky-releases + https://nexus.funkemunky.cc/content/repositories/releases/ + + + + + + me.hydro + emulator + 1.2-neo + compile + + + org.spigotmc + spigot-api + 1.19.4-R0.1-SNAPSHOT + provided + + + org.github.spigot + 1.8.8 + 1.8.8 + provided + + + org.github.spigot + 1.7.10 + 1.7.10 + provided + + + + \ No newline at end of file diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/ProtocolVersion.java b/Compat/src/main/java/dev/brighten/ac/packet/ProtocolVersion.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/packet/ProtocolVersion.java rename to Compat/src/main/java/dev/brighten/ac/packet/ProtocolVersion.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/FastTrig.java b/Compat/src/main/java/dev/brighten/ac/utils/FastTrig.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/FastTrig.java rename to Compat/src/main/java/dev/brighten/ac/utils/FastTrig.java diff --git a/Compat/src/main/java/dev/brighten/ac/utils/KLocation.java b/Compat/src/main/java/dev/brighten/ac/utils/KLocation.java new file mode 100644 index 0000000..c6cd753 --- /dev/null +++ b/Compat/src/main/java/dev/brighten/ac/utils/KLocation.java @@ -0,0 +1,132 @@ +package dev.brighten.ac.utils; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.util.Vector; + +import java.util.Objects; + +public class KLocation implements Cloneable { + public double x, y, z; + public float yaw, pitch; + public long timeStamp; + + public KLocation(double x, double y, double z, float yaw, float pitch, long timeStamp) { + this.x = x; + this.y = y; + this.z = z; + this.yaw = yaw; + this.pitch = pitch; + this.timeStamp = timeStamp; + } + + public KLocation(double x, double y, double z, float yaw, float pitch) { + this.x = x; + this.y = y; + this.z = z; + this.yaw = yaw; + this.pitch = pitch; + this.timeStamp = System.currentTimeMillis(); + } + + public KLocation(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + + this.timeStamp = System.currentTimeMillis(); + } + + public KLocation(Vector vector) { + this.x = vector.getX(); + this.y = vector.getY(); + this.z = vector.getZ(); + this.timeStamp = System.currentTimeMillis(); + } + + public KLocation(Location location) { + this.x = location.getX(); + this.y = location.getY(); + this.z = location.getZ(); + this.yaw = location.getYaw(); + this.pitch = location.getPitch(); + this.timeStamp = System.currentTimeMillis(); + } + + public Vector toVector() { + return new Vector(x, y, z); + } + + public Location toLocation(World world) { + return new Location(world, x, y, z, yaw, pitch); + } + + @SuppressWarnings("MethodDoesntCallSuperMethod") + @Override + public KLocation clone() { + return new KLocation(x, y, z, yaw, pitch, timeStamp); + } + + public double distanceSquared(KLocation other) { + double dx = (x - other.x), dy = (y - other.y), dz = (z - other.z); + return dx * dx + dy * dy + dz * dz; + } + + public double distance(KLocation other) { + return Math.sqrt(distanceSquared(other)); + } + + public KLocation add(double x, double y, double z) { + this.x+= x; + this.y+= y; + this.z+= z; + return this; + } + + public KLocation subtract(double x, double y, double z) { + this.x-= x; + this.y-= y; + this.z-= z; + return this; + } + + public KLocation setLocation(KLocation loc) { + this.x = loc.x; + this.y = loc.y; + this.z = loc.z; + this.yaw = loc.yaw; + this.pitch = loc.pitch; + this.timeStamp = loc.timeStamp; + + return this; + } + + public Vector getDirection() { + return MathUtils.getDirection(this); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + KLocation kLocation = (KLocation) o; + return Double.compare(kLocation.x, x) == 0 && Double.compare(kLocation.y, y) == 0 && Double.compare(kLocation.z, z) == 0 && Float.compare(kLocation.yaw, yaw) == 0 && Float.compare(kLocation.pitch, pitch) == 0 && timeStamp == kLocation.timeStamp; + } + + @Override + public int hashCode() { + return Objects.hash(x, y, z, yaw, pitch, timeStamp); + } + + @Override + public String toString() { + return "KLocation{" + + "x=" + x + + ", y=" + y + + ", z=" + z + + ", yaw=" + yaw + + ", pitch=" + pitch + + ", timeStamp=" + timeStamp + + '}'; + } +} diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/MathUtils.java b/Compat/src/main/java/dev/brighten/ac/utils/MathUtils.java similarity index 94% rename from Anticheat/src/main/java/dev/brighten/ac/utils/MathUtils.java rename to Compat/src/main/java/dev/brighten/ac/utils/MathUtils.java index 7cdcabd..b5771f6 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/MathUtils.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/MathUtils.java @@ -1,6 +1,7 @@ package dev.brighten.ac.utils; import lombok.val; +import me.hydro.emulator.util.mcp.MathHelper; import org.bukkit.Location; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -13,6 +14,8 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +// +@SuppressWarnings("unused") public class MathUtils { public static double GROUND_DIVISOR = 0.015625; @@ -239,13 +242,7 @@ public class MathUtils { } public static double getMedian(List data) { - if(data.size() > 1) { - if (data.size() % 2 == 0) - return (data.get(data.size() / 2) + data.get(data.size() / 2 - 1)) / 2; - else - return data.get(Math.round(data.size() / 2f)); - } - return 0; + return calculateDoubleMedian(data); } public static float getMedianFloat(List data) { @@ -265,7 +262,18 @@ public class MathUtils { data.add(number.doubleValue()); } - return getMedianFloat(data); + return calculateDoubleMedian(data); + } + + private static double calculateDoubleMedian(List data) { + if(data.size() > 1) { + if (data.size() % 2 == 0) + return (data.get(data.size() / 2) + data.get(data.size() / 2 - 1)) / 2; + else + return data.get(Math.round(data.size() / 2f)); + } + + return 0; } //Copied from apache math Kurtosis class. @@ -523,22 +531,13 @@ public class MathUtils { return Arrays.stream(equals).allMatch(equal -> MathUtils.getDelta(equalTo, equal) < accuracy); } - public static double getDistanceToBox(Vector vec, BoundingBox box) { - return vec.distance(getCenterOfBox(box)); - } - - public static Vector getCenterOfBox(BoundingBox box) { - return box.getMinimum().midpoint(box.getMaximum()); - } - //Returns -1 if fails. - public static T tryParse(String string) { + public static Number tryParse(String string) { try { - return (T)(Number)Double.parseDouble(string); - } catch(NumberFormatException e) { - + return Double.parseDouble(string); + } catch(NumberFormatException exception) { + return (-1); } - return (T)(Number)(-1); } //A lighter version of the Java hypotenuse function. @@ -668,10 +667,10 @@ public class MathUtils { } public static Vector getDirection(float yaw, float pitch) { - float f = MathHelper.cos(-yaw * 0.017453292F - (float)Math.PI); - float f1 = MathHelper.sin(-yaw * 0.017453292F - (float)Math.PI); - float f2 = -MathHelper.cos(-pitch * 0.017453292F); - float f3 = MathHelper.sin(-pitch * 0.017453292F); + float f = MathHelper.cos(MathHelper.FastMathType.VANILLA, -yaw * 0.017453292F - (float)Math.PI); + float f1 = MathHelper.sin(MathHelper.FastMathType.VANILLA, -yaw * 0.017453292F - (float)Math.PI); + float f2 = -MathHelper.cos(MathHelper.FastMathType.VANILLA, -pitch * 0.017453292F); + float f3 = MathHelper.sin(MathHelper.FastMathType.VANILLA, -pitch * 0.017453292F); return new Vector(f1 * f2, f3, f * f2); } @@ -771,33 +770,13 @@ public class MathUtils { return Math.abs(from.getY() - to.getY()); } - public static int getDistanceToGround(Player p) { - Location loc = p.getLocation().clone(); - double y = loc.getBlockY(); - int distance = 0; - for (double i = y; i >= 0.0; i -= 1.0) { - loc.setY(i); - if (BlockUtils.getBlock(loc).getType().isSolid() || BlockUtils.getBlock(loc).isLiquid()) break; - ++distance; - } - return distance; - } - public static double trim(int degree, double d) { - String format = "#.#"; - for (int i = 1; i < degree; ++i) { - format = format + "#"; - } - DecimalFormat twoDForm = new DecimalFormat(format); + DecimalFormat twoDForm = new DecimalFormat("#.#" + "#".repeat(Math.max(0, degree - 1))); return Double.parseDouble(twoDForm.format(d).replaceAll(",", ".")); } public static float trimFloat(int degree, float d) { - String format = "#.#"; - for (int i = 1; i < degree; ++i) { - format = format + "#"; - } - DecimalFormat twoDForm = new DecimalFormat(format); + DecimalFormat twoDForm = new DecimalFormat("#.#" + "#".repeat(Math.max(0, degree - 1))); return Float.parseFloat(twoDForm.format(d).replaceAll(",", ".")); } diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/Tuple.java b/Compat/src/main/java/dev/brighten/ac/utils/Tuple.java similarity index 87% rename from Anticheat/src/main/java/dev/brighten/ac/utils/Tuple.java rename to Compat/src/main/java/dev/brighten/ac/utils/Tuple.java index f2fe76a..6f054be 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/Tuple.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/Tuple.java @@ -15,9 +15,8 @@ public class Tuple { } public boolean equals(Object object) { - if (object instanceof Tuple) { - Tuple toCompare = (Tuple) object; - + if (this.getClass().isInstance(object)) { + var toCompare = (Tuple) object; return one.equals(toCompare.one) && two.equals(toCompare.two); } else return false; } diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/BiSupplier.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/BiSupplier.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/BiSupplier.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/BiSupplier.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/Interval.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/Interval.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/Interval.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/Interval.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java similarity index 82% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java index fd718e6..0163a0b 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/objects/MethodFunction.java @@ -1,7 +1,5 @@ package dev.brighten.ac.utils.objects; -import dev.brighten.ac.utils.MiscUtils; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.function.BiFunction; @@ -62,13 +60,13 @@ public class MethodFunction { if(function != null) { return (T) function.apply(instance); } else if(biFunc != null) { - return (T) biFunc.apply(instance, MiscUtils.getArgOrNull(args, 0)); + return (T) biFunc.apply(instance, getArgOrNull(args, 0)); } else if(triFunc != null) { - return (T) triFunc.apply(instance, MiscUtils.getArgOrNull(args, 0), - MiscUtils.getArgOrNull(args, 1)); + return (T) triFunc.apply(instance, getArgOrNull(args, 0), + getArgOrNull(args, 1)); } else if(quadFunc != null) { - return (T) quadFunc.apply(instance, MiscUtils.getArgOrNull(args, 0), - MiscUtils.getArgOrNull(args, 1), MiscUtils.getArgOrNull(args, 2)); + return (T) quadFunc.apply(instance, getArgOrNull(args, 0), + getArgOrNull(args, 1), getArgOrNull(args, 2)); } } @@ -79,4 +77,11 @@ public class MethodFunction { return null; } } + + private static T getArgOrNull(T[] array, int index) { + if(array.length > index) { + return array[index]; + } + return null; + } } diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/MultiFunction.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/MultiFunction.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/MultiFunction.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/MultiFunction.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/QuadFunction.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/QuadFunction.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/QuadFunction.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/QuadFunction.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/RemoteClassLoader.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/RemoteClassLoader.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/RemoteClassLoader.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/RemoteClassLoader.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/TriFunction.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/TriFunction.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/TriFunction.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/TriFunction.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/VariableValue.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/VariableValue.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/VariableValue.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/VariableValue.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingList.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingList.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingList.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingList.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingMap.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingMap.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingMap.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/ConcurrentEvictingMap.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingList.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingList.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingList.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingList.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingMap.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingMap.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingMap.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/evicting/EvictingMap.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredList.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredList.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredList.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredList.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredSet.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredSet.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredSet.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/ConcurrentFilteredSet.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredList.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredList.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredList.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredList.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredSet.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredSet.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredSet.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/filtered/FilteredSet.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/ConcurrentListMap.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/ConcurrentListMap.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/ConcurrentListMap.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/ConcurrentListMap.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/HashListMap.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/HashListMap.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/HashListMap.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/HashListMap.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/ListMap.java b/Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/ListMap.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/objects/listmap/ListMap.java rename to Compat/src/main/java/dev/brighten/ac/utils/objects/listmap/ListMap.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java similarity index 98% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java index 69aeb60..792e31a 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/reflections/Reflections.java @@ -8,10 +8,10 @@ */ package dev.brighten.ac.utils.reflections; -import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.utils.objects.QuadFunction; import dev.brighten.ac.utils.objects.TriFunction; import dev.brighten.ac.utils.reflections.types.WrappedClass; +import dev.brighten.ac.packet.ProtocolVersion; import lombok.Getter; import lombok.SneakyThrows; import lombok.val; @@ -61,10 +61,6 @@ public class Reflections { } } - public void hi() { - System.out.println("hi"); - } - public static WrappedClass getClass(String name) { try { return new WrappedClass(Class.forName(name)); diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java index cb12bf5..5f3e838 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/CraftReflection.java @@ -1,9 +1,9 @@ package dev.brighten.ac.utils.reflections.impl; -import dev.brighten.ac.packet.ProtocolVersion; import dev.brighten.ac.utils.reflections.Reflections; import dev.brighten.ac.utils.reflections.types.WrappedClass; import dev.brighten.ac.utils.reflections.types.WrappedMethod; +import dev.brighten.ac.packet.ProtocolVersion; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Material; diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java similarity index 92% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java index 60b8556..5187773 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java +++ b/Compat/src/main/java/dev/brighten/ac/utils/reflections/impl/MinecraftReflection.java @@ -1,13 +1,11 @@ package dev.brighten.ac.utils.reflections.impl; import dev.brighten.ac.packet.ProtocolVersion; -import dev.brighten.ac.utils.BoundingBox; import dev.brighten.ac.utils.reflections.Reflections; import dev.brighten.ac.utils.reflections.types.WrappedClass; import dev.brighten.ac.utils.reflections.types.WrappedConstructor; import dev.brighten.ac.utils.reflections.types.WrappedField; import dev.brighten.ac.utils.reflections.types.WrappedMethod; -import dev.brighten.ac.utils.world.types.SimpleCollisionBox; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.HumanEntity; @@ -179,21 +177,6 @@ public class MinecraftReflection { return getMainThread(CraftReflection.getMinecraftServer()); } - //a, b, c is minX, minY, minZ - //d, e, f is maxX, maxY, maxZ - public static BoundingBox fromAABB(Object aabb) { - double a, b, c, d, e, f; - - a = aBB.get(aabb); - b = bBB.get(aabb); - c = cBB.get(aabb); - d = dBB.get(aabb); - e = eBB.get(aabb); - f = fBB.get(aabb); - - return new BoundingBox((float) a,(float) b,(float) c,(float) d,(float) e,(float) f); - } - //Can either use Player or EntityPlayer object. public static T getPlayerConnection(Object player) { @@ -229,26 +212,37 @@ public class MinecraftReflection { return itemStackAsBukkitCopy.invoke(null, vanillaItemStack); } - public static T toAABB(BoundingBox box) { - if(ProtocolVersion.getGameVersion().isBelow(ProtocolVersion.V1_8)) { - return idioticOldStaticConstructorAABB - .invoke(null, - (double)box.minX, (double)box.minY, (double)box.minZ, - (double)box.maxX, (double)box.maxY, (double)box.maxZ); - } else return aabbConstructor - .newInstance((double)box.minX, (double)box.minY, (double)box.minZ, - (double)box.maxX, (double)box.maxY, (double)box.maxZ); + /** + * Extracts AxisAlignedBB Points. + * @param aabb AxisAlignedBB + * @return double[6] of points. + */ + public static double[] fromAABB(Object aabb) { + double[] boxArray = new double[6]; + + boxArray[0] = aBB.get(aabb); + boxArray[1] = bBB.get(aabb); + boxArray[2] = cBB.get(aabb); + boxArray[3] = dBB.get(aabb); + boxArray[4] = eBB.get(aabb); + boxArray[5] = fBB.get(aabb); + + return boxArray; } - public static T toAABB(SimpleCollisionBox box) { + /** + * Creates a new AxisAlignedBB. + * @return new AxisAlignedBB + */ + public static T toAABB(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { if(ProtocolVersion.getGameVersion().isBelow(ProtocolVersion.V1_8)) { return idioticOldStaticConstructorAABB .invoke(null, - box.minX, box.minY, box.minZ, - box.maxX, box.maxY, box.maxZ); + minX, minY, minZ, + maxX, maxY, maxZ); } else return aabbConstructor - .newInstance(box.minX, box.minY, box.minZ, - box.maxX, box.maxY, box.maxZ); + .newInstance(minX, minY, minZ, + maxX, maxY, maxZ); } //Either bukkit or vanilla world object can be used. diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedClass.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedClass.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedClass.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedClass.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedConstructor.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedConstructor.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedConstructor.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedConstructor.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedField.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedField.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedField.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedField.java diff --git a/Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedMethod.java b/Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedMethod.java similarity index 100% rename from Anticheat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedMethod.java rename to Compat/src/main/java/dev/brighten/ac/utils/reflections/types/WrappedMethod.java diff --git a/pom.xml b/pom.xml index 1a6fd49..51a85d6 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,8 @@ API LegacyAPI ModernAPI + Compat + Compat-1_19_R3