Skip to content

Commit

Permalink
refactor: rotation system (#5638)
Browse files Browse the repository at this point in the history
Slow Start is now called Up Ramp as I'm thinking about introducing the opposite called Down Ramp.
  • Loading branch information
1zun4 authored Feb 15, 2025
1 parent 008d9ab commit f6127ca
Show file tree
Hide file tree
Showing 106 changed files with 447 additions and 310 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
import net.ccbluex.liquidbounce.event.events.MovementInputEvent;
import net.ccbluex.liquidbounce.event.events.SprintEvent;
import net.ccbluex.liquidbounce.features.module.modules.movement.ModuleInventoryMove;
import net.ccbluex.liquidbounce.utils.aiming.MovementCorrection;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.features.MovementCorrection;
import net.ccbluex.liquidbounce.utils.input.InputTracker;
import net.ccbluex.liquidbounce.utils.movement.DirectionalInput;
import net.minecraft.client.MinecraftClient;
Expand Down Expand Up @@ -109,7 +109,7 @@ private PlayerInput modifyInput(PlayerInput original) {
private DirectionalInput transformDirection(DirectionalInput input) {
var player = MinecraftClient.getInstance().player;
var rotation = RotationManager.INSTANCE.getCurrentRotation();
var configurable = RotationManager.INSTANCE.getWorkingAimPlan();
var configurable = RotationManager.INSTANCE.getWorkingRotationTarget();

float z = KeyboardInput.getMovementMultiplier(input.getForwards(), input.getBackwards());
float x = KeyboardInput.getMovementMultiplier(input.getLeft(), input.getRight());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
import net.ccbluex.liquidbounce.integration.VrScreen;
import net.ccbluex.liquidbounce.integration.interop.protocol.rest.v1.game.PlayerData;
import net.ccbluex.liquidbounce.interfaces.ClientPlayerEntityAddition;
import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.ccbluex.liquidbounce.utils.movement.DirectionalInput;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
import net.ccbluex.liquidbounce.features.module.modules.movement.*;
import net.ccbluex.liquidbounce.features.module.modules.render.ModuleAntiBlind;
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.ModuleScaffold;
import net.ccbluex.liquidbounce.utils.aiming.MovementCorrection;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.features.MovementCorrection;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffect;
Expand Down Expand Up @@ -171,7 +171,7 @@ private void hookAfterJumpEvent(CallbackInfo ci) {
private Vec3d hookFixRotation(Vec3d original) {
var rotationManager = RotationManager.INSTANCE;
var rotation = rotationManager.getCurrentRotation();
var configurable = rotationManager.getWorkingAimPlan();
var configurable = rotationManager.getWorkingRotationTarget();

if ((Object) this != MinecraftClient.getInstance().player) {
return original;
Expand Down Expand Up @@ -247,7 +247,7 @@ private float hookModifyFallFlyingPitch(float original) {

var rotationManager = RotationManager.INSTANCE;
var rotation = rotationManager.getCurrentRotation();
var configurable = rotationManager.getWorkingAimPlan();
var configurable = rotationManager.getWorkingRotationTarget();

if (rotation == null || configurable == null || configurable.getMovementCorrection() == MovementCorrection.OFF) {
return original;
Expand All @@ -267,7 +267,7 @@ private Vec3d hookModifyFallFlyingRotationVector(Vec3d original) {

var rotationManager = RotationManager.INSTANCE;
var rotation = rotationManager.getCurrentRotation();
var configurable = rotationManager.getWorkingAimPlan();
var configurable = rotationManager.getWorkingRotationTarget();

if (rotation == null || configurable == null || configurable.getMovementCorrection() == MovementCorrection.OFF) {
return original;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@
import net.ccbluex.liquidbounce.features.module.modules.player.ModuleReach;
import net.ccbluex.liquidbounce.features.module.modules.player.nofall.modes.NoFallNoGround;
import net.ccbluex.liquidbounce.features.module.modules.world.ModuleNoSlowBreak;
import net.ccbluex.liquidbounce.utils.aiming.AimPlan;
import net.ccbluex.liquidbounce.utils.aiming.MovementCorrection;
import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.RotationTarget;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.features.MovementCorrection;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot;
Expand Down Expand Up @@ -95,7 +95,7 @@ private float hookFixRotation(float original) {

RotationManager rotationManager = RotationManager.INSTANCE;
Rotation rotation = rotationManager.getCurrentRotation();
AimPlan configurable = rotationManager.getWorkingAimPlan();
RotationTarget configurable = rotationManager.getWorkingRotationTarget();

if (configurable == null || configurable.getMovementCorrection() == MovementCorrection.OFF || rotation == null) {
return original;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import net.ccbluex.liquidbounce.features.module.modules.misc.betterchat.ModuleBetterChat;
import net.ccbluex.liquidbounce.features.module.modules.player.ModuleAntiExploit;
import net.ccbluex.liquidbounce.features.module.modules.player.ModuleNoRotateSet;
import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.ccbluex.liquidbounce.utils.kotlin.Priority;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.DownloadingTerrainScreen;
Expand Down Expand Up @@ -200,7 +200,7 @@ private void injectNoRotateSet(PlayerPositionLookS2CPacket packet, CallbackInfo
true,
null
);
RotationManager.INSTANCE.aimAt(aimPlan, Priority.NOT_IMPORTANT, ModuleNoRotateSet.INSTANCE);
RotationManager.INSTANCE.setRotationTarget(aimPlan, Priority.NOT_IMPORTANT, ModuleNoRotateSet.INSTANCE);
}

// Increase yaw and pitch by a value so small that the difference cannot be seen,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.ccbluex.liquidbounce.injection.mixins.minecraft.network;

import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket;
import net.minecraft.util.Hand;
import org.spongepowered.asm.mixin.Final;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.ccbluex.liquidbounce.features.module.modules.combat.aimbot.ModuleDroneControl;
import net.ccbluex.liquidbounce.features.module.modules.render.*;
import net.ccbluex.liquidbounce.utils.aiming.AimPlan;
import net.ccbluex.liquidbounce.utils.aiming.MovementCorrection;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.RotationTarget;
import net.ccbluex.liquidbounce.utils.aiming.features.MovementCorrection;
import net.minecraft.client.render.Camera;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
Expand Down Expand Up @@ -102,13 +102,13 @@ private void modifyCameraOrientation(BlockView area, Entity focusedEntity, boole
this.setRotation(screen.getCameraRotation().x, screen.getCameraRotation().y);
}

AimPlan aimPlan = RotationManager.INSTANCE.getWorkingAimPlan();
RotationTarget rotationTarget = RotationManager.INSTANCE.getWorkingRotationTarget();

var previousRotation = RotationManager.INSTANCE.getPreviousRotation();
var currentRotation = RotationManager.INSTANCE.getCurrentRotation();

boolean shouldModifyRotation = ModuleRotations.INSTANCE.getRunning() && ModuleRotations.INSTANCE.getCamera()
|| aimPlan != null && aimPlan.getMovementCorrection() == MovementCorrection.CHANGE_LOOK;
|| rotationTarget != null && rotationTarget.getMovementCorrection() == MovementCorrection.CHANGE_LOOK;

if (currentRotation == null || previousRotation == null || !shouldModifyRotation) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
import net.ccbluex.liquidbounce.interfaces.LightmapTextureManagerAddition;
import net.ccbluex.liquidbounce.render.engine.UiRenderer;
import net.ccbluex.liquidbounce.render.shader.shaders.OutlineEffectShader;
import net.ccbluex.liquidbounce.utils.aiming.RaytracingExtensionsKt;
import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.utils.RaytracingKt;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ChatScreen;
Expand Down Expand Up @@ -111,7 +111,7 @@ private HitResult hookRaycast(HitResult original, Entity camera, double blockInt
rotation = cameraRotation;
}

return RaytracingExtensionsKt.raycast(rotation, Math.max(blockInteractionRange, entityInteractionRange),
return RaytracingKt.raycast(rotation, Math.max(blockInteractionRange, entityInteractionRange),
ModuleLiquidPlace.INSTANCE.getRunning(), tickDelta);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
import net.ccbluex.liquidbounce.features.module.modules.render.ModuleTrueSight;
import net.ccbluex.liquidbounce.features.module.modules.render.esp.ModuleESP;
import net.ccbluex.liquidbounce.interfaces.EntityRenderStateAddition;
import net.ccbluex.liquidbounce.utils.aiming.Rotation;
import net.ccbluex.liquidbounce.utils.aiming.RotationManager;
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.entity.LivingEntityRenderer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,6 @@ import org.lwjgl.glfw.GLFW
@Suppress("TooManyFunctions")
open class Configurable(
name: String,
/**
* Used for backwards compatibility when renaming.
*/
aliases: Array<out String> = emptyArray(),
value: MutableList<Value<*>> = mutableListOf(),
valueType: ValueType = ValueType.CONFIGURABLE,

Expand All @@ -48,7 +44,11 @@ open class Configurable(
* The options should be used in common options, so that
* descriptions don't have to be written twice.
*/
independentDescription: Boolean = false
independentDescription: Boolean = false,
/**
* Used for backwards compatibility when renaming.
*/
aliases: Array<out String> = emptyArray(),
) : Value<MutableList<Value<*>>>(
name,
aliases,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ import net.ccbluex.liquidbounce.script.ScriptApiRequired
abstract class ToggleableConfigurable(
@Exclude @ProtocolExclude val parent: EventListener? = null,
name: String,
enabled: Boolean
) : EventListener, Configurable(name, valueType = ValueType.TOGGLEABLE), MinecraftShortcuts {
enabled: Boolean,
aliases: Array<String> = emptyArray(),
) : EventListener, Configurable(name, valueType = ValueType.TOGGLEABLE, aliases = aliases), MinecraftShortcuts {

// TODO: Make enabled change also call newState
internal var enabled by boolean("Enabled", enabled)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ open class ClientModule(
hide: Boolean = false, // default hide
@Exclude val disableOnQuit: Boolean = false, // disables module when player leaves the world,
aliases: Array<out String> = emptyArray() // additional names under which the module is known
) : EventListener, Configurable(name, aliases), MinecraftShortcuts {
) : EventListener, Configurable(name, aliases = aliases), MinecraftShortcuts {

/**
* Option to enable or disable the module, this DOES NOT mean the module is running. This
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,15 @@ import net.ccbluex.liquidbounce.event.handler
import net.ccbluex.liquidbounce.features.module.Category
import net.ccbluex.liquidbounce.features.module.ClientModule
import net.ccbluex.liquidbounce.render.renderEnvironmentForWorld
import net.ccbluex.liquidbounce.utils.aiming.*
import net.ccbluex.liquidbounce.utils.aiming.anglesmooth.LinearAngleSmoothMode
import net.ccbluex.liquidbounce.utils.aiming.anglesmooth.SigmoidAngleSmoothMode
import net.ccbluex.liquidbounce.utils.aiming.PointTracker
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation
import net.ccbluex.liquidbounce.utils.aiming.data.VecRotation
import net.ccbluex.liquidbounce.utils.aiming.features.UpRamp
import net.ccbluex.liquidbounce.utils.aiming.features.anglesmooth.LinearAngleSmoothMode
import net.ccbluex.liquidbounce.utils.aiming.features.anglesmooth.SigmoidAngleSmoothMode
import net.ccbluex.liquidbounce.utils.aiming.preference.LeastDifferencePreference
import net.ccbluex.liquidbounce.utils.aiming.utils.raytraceBox
import net.ccbluex.liquidbounce.utils.aiming.utils.setRotation
import net.ccbluex.liquidbounce.utils.client.Chronometer
import net.ccbluex.liquidbounce.utils.client.Timer
import net.ccbluex.liquidbounce.utils.combat.TargetPriority
Expand Down Expand Up @@ -69,7 +75,7 @@ object ModuleAimbot : ClientModule("Aimbot", Category.COMBAT, aliases = arrayOf(
)
}

private val slowStart = tree(SlowStart(this))
private val upRamp = tree(UpRamp(this))

private val ignoreOpenScreen by boolean("IgnoreOpenScreen", false)
private val ignoreOpenContainer by boolean("IgnoreOpenContainer", false)
Expand All @@ -92,7 +98,7 @@ object ModuleAimbot : ClientModule("Aimbot", Category.COMBAT, aliases = arrayOf(

targetRotation = findNextTargetRotation()?.let { (target, rotation) ->
angleSmooth.activeChoice.limitAngleChange(
slowStart.rotationFactor,
upRamp.rotationFactor,
player.rotation,
rotation.rotation,
rotation.vec,
Expand Down Expand Up @@ -173,7 +179,7 @@ object ModuleAimbot : ClientModule("Aimbot", Category.COMBAT, aliases = arrayOf(
) ?: continue

if (target != targetTracker.target) {
slowStart.onTrigger()
upRamp.onTrigger()
}
targetTracker.target = target
return target to spot
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ import net.ccbluex.liquidbounce.features.module.ClientModule
import net.ccbluex.liquidbounce.features.module.modules.combat.killaura.ModuleKillAura
import net.ccbluex.liquidbounce.render.renderEnvironmentForWorld
import net.ccbluex.liquidbounce.utils.aiming.PointTracker
import net.ccbluex.liquidbounce.utils.aiming.Rotation
import net.ccbluex.liquidbounce.utils.aiming.RotationManager
import net.ccbluex.liquidbounce.utils.aiming.RotationsConfigurable
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation
import net.ccbluex.liquidbounce.utils.aiming.projectiles.SituationalProjectileAngleCalculator
import net.ccbluex.liquidbounce.utils.clicking.Clicker
import net.ccbluex.liquidbounce.utils.client.SilentHotbar
Expand Down Expand Up @@ -137,7 +137,7 @@ object ModuleAutoShoot : ClientModule("AutoShoot", Category.COMBAT) {
val rotation = generateRotation(target, GravityType.fromHand(hand))

// Set the rotation with the usage priority of 2.
RotationManager.aimAt(
RotationManager.setRotationTarget(
rotationConfigurable.toAimPlan(rotation ?: return@handler, considerInventory = considerInventory),
Priority.IMPORTANT_FOR_USAGE_2, this
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ package net.ccbluex.liquidbounce.features.module.modules.combat.aimbot

import net.ccbluex.liquidbounce.features.module.modules.render.ModuleDebug
import net.ccbluex.liquidbounce.render.engine.Color4b
import net.ccbluex.liquidbounce.utils.aiming.Rotation
import net.ccbluex.liquidbounce.utils.aiming.RotationManager
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation
import net.ccbluex.liquidbounce.utils.client.asText
import net.ccbluex.liquidbounce.utils.client.mc
import net.ccbluex.liquidbounce.utils.client.player
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ import net.ccbluex.liquidbounce.utils.aiming.projectiles.SituationalProjectileAn
import net.ccbluex.liquidbounce.utils.entity.ConstantPositionExtrapolation
import net.ccbluex.liquidbounce.utils.kotlin.Priority
import net.ccbluex.liquidbounce.utils.render.trajectory.TrajectoryInfo
import net.minecraft.client.option.KeyBinding
import net.minecraft.entity.Entity
import net.minecraft.util.Hand
import net.minecraft.util.math.Vec3d
import org.lwjgl.glfw.GLFW

object ModuleDroneControl : ClientModule("DroneControl", Category.COMBAT) {

Expand Down Expand Up @@ -49,7 +47,7 @@ object ModuleDroneControl : ClientModule("DroneControl", Category.COMBAT) {
}

if (currentRotation != null) {
RotationManager.aimAt(
RotationManager.setRotationTarget(
rotation = currentRotation,
configurable = rotationsConfigurable,
priority = Priority.NORMAL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ object ModuleProjectileAimbot : ClientModule("ProjectileAimbot", Category.COMBAT
SituationalProjectileAngleCalculator.calculateAngleForEntity(trajectory, target)
} ?: return@tickHandler

RotationManager.aimAt(
RotationManager.setRotationTarget(
rotation,
considerInventory = false,
rotations,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import net.ccbluex.liquidbounce.event.handler
import net.ccbluex.liquidbounce.event.tickHandler
import net.ccbluex.liquidbounce.features.module.modules.combat.aimbot.ModuleAutoBow
import net.ccbluex.liquidbounce.render.renderEnvironmentForGUI
import net.ccbluex.liquidbounce.utils.aiming.Rotation
import net.ccbluex.liquidbounce.utils.aiming.RotationManager
import net.ccbluex.liquidbounce.utils.aiming.RotationsConfigurable
import net.ccbluex.liquidbounce.utils.aiming.data.Rotation
import net.ccbluex.liquidbounce.utils.aiming.projectiles.SituationalProjectileAngleCalculator
import net.ccbluex.liquidbounce.utils.combat.TargetPriority
import net.ccbluex.liquidbounce.utils.combat.TargetTracker
Expand Down Expand Up @@ -58,7 +58,7 @@ object AutoBowAimbotFeature : ToggleableConfigurable(ModuleAutoBow, "BowAimbot",
rotation != null
} ?: return@tickHandler

RotationManager.aimAt(
RotationManager.setRotationTarget(
rotation!!,
priority = Priority.IMPORTANT_FOR_USAGE_1,
provider = ModuleAutoBow,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@ import net.ccbluex.liquidbounce.features.module.modules.combat.aimbot.ModuleAuto
import net.ccbluex.liquidbounce.utils.aiming.RotationManager
import net.ccbluex.liquidbounce.utils.client.toRadians
import net.ccbluex.liquidbounce.utils.combat.shouldBeAttacked
import net.ccbluex.liquidbounce.utils.entity.*
import net.ccbluex.liquidbounce.utils.entity.PlayerSimulationCache
import net.ccbluex.liquidbounce.utils.entity.SimulatedArrow
import net.ccbluex.liquidbounce.utils.entity.SimulatedPlayerCache
import net.ccbluex.liquidbounce.utils.math.geometry.Line
import net.ccbluex.liquidbounce.utils.render.trajectory.TrajectoryInfo
import net.minecraft.client.network.AbstractClientPlayerEntity
import net.minecraft.item.BowItem
import net.minecraft.item.TridentItem
import net.minecraft.util.math.*
import net.minecraft.util.math.Box
import net.minecraft.util.math.MathHelper
import net.minecraft.util.math.Vec3d

object AutoBowAutoShootFeature : ToggleableConfigurable(ModuleAutoBow, "AutoShoot", true) {

Expand Down Expand Up @@ -81,7 +85,7 @@ object AutoBowAutoShootFeature : ToggleableConfigurable(ModuleAutoBow, "AutoShoo
return@handler
}

val targetRotation = RotationManager.workingAimPlan ?: return@handler
val targetRotation = RotationManager.workingRotationTarget ?: return@handler

val aimDifference = RotationManager.serverRotation.angleTo(targetRotation.rotation)

Expand Down
Loading

0 comments on commit f6127ca

Please sign in to comment.