Skip to content

ArmorBreaker Bypass #1415

Open
Open
@ghost

Description

Describe the bypass and how to replicate it

/*

  • LiquidBounce Hacked Client
  • A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
  • https://github.com/CCBlueX/LiquidBounce/
    */
    package net.ccbluex.liquidbounce.features.module.modules.combat

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions