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 Offline
    qwq LiulihaocaiQ Offline
    qwq Liulihaocai
    wrote on last edited by
    #1

    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 ENDER1355E 2 Replies Last reply
    3
    • 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