Open MysteryMan233 opened 3 months ago
/*
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() }
grimac-2.3.61.jar
1.8.8
ViaVersion-4.9.2.jar grimac-2.3.61.jar
I'm not entirely sure if this is even fixable
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() {
神秘原因排序不报错但是不执行只能使用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