[Kotlin] HackerDetector
-
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) } }
-
@qwq-liulihaocai YEEES SIGMA ANTICHEET NO MORA SIGMA HATARS!!
-
Hi hackerman (i know you are hackerman feat: an fdp 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
-
@chocopiexd
sure? -
@advanced-skidder said in [Kotlin] HackerDetector:
@chocopiexd
sure?liulihaocai 100% isn't hackerman
-
@advanced-skidder yes thats definitely me
-
@hackerman POG
-
HATAR DETECTOR EZ
-
@qwq-liulihaocai YES ANTIHATAR RELEASED OMG