Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

LiquidBounce Forum

  1. Home
  2. Kotlin/Java
  3. [Kotlin] HackerDetector

[Kotlin] HackerDetector

Scheduled Pinned Locked Moved Kotlin/Java
11 Posts 9 Posters 3.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • qwq LiulihaocaiQ qwq Liulihaocai

    DETECT SIGMA HATARS

    code below...

    package net.ccbluex.liquidbounce.features.module.modules.player
    
    import net.ccbluex.liquidbounce.event.EventTarget
    import net.ccbluex.liquidbounce.event.PacketEvent
    import net.ccbluex.liquidbounce.event.WorldEvent
    import net.ccbluex.liquidbounce.features.module.Module
    import net.ccbluex.liquidbounce.features.module.ModuleCategory
    import net.ccbluex.liquidbounce.features.module.ModuleInfo
    import net.ccbluex.liquidbounce.utils.EntityUtils
    import net.ccbluex.liquidbounce.utils.timer.MSTimer
    import net.ccbluex.liquidbounce.value.BoolValue
    import net.ccbluex.liquidbounce.value.IntegerValue
    import net.minecraft.client.Minecraft
    import net.minecraft.entity.Entity
    import net.minecraft.entity.EntityLivingBase
    import net.minecraft.entity.player.EntityPlayer
    import net.minecraft.network.play.server.S0BPacketAnimation
    import net.minecraft.network.play.server.S14PacketEntity
    import net.minecraft.network.play.server.S18PacketEntityTeleport
    import net.minecraft.network.play.server.S19PacketEntityStatus
    import net.minecraft.potion.Potion
    import net.minecraft.util.AxisAlignedBB
    import kotlin.math.abs
    import kotlin.math.atan2
    import kotlin.math.pow
    import kotlin.math.sqrt
    
    
    @ModuleInfo(name = "HackerDetector", description = "Detect SIGMA Hackers.", category = ModuleCategory.PLAYER)
    class HackerDetector : Module() {
        private val GRAVITY_FRICTION = 0.9800000190734863
    
        private val combatCheck=BoolValue("Combat",true)
        private val movementCheck=BoolValue("Movement",true)
        private val debugMode=BoolValue("Debug",false)
        private val report=BoolValue("AutoReport",true)
        private val vlValue=IntegerValue("VL",300,100,500)
    
        private val datas=HashMap<EntityPlayer,HackerData>()
        private val hackers=ArrayList<String>()
    
    //    @EventTarget
    //    fun onUpdate(event: UpdateEvent){
    //        //this takes a bit time so we do it async
    //        if(movementCheck.get()) {
    //            Thread { checkMove() }.start()
    //        }
    //    }
    
        @EventTarget
        fun onPacket(event: PacketEvent){
            if(event.packet is S19PacketEntityStatus){
                val packet=event.packet
                if(combatCheck.get()&&packet.opCode.toInt()==2){
                    Thread { checkCombatHurt(packet.getEntity(mc.theWorld)) }.start()
                }
            }else if(event.packet is S0BPacketAnimation){
                val packet=event.packet
                val entity=mc.theWorld.getEntityByID(packet.entityID)
                if(entity !is EntityPlayer||packet.animationType!=0) return
                val data=datas[entity] ?: return
                data.tempAps++
            }else if(movementCheck.get()){
                if(event.packet is S18PacketEntityTeleport){
                    val packet=event.packet
                    val entity=mc.theWorld.getEntityByID(packet.entityId)
                    if(entity !is EntityPlayer) return
                    Thread{ checkPlayer(entity) }.start()
                }else if(event.packet is S14PacketEntity){
                    val packet=event.packet
                    val entity=packet.getEntity(mc.theWorld)
                    if(entity !is EntityPlayer) return
                    Thread{ checkPlayer(entity) }.start()
                }
            }
        }
    
        override fun onEnable() {
            datas.clear()
            hackers.clear()
        }
    
        @EventTarget
        fun onWorld(event: WorldEvent){
            datas.clear()
        }
    
        fun isHacker(entity: EntityLivingBase):Boolean{
            if(entity !is EntityPlayer) return false
            return hackers.contains(entity.name)
        }
    
        //onupdate
    //    private fun checkMove(){
    //        for(entity in mc.theWorld.loadedEntityList){
    //            if(entity !is EntityPlayer) continue
    //            checkPlayer(entity)
    //        }
    //    }
    
        private fun checkPlayer(player: EntityPlayer){
            if(player.equals(mc.thePlayer)||EntityUtils.isFriend(player)) return
            if(datas[player]==null) datas[player] = HackerData(player)
            val data=datas[player] ?: return
            data.update()
            if(data.aliveTicks<20) return
    
            //settings
            var minAirTicks = 10
            if(player.isPotionActive(Potion.jump)){
                minAirTicks+=player.getActivePotionEffect(Potion.jump).amplifier*3
            }
            val maxMotionY = 0.47 //for strict check u can change this to 0.42
            val maxOffset = 0.07
            var passed=true
            
            if(player.hurtTime>0){
                //velocity
                if (player.hurtResistantTime in 7..11
                    && player.prevPosX == player.posX && player.posZ == player.lastTickPosZ
                    && !mc.theWorld.checkBlockCollision(player.entityBoundingBox.expand(0.05, 0.0, 0.05))) {
                    flag("velocity",50,data,"NO KNOCKBACK")
                }
                if (player.hurtResistantTime in 7..11
                    && player.lastTickPosY == player.posY) {
                    flag("velocity",50,data,"NO KNOCKBACK")
                }
                return
            }
    
            //phase
    //        if(mc.theWorld.checkBlockCollision(player.entityBoundingBox)){
    //            flag("phase",50,data,"COLLIDE")
    //            passed=false
    //        }
    
            //killaura from jigsaw
            if (data.aps >= 10) {
                flag("killaura",30,data,"HIGH APS(aps=${data.aps})")
                passed=false
            }
            if (data.aps > 2 && data.aps == data.preAps && data.aps != 0) {
                flag("killaura",30,data,"STRANGE APS(aps=${data.aps})")
                passed=false
            }
            if (abs(player.rotationYaw - player.prevRotationYaw) > 50 && player.swingProgress != 0F
                && data.aps >= 3) {
                flag("killaura",30,data,"YAW RATE(aps=${data.aps},yawRot=${abs(player.rotationYaw - player.prevRotationYaw)})")
                passed=false
            }
    
            //flight
            if(player.ridingEntity==null&&data.airTicks>(minAirTicks/2)){
                if (abs(data.motionY - data.lastMotionY) < (if(data.airTicks >= 115){1E-3}else{5E-3})){
                    flag("fly",20,data,"GLIDE(diff=${abs(data.motionY - data.lastMotionY)})")
                    passed=false
                }
                if(data.motionY > maxMotionY){
                    flag("fly",20,data,"YAXIS(motY=${data.motionY})")
                    passed=false
                }
                if(data.airTicks > minAirTicks&&data.motionY>0){
                    flag("fly",30,data,"YAXIS(motY=${data.motionY})")
                    passed=false
                }
                //gravity check from ACR
    //            val gravitatedY = (data.lastMotionY - 0.08) * GRAVITY_FRICTION
    //            val offset = abs(gravitatedY - data.motionY)
    //            if (offset > maxOffset) {
    //                flag("fly",15,data,"GRAVITY(offset=$offset)")
    //                passed=false
    //            }
            }
    
            //speed
            val distanceXZ=abs(data.motionXZ)
            if(data.airTicks==0){ //onGround
                var limit = 0.37
                if(data.groundTicks < 5) limit += 0.1
                if(player.isBlocking) limit *= 0.45
                if(player.isSneaking) limit *= 0.68
                if(player.isPotionActive(Potion.moveSpeed)){ //server will send real player potionData?i hope that
                    limit += player.getActivePotionEffect(Potion.moveSpeed).amplifier
                    limit *= 1.5
                }
                if (distanceXZ > limit) {
                    flag("speed",20,data,"GROUND SPEED(speed=$distanceXZ,limit=$limit)")
                }
            }else{
                val multiplier = 0.985
                var predict = 0.36 * multiplier.pow(data.airTicks + 1)
                if (data.airTicks >= 115)
                    predict = 0.08.coerceAtLeast(predict);
                var limit=0.05
                if(player.isPotionActive(Potion.moveSpeed)){
                    predict += player.getActivePotionEffect(Potion.moveSpeed).amplifier * 0.05
                    limit *= 1.2
                }
                if(player.isPotionActive(Potion.jump)) {
                    predict += player.getActivePotionEffect(Potion.jump).amplifier * 0.05
                }
                if(player.isBlocking)
                    predict *= 0.7
    
                if (distanceXZ - predict > limit) {
                    flag("speed",20,data,"AIR SPEED(speed=$distanceXZ,limit=$limit,predict=$predict)")
                }
            }
    //        if (abs(data.motionX) > 0.42
    //            || abs(data.motionZ) > 0.42){
    //            flag("speed",30,data,"HIGH SPEED")
    //            passed=false
    //        }
    //        if (player.isBlocking && (abs(data.motionX) > 0.2 || abs(data.motionZ) > 0.2)) {
    //            flag("speed",30,data,"HIGH SPEED(BLOCKING)") //blocking is just noslow lol
    //            passed=false
    //        }
    
            //reduce vl
            if(passed){
                data.vl-=1
            }
        }
    
        private fun flag(type: String,vl: Int,data: HackerData,msg: String){
            if(!data.useHacks.contains(type)) data.useHacks.add(type)
            //display debug message
            if(debugMode.get()){
                chat("§f${data.player.name} §euse §2$type §7$msg §c${data.vl}+${vl}")
            }
            data.vl+=vl
    
            if(data.vl>vlValue.get()){
                var use=""
                for(typ in data.useHacks){
                    use+="§a$typ§2,"
                }
                use=use.substring(0,use.length-3)
                chat("§f${data.player.name} §eusing hack $use")
                data.vl=-vlValue.get()
    
                //autoreport only redesky
                val name=data.player.name
                if(report.get()&&!hackers.contains(name)){
                    mc.thePlayer.sendChatMessage("/reportar $name")
                    hackers.add(name)
                }
            }
        }
    
        private fun checkCombatHurt(entity: Entity){
            if(entity !is EntityLivingBase) return
            var attacker:EntityPlayer?=null
            var attackerCount=0
    
            for(worldEntity in mc.theWorld.loadedEntityList){
                if(worldEntity !is EntityPlayer||worldEntity.getDistanceToEntity(entity)>7||worldEntity.equals(entity)) continue
                attackerCount++
                attacker=worldEntity
            }
    
            //multi attacker may cause false result
            if(attackerCount!=1) return
            if(attacker!! == entity||EntityUtils.isFriend(attacker)) return //i and my friend is hacker lol
            val data=datas[attacker] ?: return
    
            //reach check
            val reach=attacker.getDistanceToEntity(entity)
            if(reach>3.7){
                flag("killaura",70,data,"(reach=$reach)")
            }
    
            //aim check
            val yawDiff=calculateYawDifference(attacker,entity)
            if(yawDiff>50){
                flag("killaura",100,data,"(yawDiff=$yawDiff)")
            }
        }
    
        private fun calculateYawDifference(from: EntityLivingBase, to: EntityLivingBase): Double {
            val x = to.posX - from.posX
            val z = to.posZ - from.posZ
            return if (x == 0.0 && z == 0.0) {
                from.rotationYaw.toDouble()
            } else {
                val theta = atan2(-x, z)
                val yaw=Math.toDegrees((theta + 6.283185307179586) % 6.283185307179586)
                abs(180 - abs(abs(yaw - from.rotationYaw) - 180));
            }
        }
    }
    
    class HackerData(val player:EntityPlayer){
        var aliveTicks=0
        // Ticks in air
        var airTicks = 0
    
        // Ticks on ground
        var groundTicks = 0
    
        // motion of the movement
        var motionX = 0.0
        var motionY = 0.0
        var motionZ = 0.0
        var motionXZ = 0.0
    
        // Previous motion of the movement
        var lastMotionX = 0.0
        var lastMotionY = 0.0
        var lastMotionZ = 0.0
        var lastMotionXZ = 0.0
    
        // combat check
        var aps = 0
        var preAps = 0
        var tempAps = 0
        private val apsTimer=MSTimer()
    
        var vl=0
        var useHacks=ArrayList<String>()
    
        fun update(){
            aliveTicks++
            if (apsTimer.hasTimePassed(1000)) {
                preAps = aps;
                aps = tempAps;
                tempAps = 0;
            }
    
            if(calculateGround()){
                groundTicks++
                airTicks=0
            }else{
                airTicks++
                groundTicks=0
            }
    
            this.lastMotionX = this.motionX
            this.lastMotionY = this.motionY
            this.lastMotionZ = this.motionZ
            this.lastMotionXZ = this.motionXZ
            this.motionX = player.posX-player.prevPosX
            this.motionY = player.posY-player.prevPosY
            this.motionZ = player.posZ-player.prevPosZ
            this.motionXZ = sqrt(motionX*motionX + motionZ*motionZ)
        }
    
        private fun calculateGround(): Boolean {
            val playerBoundingBox = player.entityBoundingBox
            val blockHeight = 1
            val customBox = AxisAlignedBB(playerBoundingBox.maxX, player.posY-blockHeight, playerBoundingBox.maxZ, playerBoundingBox.minX, player.posY, playerBoundingBox.minZ)
            return Minecraft.getMinecraft().theWorld.checkBlockCollision(customBox)
        }
    }
    
    
    DreamWasFuckedD Offline
    DreamWasFuckedD Offline
    DreamWasFucked
    wrote on last edited by
    #2

    @qwq-liulihaocai YEEES SIGMA ANTICHEET NO MORA SIGMA HATARS!!

    1 Reply Last reply
    0
    • Advanced SkidderA Offline
      Advanced SkidderA Offline
      Advanced Skidder
      wrote on last edited by
      #3

      Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

      ? HackermanH 2 Replies Last reply
      1
      • Advanced SkidderA Advanced Skidder

        Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

        ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #4

        @advanced-skidder said in [Kotlin] HackerDetector:

        Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

        you are mega retarded hackerman is dumb asf

        Advanced SkidderA 1 Reply Last reply
        1
        • ? A Former User

          @advanced-skidder said in [Kotlin] HackerDetector:

          Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

          you are mega retarded hackerman is dumb asf

          Advanced SkidderA Offline
          Advanced SkidderA Offline
          Advanced Skidder
          wrote on last edited by
          #5

          @chocopiexd Capture.PNG
          sure?

          ? 1 Reply Last reply
          0
          • Advanced SkidderA Advanced Skidder

            @chocopiexd Capture.PNG
            sure?

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #6

            @advanced-skidder said in [Kotlin] HackerDetector:

            @chocopiexd Capture.PNG
            sure?

            liulihaocai 100% isn't hackerman

            1 Reply Last reply
            0
            • Advanced SkidderA Advanced Skidder

              Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

              HackermanH Offline
              HackermanH Offline
              Hackerman
              wrote on last edited by
              #7

              @advanced-skidder yes thats definitely me

              Advanced SkidderA 1 Reply Last reply
              0
              • HackermanH Hackerman

                @advanced-skidder yes thats definitely me

                Advanced SkidderA Offline
                Advanced SkidderA Offline
                Advanced Skidder
                wrote on last edited by
                #8

                @hackerman POG

                1 Reply Last reply
                0
                • BobikHatarB Offline
                  BobikHatarB Offline
                  BobikHatar
                  wrote on last edited by
                  #9

                  HATAR DETECTOR EZ

                  1 Reply Last reply
                  0
                  • qwq LiulihaocaiQ qwq Liulihaocai

                    DETECT SIGMA HATARS

                    code below...

                    package net.ccbluex.liquidbounce.features.module.modules.player
                    
                    import net.ccbluex.liquidbounce.event.EventTarget
                    import net.ccbluex.liquidbounce.event.PacketEvent
                    import net.ccbluex.liquidbounce.event.WorldEvent
                    import net.ccbluex.liquidbounce.features.module.Module
                    import net.ccbluex.liquidbounce.features.module.ModuleCategory
                    import net.ccbluex.liquidbounce.features.module.ModuleInfo
                    import net.ccbluex.liquidbounce.utils.EntityUtils
                    import net.ccbluex.liquidbounce.utils.timer.MSTimer
                    import net.ccbluex.liquidbounce.value.BoolValue
                    import net.ccbluex.liquidbounce.value.IntegerValue
                    import net.minecraft.client.Minecraft
                    import net.minecraft.entity.Entity
                    import net.minecraft.entity.EntityLivingBase
                    import net.minecraft.entity.player.EntityPlayer
                    import net.minecraft.network.play.server.S0BPacketAnimation
                    import net.minecraft.network.play.server.S14PacketEntity
                    import net.minecraft.network.play.server.S18PacketEntityTeleport
                    import net.minecraft.network.play.server.S19PacketEntityStatus
                    import net.minecraft.potion.Potion
                    import net.minecraft.util.AxisAlignedBB
                    import kotlin.math.abs
                    import kotlin.math.atan2
                    import kotlin.math.pow
                    import kotlin.math.sqrt
                    
                    
                    @ModuleInfo(name = "HackerDetector", description = "Detect SIGMA Hackers.", category = ModuleCategory.PLAYER)
                    class HackerDetector : Module() {
                        private val GRAVITY_FRICTION = 0.9800000190734863
                    
                        private val combatCheck=BoolValue("Combat",true)
                        private val movementCheck=BoolValue("Movement",true)
                        private val debugMode=BoolValue("Debug",false)
                        private val report=BoolValue("AutoReport",true)
                        private val vlValue=IntegerValue("VL",300,100,500)
                    
                        private val datas=HashMap<EntityPlayer,HackerData>()
                        private val hackers=ArrayList<String>()
                    
                    //    @EventTarget
                    //    fun onUpdate(event: UpdateEvent){
                    //        //this takes a bit time so we do it async
                    //        if(movementCheck.get()) {
                    //            Thread { checkMove() }.start()
                    //        }
                    //    }
                    
                        @EventTarget
                        fun onPacket(event: PacketEvent){
                            if(event.packet is S19PacketEntityStatus){
                                val packet=event.packet
                                if(combatCheck.get()&&packet.opCode.toInt()==2){
                                    Thread { checkCombatHurt(packet.getEntity(mc.theWorld)) }.start()
                                }
                            }else if(event.packet is S0BPacketAnimation){
                                val packet=event.packet
                                val entity=mc.theWorld.getEntityByID(packet.entityID)
                                if(entity !is EntityPlayer||packet.animationType!=0) return
                                val data=datas[entity] ?: return
                                data.tempAps++
                            }else if(movementCheck.get()){
                                if(event.packet is S18PacketEntityTeleport){
                                    val packet=event.packet
                                    val entity=mc.theWorld.getEntityByID(packet.entityId)
                                    if(entity !is EntityPlayer) return
                                    Thread{ checkPlayer(entity) }.start()
                                }else if(event.packet is S14PacketEntity){
                                    val packet=event.packet
                                    val entity=packet.getEntity(mc.theWorld)
                                    if(entity !is EntityPlayer) return
                                    Thread{ checkPlayer(entity) }.start()
                                }
                            }
                        }
                    
                        override fun onEnable() {
                            datas.clear()
                            hackers.clear()
                        }
                    
                        @EventTarget
                        fun onWorld(event: WorldEvent){
                            datas.clear()
                        }
                    
                        fun isHacker(entity: EntityLivingBase):Boolean{
                            if(entity !is EntityPlayer) return false
                            return hackers.contains(entity.name)
                        }
                    
                        //onupdate
                    //    private fun checkMove(){
                    //        for(entity in mc.theWorld.loadedEntityList){
                    //            if(entity !is EntityPlayer) continue
                    //            checkPlayer(entity)
                    //        }
                    //    }
                    
                        private fun checkPlayer(player: EntityPlayer){
                            if(player.equals(mc.thePlayer)||EntityUtils.isFriend(player)) return
                            if(datas[player]==null) datas[player] = HackerData(player)
                            val data=datas[player] ?: return
                            data.update()
                            if(data.aliveTicks<20) return
                    
                            //settings
                            var minAirTicks = 10
                            if(player.isPotionActive(Potion.jump)){
                                minAirTicks+=player.getActivePotionEffect(Potion.jump).amplifier*3
                            }
                            val maxMotionY = 0.47 //for strict check u can change this to 0.42
                            val maxOffset = 0.07
                            var passed=true
                            
                            if(player.hurtTime>0){
                                //velocity
                                if (player.hurtResistantTime in 7..11
                                    && player.prevPosX == player.posX && player.posZ == player.lastTickPosZ
                                    && !mc.theWorld.checkBlockCollision(player.entityBoundingBox.expand(0.05, 0.0, 0.05))) {
                                    flag("velocity",50,data,"NO KNOCKBACK")
                                }
                                if (player.hurtResistantTime in 7..11
                                    && player.lastTickPosY == player.posY) {
                                    flag("velocity",50,data,"NO KNOCKBACK")
                                }
                                return
                            }
                    
                            //phase
                    //        if(mc.theWorld.checkBlockCollision(player.entityBoundingBox)){
                    //            flag("phase",50,data,"COLLIDE")
                    //            passed=false
                    //        }
                    
                            //killaura from jigsaw
                            if (data.aps >= 10) {
                                flag("killaura",30,data,"HIGH APS(aps=${data.aps})")
                                passed=false
                            }
                            if (data.aps > 2 && data.aps == data.preAps && data.aps != 0) {
                                flag("killaura",30,data,"STRANGE APS(aps=${data.aps})")
                                passed=false
                            }
                            if (abs(player.rotationYaw - player.prevRotationYaw) > 50 && player.swingProgress != 0F
                                && data.aps >= 3) {
                                flag("killaura",30,data,"YAW RATE(aps=${data.aps},yawRot=${abs(player.rotationYaw - player.prevRotationYaw)})")
                                passed=false
                            }
                    
                            //flight
                            if(player.ridingEntity==null&&data.airTicks>(minAirTicks/2)){
                                if (abs(data.motionY - data.lastMotionY) < (if(data.airTicks >= 115){1E-3}else{5E-3})){
                                    flag("fly",20,data,"GLIDE(diff=${abs(data.motionY - data.lastMotionY)})")
                                    passed=false
                                }
                                if(data.motionY > maxMotionY){
                                    flag("fly",20,data,"YAXIS(motY=${data.motionY})")
                                    passed=false
                                }
                                if(data.airTicks > minAirTicks&&data.motionY>0){
                                    flag("fly",30,data,"YAXIS(motY=${data.motionY})")
                                    passed=false
                                }
                                //gravity check from ACR
                    //            val gravitatedY = (data.lastMotionY - 0.08) * GRAVITY_FRICTION
                    //            val offset = abs(gravitatedY - data.motionY)
                    //            if (offset > maxOffset) {
                    //                flag("fly",15,data,"GRAVITY(offset=$offset)")
                    //                passed=false
                    //            }
                            }
                    
                            //speed
                            val distanceXZ=abs(data.motionXZ)
                            if(data.airTicks==0){ //onGround
                                var limit = 0.37
                                if(data.groundTicks < 5) limit += 0.1
                                if(player.isBlocking) limit *= 0.45
                                if(player.isSneaking) limit *= 0.68
                                if(player.isPotionActive(Potion.moveSpeed)){ //server will send real player potionData?i hope that
                                    limit += player.getActivePotionEffect(Potion.moveSpeed).amplifier
                                    limit *= 1.5
                                }
                                if (distanceXZ > limit) {
                                    flag("speed",20,data,"GROUND SPEED(speed=$distanceXZ,limit=$limit)")
                                }
                            }else{
                                val multiplier = 0.985
                                var predict = 0.36 * multiplier.pow(data.airTicks + 1)
                                if (data.airTicks >= 115)
                                    predict = 0.08.coerceAtLeast(predict);
                                var limit=0.05
                                if(player.isPotionActive(Potion.moveSpeed)){
                                    predict += player.getActivePotionEffect(Potion.moveSpeed).amplifier * 0.05
                                    limit *= 1.2
                                }
                                if(player.isPotionActive(Potion.jump)) {
                                    predict += player.getActivePotionEffect(Potion.jump).amplifier * 0.05
                                }
                                if(player.isBlocking)
                                    predict *= 0.7
                    
                                if (distanceXZ - predict > limit) {
                                    flag("speed",20,data,"AIR SPEED(speed=$distanceXZ,limit=$limit,predict=$predict)")
                                }
                            }
                    //        if (abs(data.motionX) > 0.42
                    //            || abs(data.motionZ) > 0.42){
                    //            flag("speed",30,data,"HIGH SPEED")
                    //            passed=false
                    //        }
                    //        if (player.isBlocking && (abs(data.motionX) > 0.2 || abs(data.motionZ) > 0.2)) {
                    //            flag("speed",30,data,"HIGH SPEED(BLOCKING)") //blocking is just noslow lol
                    //            passed=false
                    //        }
                    
                            //reduce vl
                            if(passed){
                                data.vl-=1
                            }
                        }
                    
                        private fun flag(type: String,vl: Int,data: HackerData,msg: String){
                            if(!data.useHacks.contains(type)) data.useHacks.add(type)
                            //display debug message
                            if(debugMode.get()){
                                chat("§f${data.player.name} §euse §2$type §7$msg §c${data.vl}+${vl}")
                            }
                            data.vl+=vl
                    
                            if(data.vl>vlValue.get()){
                                var use=""
                                for(typ in data.useHacks){
                                    use+="§a$typ§2,"
                                }
                                use=use.substring(0,use.length-3)
                                chat("§f${data.player.name} §eusing hack $use")
                                data.vl=-vlValue.get()
                    
                                //autoreport only redesky
                                val name=data.player.name
                                if(report.get()&&!hackers.contains(name)){
                                    mc.thePlayer.sendChatMessage("/reportar $name")
                                    hackers.add(name)
                                }
                            }
                        }
                    
                        private fun checkCombatHurt(entity: Entity){
                            if(entity !is EntityLivingBase) return
                            var attacker:EntityPlayer?=null
                            var attackerCount=0
                    
                            for(worldEntity in mc.theWorld.loadedEntityList){
                                if(worldEntity !is EntityPlayer||worldEntity.getDistanceToEntity(entity)>7||worldEntity.equals(entity)) continue
                                attackerCount++
                                attacker=worldEntity
                            }
                    
                            //multi attacker may cause false result
                            if(attackerCount!=1) return
                            if(attacker!! == entity||EntityUtils.isFriend(attacker)) return //i and my friend is hacker lol
                            val data=datas[attacker] ?: return
                    
                            //reach check
                            val reach=attacker.getDistanceToEntity(entity)
                            if(reach>3.7){
                                flag("killaura",70,data,"(reach=$reach)")
                            }
                    
                            //aim check
                            val yawDiff=calculateYawDifference(attacker,entity)
                            if(yawDiff>50){
                                flag("killaura",100,data,"(yawDiff=$yawDiff)")
                            }
                        }
                    
                        private fun calculateYawDifference(from: EntityLivingBase, to: EntityLivingBase): Double {
                            val x = to.posX - from.posX
                            val z = to.posZ - from.posZ
                            return if (x == 0.0 && z == 0.0) {
                                from.rotationYaw.toDouble()
                            } else {
                                val theta = atan2(-x, z)
                                val yaw=Math.toDegrees((theta + 6.283185307179586) % 6.283185307179586)
                                abs(180 - abs(abs(yaw - from.rotationYaw) - 180));
                            }
                        }
                    }
                    
                    class HackerData(val player:EntityPlayer){
                        var aliveTicks=0
                        // Ticks in air
                        var airTicks = 0
                    
                        // Ticks on ground
                        var groundTicks = 0
                    
                        // motion of the movement
                        var motionX = 0.0
                        var motionY = 0.0
                        var motionZ = 0.0
                        var motionXZ = 0.0
                    
                        // Previous motion of the movement
                        var lastMotionX = 0.0
                        var lastMotionY = 0.0
                        var lastMotionZ = 0.0
                        var lastMotionXZ = 0.0
                    
                        // combat check
                        var aps = 0
                        var preAps = 0
                        var tempAps = 0
                        private val apsTimer=MSTimer()
                    
                        var vl=0
                        var useHacks=ArrayList<String>()
                    
                        fun update(){
                            aliveTicks++
                            if (apsTimer.hasTimePassed(1000)) {
                                preAps = aps;
                                aps = tempAps;
                                tempAps = 0;
                            }
                    
                            if(calculateGround()){
                                groundTicks++
                                airTicks=0
                            }else{
                                airTicks++
                                groundTicks=0
                            }
                    
                            this.lastMotionX = this.motionX
                            this.lastMotionY = this.motionY
                            this.lastMotionZ = this.motionZ
                            this.lastMotionXZ = this.motionXZ
                            this.motionX = player.posX-player.prevPosX
                            this.motionY = player.posY-player.prevPosY
                            this.motionZ = player.posZ-player.prevPosZ
                            this.motionXZ = sqrt(motionX*motionX + motionZ*motionZ)
                        }
                    
                        private fun calculateGround(): Boolean {
                            val playerBoundingBox = player.entityBoundingBox
                            val blockHeight = 1
                            val customBox = AxisAlignedBB(playerBoundingBox.maxX, player.posY-blockHeight, playerBoundingBox.maxZ, playerBoundingBox.minX, player.posY, playerBoundingBox.minZ)
                            return Minecraft.getMinecraft().theWorld.checkBlockCollision(customBox)
                        }
                    }
                    
                    
                    ENDER1355E Offline
                    ENDER1355E Offline
                    ENDER1355
                    wrote on last edited by
                    #10

                    @qwq-liulihaocai YES ANTIHATAR RELEASED OMG

                    END3R1355E 1 Reply Last reply
                    0
                    • ENDER1355E ENDER1355

                      @qwq-liulihaocai YES ANTIHATAR RELEASED OMG

                      END3R1355E Offline
                      END3R1355E Offline
                      END3R1355
                      wrote on last edited by
                      #11

                      @ender1355 no

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      About
                      • Terms of Service
                      • Privacy Policy
                      • Status
                      • Contact Us
                      Downloads
                      • Releases
                      • Source code
                      • License
                      Docs
                      • Tutorials
                      • CustomHUD
                      • AutoSettings
                      • ScriptAPI
                      Community
                      • Forum
                      • Guilded
                      • YouTube
                      • Twitter
                      • D.Tube
                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups