Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • 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 1.8k 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
                      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