Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/nextgen' into feat/elytratarget
Browse files Browse the repository at this point in the history
  • Loading branch information
sqlerrorthing committed Feb 25, 2025
2 parents acf0b24 + 69dc843 commit 513e56d
Show file tree
Hide file tree
Showing 37 changed files with 494 additions and 64 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ dependencies {
includeDependency "org.ahocorasick:ahocorasick:0.6.3"

// Test libraries
testImplementation "org.junit.jupiter:junit-jupiter:5.11.3"
testImplementation "org.junit.jupiter:junit-jupiter:5.12.0"
testRuntimeOnly "org.junit.platform:junit-platform-launcher"

// Fix nullable annotations
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ mc_authlib_version=1.4.1
mod_menu_version=13.0.0-beta.1
sodium_version=mc1.21.4-0.6.6-fabric
lithium_version=mc1.21.4-0.14.3-fabric
viafabricplus_version=4.0.1
viafabricplus_version=4.0.2
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import net.ccbluex.liquidbounce.event.EventManager;
import net.ccbluex.liquidbounce.event.events.GameRenderEvent;
Expand Down Expand Up @@ -59,7 +60,10 @@
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArgs;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;

@Mixin(GameRenderer.class)
public abstract class MixinGameRenderer {
Expand Down Expand Up @@ -285,4 +289,14 @@ private float injectShit(float original) {
return original;
}

@ModifyArgs(
method = "getBasicProjectionMatrix",
at = @At(value = "INVOKE", target = "Lorg/joml/Matrix4f;perspective(FFFF)Lorg/joml/Matrix4f;")
)
private void hookBasicProjectionMatrix(Args args) {
if (ModuleAspect.INSTANCE.getRunning()) {
args.set(1, (float) args.get(1) / ModuleAspect.getRatioMultiplier());
}
}

}
10 changes: 10 additions & 0 deletions src/main/kotlin/net/ccbluex/liquidbounce/event/Sequence.kt
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,20 @@ object SequenceManager : EventListener {

}

@Suppress("TooManyFunctions")
open class Sequence(val owner: EventListener, val handler: SuspendableHandler) {
private var coroutine: Job

open fun cancel() {
coroutine.cancel()
cancellationTask?.run()
SequenceManager.sequences -= this@Sequence
}

private var continuation: Continuation<Unit>? = null
private var elapsedTicks = 0
private var totalTicks = IntSupplier { 0 }
private var cancellationTask: Runnable? = null

init {
// Note: It is important that this is in the constructor and NOT in the variable declaration, because
Expand Down Expand Up @@ -117,6 +120,13 @@ open class Sequence(val owner: EventListener, val handler: SuspendableHandler) {
}
}

/**
* Adds a task to be executed when the sequence is cancelled.
*/
fun onCancellation(task: Runnable) {
cancellationTask = task
}

/**
* Waits until the [case] is true, then continues. Checks every tick.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ object ModuleManager : EventListener, Iterable<ClientModule> by modules {
ModuleAttackEffects,
ModuleNametags,
ModuleCombineMobs,
ModuleAspect,
ModuleAutoF5,
ModuleChams,
ModuleBedPlates,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import net.minecraft.text.Text
import net.minecraft.util.Formatting

object ModuleLiquidChat : ClientModule("LiquidChat", Category.CLIENT, hide = true, state = true,
aliases = arrayOf("GlobalChat")) {
aliases = arrayOf("GlobalChat", "IRC")) {

private var jwtToken by text("JwtToken", "")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ object ModuleSuperKnockback : ClientModule("SuperKnockback", Category.COMBAT, al
return@sequenceHandler
}

onCancellation {
cancelSprint = false
}

cancelSprint = true
waitUntil { !player.isSprinting && !player.lastSprinting }
waitTicks(reSprintTicks.random())
Expand Down Expand Up @@ -145,6 +149,11 @@ object ModuleSuperKnockback : ClientModule("SuperKnockback", Category.COMBAT, al
return@sequenceHandler
}

onCancellation {
cancelMovement = false
inSequence = false
}

inSequence = true
waitTicks(ticksUntilMovementBlock.random())
cancelMovement = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ data class CombatTarget(
*/
object KillAuraFightBot : NavigationBaseConfigurable<CombatContext>(ModuleKillAura, "FightBot", false) {

private val opponentRange by float("OpponentRange", 3f, 0.1f..5f)
private val opponentRange by float("OpponentRange", 3f, 0.1f..10f)
private val dangerousYawDiff by float("DangerousYaw", 55f, 0f..90f, suffix = "°")
private val runawayOnCooldown by boolean("RunawayOnCooldown", true)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket
* Modifies the amount of velocity you take.
*/

object ModuleVelocity : ClientModule("Velocity", Category.COMBAT) {
object ModuleVelocity : ClientModule("Velocity", Category.COMBAT, aliases = arrayOf("AntiKnockBack")) {

init {
enableLock()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ object ModuleKick : ClientModule("Kick", Category.EXPLOIT, disableActivation = t
*/
fun kick(mode: KickModeEnum) = mode.run()

@Suppress("unused")
enum class KickModeEnum(override val choiceName: String, val run: () -> Unit) : NamedChoice {
QUIT("Quit", {
world.disconnect()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ private const val MAX_SIMULATED_TICKS = 240
*
* @author sqlerrorthing
*/
object ModuleAutoPearl : ClientModule("AutoPearl", Category.MISC, aliases = arrayOf("PearlFollower")) {
object ModuleAutoPearl : ClientModule("AutoPearl", Category.MISC, aliases = arrayOf("PearlFollower", "PearlTarget")) {

private val mode by enumChoice("Mode", Modes.TRIGGER)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import net.ccbluex.liquidbounce.features.module.modules.movement.terrainspeed.ic
*
* Move faster on specific surfaces.
*/
object ModuleTerrainSpeed : ClientModule("TerrainSpeed", Category.MOVEMENT) {
object ModuleTerrainSpeed : ClientModule("TerrainSpeed", Category.MOVEMENT, aliases = arrayOf("FastClimb")) {

init {
enableLock()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ import net.ccbluex.liquidbounce.utils.kotlin.EventPriorityConvention
*
* Legit trick to build faster.
*/
object ModuleEagle : ClientModule("Eagle", Category.PLAYER, aliases = arrayOf("FastBridge", "BridgeAssistant")) {
object ModuleEagle : ClientModule("Eagle", Category.PLAYER,
aliases = arrayOf("FastBridge", "BridgeAssistant", "LegitScaffold")
) {

private val edgeDistance by float("EagleEdgeDistance", 0.4f, 0.01f..1.3f)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket
* Allows you to use items faster.
*/

object ModuleFastUse : ClientModule("FastUse", Category.PLAYER) {
object ModuleFastUse : ClientModule("FastUse", Category.PLAYER, aliases = arrayOf("FastEat")) {

private val modes = choices("Mode", Immediate, arrayOf(Immediate, ItemUseTime)).apply { tagBy(this) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import net.minecraft.screen.slot.SlotActionType
*
* @author ccetl
*/
object ModuleReplenish : ClientModule("Replenish", Category.PLAYER) {
object ModuleReplenish : ClientModule("Replenish", Category.PLAYER, aliases = arrayOf("Refill")) {

private val constraints = tree(PlayerInventoryConstraints())
private val itemThreshold by int("ItemThreshold", 5, 0..63)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ package net.ccbluex.liquidbounce.features.module.modules.player.autoqueue

import net.ccbluex.liquidbounce.features.module.Category
import net.ccbluex.liquidbounce.features.module.ClientModule
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.modes.AutoQueueGommeDuels
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.modes.AutoQueueHypixelSW
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.modes.AutoQueuePaper
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.presets.AutoQueueCustom
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.presets.AutoQueueGommeDuels
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.presets.AutoQueueHypixelSW

object ModuleAutoQueue : ClientModule("AutoQueue", Category.PLAYER) {
val modes = choices("Mode", AutoQueuePaper, arrayOf(
AutoQueuePaper,
object ModuleAutoQueue : ClientModule("AutoQueue", Category.PLAYER, aliases = arrayOf("AutoPlay")) {
val presets = choices("Presets", AutoQueueHypixelSW, arrayOf(
AutoQueueHypixelSW,
AutoQueueGommeDuels
AutoQueueGommeDuels,
AutoQueueCustom
)).apply(::tagBy)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* This file is part of LiquidBounce (https://github.com/CCBlueX/LiquidBounce)
*
* Copyright (c) 2015 - 2025 CCBlueX
*
* LiquidBounce is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LiquidBounce is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LiquidBounce. If not, see <https://www.gnu.org/licenses/>.
*
*
*/
package net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.actions

import net.ccbluex.liquidbounce.config.types.Choice
import net.ccbluex.liquidbounce.config.types.ChoiceConfigurable
import net.ccbluex.liquidbounce.event.Sequence
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.presets.AutoQueueCustom.triggers

abstract class AutoQueueAction(name: String) : Choice(name) {
override val parent: ChoiceConfigurable<*>
get() = triggers
abstract suspend fun execute(sequence: Sequence)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* This file is part of LiquidBounce (https://github.com/CCBlueX/LiquidBounce)
*
* Copyright (c) 2015 - 2025 CCBlueX
*
* LiquidBounce is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LiquidBounce is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LiquidBounce. If not, see <https://www.gnu.org/licenses/>.
*
*
*/
package net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.actions

import net.ccbluex.liquidbounce.event.Sequence

object AutoQueueActionChat : AutoQueueAction("Chat") {

private val message by text("Message", "/play solo_normal")

override suspend fun execute(sequence: Sequence) {
if (message.startsWith("/")) {
network.sendCommand(message.substring(1))
} else {
network.sendChatMessage(message)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,31 @@
*
*
*/
package net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.actions

package net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.modes

import net.ccbluex.liquidbounce.config.types.Choice
import net.ccbluex.liquidbounce.config.types.ChoiceConfigurable
import net.ccbluex.liquidbounce.event.tickHandler
import net.ccbluex.liquidbounce.event.Sequence
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.ModuleAutoQueue
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.ModuleAutoQueue.modes
import net.ccbluex.liquidbounce.features.module.modules.player.autoqueue.actions.AutoQueueActionUseItem.itemName
import net.ccbluex.liquidbounce.utils.client.SilentHotbar
import net.ccbluex.liquidbounce.utils.client.convertToString
import net.ccbluex.liquidbounce.utils.inventory.Slots
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.util.Hand

/**
* Can be used for different server that use paper to join a game
*/
object AutoQueuePaper : Choice("Paper") {
object AutoQueueActionUseItem : AutoQueueAction("UseItem") {

override val parent: ChoiceConfigurable<Choice>
get() = modes
/**
* The [itemName] of the item to click in order to queue.
*/
private val itemName by text("Name", "Paper")

val repeatable = tickHandler {
val paper = Slots.Hotbar.findSlotIndex(Items.PAPER) ?: return@tickHandler
override suspend fun execute(sequence: Sequence) {
val item = Slots.Hotbar.findSlotIndex { itemStack ->
itemStack.name.convertToString().contains(itemName)
} ?: return

SilentHotbar.selectSlotSilently(ModuleAutoQueue, paper)
waitTicks(1)
SilentHotbar.selectSlotSilently(ModuleAutoQueue, item)
sequence.waitTicks(1)
interaction.interactItem(player, Hand.MAIN_HAND)

waitTicks(20)
}

}
Loading

0 comments on commit 513e56d

Please sign in to comment.