GrimAnticheat / Grim

Fully async, multithreaded, predictive, open source, 3.01 reach, 1.005 timer, 0.01% speed, 99.99% antikb, "bypassable" 1.8-1.20 anticheat.
GNU General Public License v3.0
1k stars 285 forks source link

ArmorBreaker Bypass #1415

Open MysteryMan233 opened 3 months ago

MysteryMan233 commented 3 months ago

Describe the bypass and how to replicate it

/*

import net.ccbluex.liquidbounce.Arctic import net.ccbluex.liquidbounce.api.enums.EnchantmentType import net.ccbluex.liquidbounce.api.minecraft.client.entity.IEntityLivingBase import net.ccbluex.liquidbounce.event.EventTarget import net.ccbluex.liquidbounce.event.UpdateEvent 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.injection.backend.unwrap import net.ccbluex.liquidbounce.utils.ClientUtils import net.ccbluex.liquidbounce.utils.item.ItemUtils import net.ccbluex.liquidbounce.value.BoolValue import net.ccbluex.liquidbounce.value.ListValue import net.minecraft.entity.player.EntityPlayer

@ModuleInfo(name = "ArmorBreaker", category = ModuleCategory.COMBAT, description = "BreakArmor") class ArmorBreaker : Module() {

private val modeValue = ListValue("Mode", arrayOf("Grim"), "Grim")
private val debug = BoolValue("Debug", true)
private val switch = BoolValue("switch", true)
private var docriArmorBreaker = false
private var target: IEntityLivingBase? = null

// private val onlyattackblockingplayer = BoolValue("OnlyAttackBlockingPlayer", true)

@EventTarget
fun onUpdate(update: UpdateEvent) {
    val aura = Arctic.moduleManager[KillAura::class.java] as KillAura
    val thePlayer = mc.thePlayer ?: return
    //  if (aura.target==null && aura.state && mc2.player.ticksExisted%19==0)
    //     mc.netHandler.addToSendQueue(classProvider.createCPacketHeldItemChange(mc.thePlayer!!.inventory.currentItem))

    if (!aura.state) return
    target = aura.target
    /*val weaponSlots = (0 .. 8)
        .mapNotNull { slot -> thePlayer.inventory.getStackInSlot(slot)?.let { Pair(slot, it) } }
        .filter { (slot, stack) -> !classProvider.isItemAxe(stack.item) }
        .sortedBy { (slot, stack) ->
            val attribute = stack.getAttributeModifier("generic.attackDamage").first()
            val baseDamage = attribute.amount
            val enchantmentDamage = ItemUtils.getEnchantment(stack, classProvider.getEnchantmentEnum(EnchantmentType.SHARPNESS)) * 1.25
            baseDamage + enchantmentDamage
        }

神秘原因排序不报错但是不执行只能使用lowiq切换物品 / docriArmorBreaker = (target!!.unwrap() is EntityPlayer && target!!.unwrap().isHandActive && !mc.gameSettings.keyBindUseItem.pressed ) if (switch.get()){ val (weaponSlot, _) = (0..8) .map { Pair(it, thePlayer.inventory.getStackInSlot(it)) } .filter { it.second != null && classProvider.isItemSword(it.second?.item) } .maxBy { it.second!!.getAttributeModifier("generic.attackDamage") .first().amount + 1.25 ItemUtils.getEnchantment( it.second, classProvider.getEnchantmentEnum(EnchantmentType.SHARPNESS) ) } ?: return if (/aura.swingcounts<21 && /target!!.unwrap() is EntityPlayer && target!!.unwrap().isHandActive) { if (target!!.hurtTime <= 1) { mc.netHandler.addToSendQueue(classProvider.createCPacketHeldItemChange((8))) if (debug.get()) ClientUtils.displayChatMessage("§aBreak Armor Succeed") } if (target!!.hurtTime == 9) { val (weaponSlot2, ) = (0..8) .map { Pair(it, thePlayer.inventory.getStackInSlot(it)) } .filter { it.second != null && classProvider.isItemSword(it.second?.item) } .minBy { it.second!!.getAttributeModifier("generic.attackDamage") .first().amount + 1.25 * ItemUtils.getEnchantment( it.second, classProvider.getEnchantmentEnum(EnchantmentType.SHARPNESS) ) } ?: return mc.netHandler.addToSendQueue(classProvider.createCPacketHeldItemChange((weaponSlot2))) if (debug.get()) ClientUtils.displayChatMessage("§aStart Breaking Armor") } if (target!!.hurtTime in 2..8) { mc.netHandler.addToSendQueue(classProvider.createCPacketHeldItemChange((weaponSlot))) if (debug.get()) ClientUtils.displayChatMessage("§aBreak Armor Succeed") } }else{ if (aura.target!=null) { thePlayer.inventory.currentItem = weaponSlot mc.netHandler.addToSendQueue(classProvider.createCPacketHeldItemChange((weaponSlot))) mc.playerController.updateController() } } }else{ val (weaponSlot, ) = (0..8) .map { Pair(it, thePlayer.inventory.getStackInSlot(it)) } .filter { it.second != null && classProvider.isItemSword(it.second?.item) } .maxBy { it.second!!.getAttributeModifier("generic.attackDamage") .first().amount + 1.25 * ItemUtils.getEnchantment( it.second, classProvider.getEnchantmentEnum(EnchantmentType.SHARPNESS) ) } ?: return if (aura.target!=null) { thePlayer.inventory.currentItem = weaponSlot mc.playerController.updateController() } } } override val tag: String get() = modeValue.get() }

Grim version

grimac-2.3.61.jar

Server version

1.8.8

Plugins

ViaVersion-4.9.2.jar grimac-2.3.61.jar

ManInMyVan commented 3 months ago

I'm not entirely sure if this is even fixable