diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/Speed.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/Speed.kt index d8d38886..cdca4b80 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/Speed.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/Speed.kt @@ -48,6 +48,7 @@ object Speed : Module("Speed", ModuleCategory.MOVEMENT) { AAC5BHop, AAC6BHop, AAC7BHop, + AACHop3310, AACHop3313, AACHop350, AACHop438, diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/speedmodes/aac/AACHop3310.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/speedmodes/aac/AACHop3310.kt new file mode 100644 index 00000000..9635eff3 --- /dev/null +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/movement/speedmodes/aac/AACHop3310.kt @@ -0,0 +1,38 @@ +/* + * LiquidBounce+ Hacked Client + * A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge. + * https://github.com/WYSI-Foundation/LiquidBouncePlus/ + */ +package net.ccbluex.liquidbounce.features.module.modules.movement.speedmodes.aac + +import net.ccbluex.liquidbounce.LiquidBounce +import net.ccbluex.liquidbounce.event.MoveEvent +import net.ccbluex.liquidbounce.event.PacketEvent +import net.ccbluex.liquidbounce.features.module.modules.movement.Speed +import net.ccbluex.liquidbounce.features.module.modules.movement.speedmodes.SpeedMode +import net.ccbluex.liquidbounce.utils.MovementUtils +import net.minecraft.client.settings.GameSettings +import net.minecraft.network.play.server.S12PacketEntityVelocity + +object AACHop3310 : SpeedMode("AACHop3.3.10") { + override fun onMove(event: MoveEvent) { + val player = mc.thePlayer + mc.gameSettings.keyBindJump.pressed = false + MovementUtils.strafe((MovementUtils.getBaseMoveSpeed() * 1.0164f).toFloat()) + if (mc.thePlayer.onGround && mc.thePlayer.isCollidedVertically && GameSettings.isKeyDown(mc.gameSettings.keyBindSneak)) { + player.motionY = MovementUtils.getJumpBoostModifier(0.41999998688697815) + event.y = player.motionY + } + if (mc.thePlayer.onGround && mc.thePlayer.isCollidedVertically && !GameSettings.isKeyDown(mc.gameSettings.keyBindSneak)) { + player.motionY = MovementUtils.getJumpBoostModifier(0.41999998688697815) + event.y = player.motionY + } + } + + fun onPacket(event: PacketEvent) { + if (event.packet is S12PacketEntityVelocity) { + if (mc.thePlayer.onGround && mc.thePlayer.isSneaking && MovementUtils.isMoving) return + event.cancelEvent() + } + } +} diff --git a/src/main/java/net/ccbluex/liquidbounce/utils/MovementUtils.kt b/src/main/java/net/ccbluex/liquidbounce/utils/MovementUtils.kt index 28051e9a..77d02201 100644 --- a/src/main/java/net/ccbluex/liquidbounce/utils/MovementUtils.kt +++ b/src/main/java/net/ccbluex/liquidbounce/utils/MovementUtils.kt @@ -11,7 +11,11 @@ import net.ccbluex.liquidbounce.event.MoveEvent import net.ccbluex.liquidbounce.event.PacketEvent import net.ccbluex.liquidbounce.utils.extensions.stopXZ import net.ccbluex.liquidbounce.utils.extensions.toRadiansD +import net.minecraft.block.BlockIce +import net.minecraft.block.BlockPackedIce import net.minecraft.network.play.client.C03PacketPlayer +import net.minecraft.potion.Potion +import net.minecraft.util.BlockPos import kotlin.math.cos import kotlin.math.sin import kotlin.math.sqrt @@ -21,7 +25,37 @@ object MovementUtils : MinecraftInstance(), Listenable { var speed get() = mc.thePlayer?.run { sqrt(motionX * motionX + motionZ * motionZ).toFloat() } ?: .0f set(value) { strafe(value) } - + fun isOnIce(): Boolean { + val thePlayer = mc.thePlayer + val blockUnder = mc.theWorld.getBlockState(BlockPos(thePlayer.posX, thePlayer.posY - 1.0, thePlayer.posZ)).block + return blockUnder is BlockIce || blockUnder is BlockPackedIce + } + fun getBaseMoveSpeed(): Double { + var baseSpeed = 0.2873 + if (mc.thePlayer.isPotionActive(Potion.moveSpeed)) { + baseSpeed *= 1.0 + 0.2 * (mc.thePlayer.getActivePotionEffect(Potion.moveSpeed).amplifier + 1).toDouble() + } + return baseSpeed + } + fun getBaseMoveSpeed(customSpeed: Double): Double { + var baseSpeed = if (MovementUtils.isOnIce()) 0.258977700006 else customSpeed + if (mc.thePlayer.isPotionActive(Potion.moveSpeed)) { + val amplifier = mc.thePlayer.getActivePotionEffect(Potion.moveSpeed).amplifier + baseSpeed *= 1.0 + 0.2 * (amplifier + 1) + } + return baseSpeed + } + fun getJumpBoostModifier(baseJumpHeight: Double): Double { + return getJumpBoostModifier(baseJumpHeight, true) + } + fun getJumpBoostModifier(baseJumpHeight: Double, potionJump: Boolean): Double { + var baseJumpHeight = baseJumpHeight + if (mc.thePlayer.isPotionActive(Potion.jump) && potionJump) { + val amplifier = mc.thePlayer.getActivePotionEffect(Potion.jump).amplifier + baseJumpHeight += ((amplifier + 1).toFloat() * 0.1f).toDouble() + } + return baseJumpHeight + } val isMoving get() = mc.thePlayer?.movementInput?.run { moveForward != 0f || moveStrafe != 0f } ?: false