Skip to content

Commit 9aebfc0

Browse files
rfresh2Avanatiker
andauthored
FreeLook Module (#489)
* FreeLook Module * Decreasing nesting depth --------- Co-authored-by: Constructor <fractalminds@protonmail.com>
1 parent b623c11 commit 9aebfc0

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

src/main/java/com/lambda/mixin/entity/MixinEntity.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.lambda.client.module.modules.movement.Velocity;
55
import com.lambda.client.module.modules.player.Freecam;
66
import com.lambda.client.module.modules.player.ViewLock;
7+
import com.lambda.client.module.modules.render.FreeLook;
78
import net.minecraft.client.Minecraft;
89
import net.minecraft.client.entity.EntityPlayerSP;
910
import net.minecraft.entity.Entity;
@@ -33,6 +34,7 @@ public void applyEntityCollisionHead(Entity entityIn, CallbackInfo ci) {
3334
public void turn(float yaw, float pitch, CallbackInfo ci) {
3435
Entity casted = (Entity) (Object) this;
3536

37+
if (FreeLook.handleTurn(casted, yaw, pitch, ci)) return;
3638
if (Freecam.handleTurn(casted, yaw, pitch, ci)) return;
3739
ViewLock.handleTurn(casted, yaw, pitch, ci);
3840
}

src/main/kotlin/com/lambda/client/event/ForgeEventProcessor.kt

+5
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,9 @@ internal object ForgeEventProcessor {
165165
fun onRenderFogColors(event: EntityViewRenderEvent.FogColors) {
166166
LambdaEventBus.post(event)
167167
}
168+
169+
@SubscribeEvent
170+
fun onCameraSetupEvent(event: EntityViewRenderEvent.CameraSetup) {
171+
LambdaEventBus.post(event)
172+
}
168173
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.lambda.client.module.modules.render
2+
3+
import com.lambda.client.event.SafeClientEvent
4+
import com.lambda.client.module.Category
5+
import com.lambda.client.module.Module
6+
import com.lambda.client.util.threads.runSafe
7+
import com.lambda.client.util.threads.safeListener
8+
import net.minecraft.entity.Entity
9+
import net.minecraft.util.math.MathHelper
10+
import net.minecraftforge.client.event.EntityViewRenderEvent
11+
import net.minecraftforge.client.event.InputUpdateEvent
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo
13+
14+
object FreeLook : Module(
15+
name = "FreeLook",
16+
description = "Look Freely",
17+
category = Category.RENDER
18+
) {
19+
private val arrowKeyYawAdjust by setting("Arrow Key Yaw Adjust", false)
20+
private val arrowKeyYawAdjustIncrement by setting("Yaw Adjust Increment", 1.0f, 0.001f..10.0f, 0.001f,
21+
visibility = { arrowKeyYawAdjust });
22+
23+
private var cameraYaw: Float = 0f
24+
private var cameraPitch: Float = 0f
25+
private var thirdPersonBefore: Int = 0
26+
27+
init {
28+
onEnable {
29+
runSafe {
30+
thirdPersonBefore = mc.gameSettings.thirdPersonView
31+
mc.gameSettings.thirdPersonView = 1;
32+
cameraYaw = player.rotationYaw + 180.0f
33+
cameraPitch = player.rotationPitch
34+
}
35+
}
36+
37+
onDisable {
38+
mc.gameSettings.thirdPersonView = thirdPersonBefore
39+
}
40+
41+
safeListener<EntityViewRenderEvent.CameraSetup> {
42+
if (mc.gameSettings.thirdPersonView <= 0) return@safeListener
43+
44+
it.yaw = cameraYaw
45+
it.pitch = cameraPitch
46+
}
47+
48+
safeListener<InputUpdateEvent> {
49+
if (!arrowKeyYawAdjust) return@safeListener
50+
51+
if (it.movementInput.leftKeyDown) {
52+
// shift cam and player rot left by x degrees
53+
updateYaw(-arrowKeyYawAdjustIncrement)
54+
it.movementInput.leftKeyDown = false
55+
}
56+
if (it.movementInput.rightKeyDown) {
57+
// shift cam and player rot right by x degrees
58+
updateYaw(arrowKeyYawAdjustIncrement)
59+
it.movementInput.rightKeyDown = false
60+
}
61+
it.movementInput.moveStrafe = 0.0f
62+
}
63+
}
64+
65+
private fun SafeClientEvent.updateYaw(dYaw: Float) {
66+
cameraYaw += dYaw
67+
player.rotationYaw += dYaw
68+
}
69+
70+
@JvmStatic
71+
fun handleTurn(entity: Entity, yaw: Float, pitch: Float, ci: CallbackInfo): Boolean {
72+
if (isDisabled || mc.player == null) return false
73+
return if (entity == mc.player) {
74+
this.cameraYaw += yaw * 0.15f
75+
this.cameraPitch -= pitch * 0.15f
76+
this.cameraPitch = MathHelper.clamp(this.cameraPitch, -180.0f, 180.0f)
77+
ci.cancel()
78+
true
79+
} else {
80+
false
81+
}
82+
}
83+
}

0 commit comments

Comments
 (0)