From 5ef571e8061d157cdac3b6336c3eaed3df769fcc Mon Sep 17 00:00:00 2001 From: rfresh2 <89827146+rfresh2@users.noreply.github.com> Date: Sun, 5 Feb 2023 19:34:02 -0800 Subject: [PATCH 1/2] FreeLook Module --- .../com/lambda/mixin/entity/MixinEntity.java | 2 + .../client/event/ForgeEventProcessor.kt | 5 ++ .../client/module/modules/render/FreeLook.kt | 80 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt diff --git a/src/main/java/com/lambda/mixin/entity/MixinEntity.java b/src/main/java/com/lambda/mixin/entity/MixinEntity.java index 1bb391ac2..1a5a5c78e 100644 --- a/src/main/java/com/lambda/mixin/entity/MixinEntity.java +++ b/src/main/java/com/lambda/mixin/entity/MixinEntity.java @@ -4,6 +4,7 @@ import com.lambda.client.module.modules.movement.Velocity; import com.lambda.client.module.modules.player.Freecam; import com.lambda.client.module.modules.player.ViewLock; +import com.lambda.client.module.modules.render.FreeLook; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.Entity; @@ -33,6 +34,7 @@ public void applyEntityCollisionHead(Entity entityIn, CallbackInfo ci) { public void turn(float yaw, float pitch, CallbackInfo ci) { Entity casted = (Entity) (Object) this; + if (FreeLook.handleTurn(casted, yaw, pitch, ci)) return; if (Freecam.handleTurn(casted, yaw, pitch, ci)) return; ViewLock.handleTurn(casted, yaw, pitch, ci); } diff --git a/src/main/kotlin/com/lambda/client/event/ForgeEventProcessor.kt b/src/main/kotlin/com/lambda/client/event/ForgeEventProcessor.kt index f98b5f3e8..6c35b11ee 100644 --- a/src/main/kotlin/com/lambda/client/event/ForgeEventProcessor.kt +++ b/src/main/kotlin/com/lambda/client/event/ForgeEventProcessor.kt @@ -165,4 +165,9 @@ internal object ForgeEventProcessor { fun onRenderFogColors(event: EntityViewRenderEvent.FogColors) { LambdaEventBus.post(event) } + + @SubscribeEvent + fun onCameraSetupEvent(event: EntityViewRenderEvent.CameraSetup) { + LambdaEventBus.post(event) + } } diff --git a/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt b/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt new file mode 100644 index 000000000..53aed3a20 --- /dev/null +++ b/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt @@ -0,0 +1,80 @@ +package com.lambda.client.module.modules.render + +import com.lambda.client.event.SafeClientEvent +import com.lambda.client.module.Category +import com.lambda.client.module.Module +import com.lambda.client.util.threads.safeListener +import net.minecraft.entity.Entity +import net.minecraft.util.math.MathHelper +import net.minecraftforge.client.event.EntityViewRenderEvent +import net.minecraftforge.client.event.InputUpdateEvent +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo + +object FreeLook : Module( + name = "FreeLook", + description = "Look Freely", + category = Category.RENDER +) { + private val arrowKeyYawAdjust by setting("Arrow Key Yaw Adjust", false) + private val arrowKeyYawAdjustIncrement by setting("Yaw Adjust Increment", 1.0f, 0.001f..10.0f, 0.001f, + visibility = { arrowKeyYawAdjust }); + + private var cameraYaw: Float = 0f + private var cameraPitch: Float = 0f + private var thirdPersonBefore: Int = 0 + + init { + onEnable { + thirdPersonBefore = mc.gameSettings.thirdPersonView + mc.gameSettings.thirdPersonView = 1; + cameraYaw = mc.player.rotationYaw + 180.0f + cameraPitch = mc.player.rotationPitch + } + + onDisable { + mc.gameSettings.thirdPersonView = thirdPersonBefore + } + + safeListener { + if (mc.gameSettings.thirdPersonView > 0) { + it.yaw = cameraYaw + it.pitch = cameraPitch + } + } + + safeListener { + if (arrowKeyYawAdjust) { + if (it.movementInput.leftKeyDown) { + // shift cam and player rot left by x degrees + updateYaw(-arrowKeyYawAdjustIncrement) + it.movementInput.leftKeyDown = false + } + if (it.movementInput.rightKeyDown) { + // shift cam and player rot right by x degrees + updateYaw(arrowKeyYawAdjustIncrement) + it.movementInput.rightKeyDown = false + } + it.movementInput.moveStrafe = 0.0f + } + } + } + + private fun SafeClientEvent.updateYaw(dYaw: Float) { + cameraYaw += dYaw + player.rotationYaw += dYaw + } + + @JvmStatic + fun handleTurn(entity: Entity, yaw: Float, pitch: Float, ci: CallbackInfo): Boolean { + if (isDisabled || mc.player == null) return false + return if (entity == mc.player) { + this.cameraYaw += yaw * 0.15f + this.cameraPitch -= pitch * 0.15f + this.cameraPitch = MathHelper.clamp(this.cameraPitch, -180.0f, 180.0f) + ci.cancel() + true + } else { + false + } + } +} \ No newline at end of file From c2f091161c3399d60a0d51840d22ef643e939d66 Mon Sep 17 00:00:00 2001 From: Constructor Date: Mon, 6 Feb 2023 09:46:53 +0100 Subject: [PATCH 2/2] Decreasing nesting depth --- .../client/module/modules/render/FreeLook.kt | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt b/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt index 53aed3a20..0b3b32434 100644 --- a/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt +++ b/src/main/kotlin/com/lambda/client/module/modules/render/FreeLook.kt @@ -3,6 +3,7 @@ package com.lambda.client.module.modules.render import com.lambda.client.event.SafeClientEvent import com.lambda.client.module.Category import com.lambda.client.module.Module +import com.lambda.client.util.threads.runSafe import com.lambda.client.util.threads.safeListener import net.minecraft.entity.Entity import net.minecraft.util.math.MathHelper @@ -25,10 +26,12 @@ object FreeLook : Module( init { onEnable { - thirdPersonBefore = mc.gameSettings.thirdPersonView - mc.gameSettings.thirdPersonView = 1; - cameraYaw = mc.player.rotationYaw + 180.0f - cameraPitch = mc.player.rotationPitch + runSafe { + thirdPersonBefore = mc.gameSettings.thirdPersonView + mc.gameSettings.thirdPersonView = 1; + cameraYaw = player.rotationYaw + 180.0f + cameraPitch = player.rotationPitch + } } onDisable { @@ -36,26 +39,26 @@ object FreeLook : Module( } safeListener { - if (mc.gameSettings.thirdPersonView > 0) { - it.yaw = cameraYaw - it.pitch = cameraPitch - } + if (mc.gameSettings.thirdPersonView <= 0) return@safeListener + + it.yaw = cameraYaw + it.pitch = cameraPitch } safeListener { - if (arrowKeyYawAdjust) { - if (it.movementInput.leftKeyDown) { - // shift cam and player rot left by x degrees - updateYaw(-arrowKeyYawAdjustIncrement) - it.movementInput.leftKeyDown = false - } - if (it.movementInput.rightKeyDown) { - // shift cam and player rot right by x degrees - updateYaw(arrowKeyYawAdjustIncrement) - it.movementInput.rightKeyDown = false - } - it.movementInput.moveStrafe = 0.0f + if (!arrowKeyYawAdjust) return@safeListener + + if (it.movementInput.leftKeyDown) { + // shift cam and player rot left by x degrees + updateYaw(-arrowKeyYawAdjustIncrement) + it.movementInput.leftKeyDown = false + } + if (it.movementInput.rightKeyDown) { + // shift cam and player rot right by x degrees + updateYaw(arrowKeyYawAdjustIncrement) + it.movementInput.rightKeyDown = false } + it.movementInput.moveStrafe = 0.0f } }