Skip to content

Commit f454c0d

Browse files
committed
general cleanup and improved NoForceRotate. It now prevents the server from setting your rotation on server join
1 parent 8bf358d commit f454c0d

34 files changed

Lines changed: 111 additions & 102 deletions

File tree

src/main/java/com/lambda/mixin/MinecraftClientMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
package com.lambda.mixin;
1919

20-
import com.lambda.interaction.handlers.TimerHandler;
2120
import com.lambda.event.EventFlow;
2221
import com.lambda.event.events.*;
2322
import com.lambda.gui.DearImGui;
2423
import com.lambda.gui.components.ClickGuiLayout;
24+
import com.lambda.interaction.handlers.TimerHandler;
2525
import com.lambda.module.modules.movement.BetterFirework;
2626
import com.lambda.module.modules.player.Interact;
2727
import com.lambda.module.modules.player.InventoryMove;

src/main/java/com/lambda/mixin/network/ClientPlayNetworkHandlerMixin.java

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
import com.lambda.event.EventFlow;
2222
import com.lambda.event.events.ChatEvent;
2323
import com.lambda.event.events.InventoryEvent;
24+
import com.lambda.event.events.PlayerEvent;
2425
import com.lambda.event.events.WorldEvent;
2526
import com.lambda.interaction.managers.inventory.InventoryManager;
27+
import com.lambda.interaction.managers.rotating.RotationManager;
2628
import com.lambda.module.modules.movement.Velocity;
27-
import com.lambda.module.modules.player.NoForceRotate;
2829
import com.lambda.module.modules.render.NoRender;
2930
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
3031
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
@@ -33,14 +34,25 @@
3334
import net.minecraft.client.network.ClientPlayNetworkHandler;
3435
import net.minecraft.client.network.PlayerListEntry;
3536
import net.minecraft.entity.Entity;
37+
import net.minecraft.entity.EntityPosition;
3638
import net.minecraft.network.packet.s2c.play.*;
39+
import org.jetbrains.annotations.Nullable;
40+
import org.objectweb.asm.Opcodes;
3741
import org.spongepowered.asm.mixin.Mixin;
42+
import org.spongepowered.asm.mixin.Unique;
3843
import org.spongepowered.asm.mixin.injection.At;
3944
import org.spongepowered.asm.mixin.injection.Inject;
4045
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
46+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
47+
48+
import java.util.Set;
4149

4250
@Mixin(ClientPlayNetworkHandler.class)
4351
public class ClientPlayNetworkHandlerMixin {
52+
@Unique
53+
@Nullable
54+
private static PlayerEvent.ServerForceRotate forceRotateEvent = null;
55+
4456
@Inject(method = "onGameJoin(Lnet/minecraft/network/packet/s2c/play/GameJoinS2CPacket;)V", at = @At("TAIL"))
4557
void injectJoinPacket(GameJoinS2CPacket packet, CallbackInfo ci) {
4658
EventFlow.post(new WorldEvent.Join());
@@ -79,7 +91,7 @@ private void onScreenHandlerSlotUpdate(ScreenHandlerSlotUpdateS2CPacket packet,
7991
* }
8092
* }</pre>
8193
*/
82-
@ModifyExpressionValue(method = "onGameJoin(Lnet/minecraft/network/packet/s2c/play/GameJoinS2CPacket;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;seenInsecureChatWarning:Z", ordinal = 0))
94+
@ModifyExpressionValue(method = "onGameJoin(Lnet/minecraft/network/packet/s2c/play/GameJoinS2CPacket;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;seenInsecureChatWarning:Z", ordinal = 0, opcode = Opcodes.GETFIELD))
8395
public boolean onServerMetadata(boolean original) {
8496
return (NoRender.getNoChatVerificationToast() && NoRender.INSTANCE.isEnabled()) || original;
8597
}
@@ -137,25 +149,30 @@ void onOverlayMessage(OverlayMessageS2CPacket packet, CallbackInfo ci) {
137149
}
138150
}
139151

140-
@ModifyExpressionValue(method = "setPosition(Lnet/minecraft/entity/EntityPosition;Ljava/util/Set;Lnet/minecraft/entity/Entity;Z)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;yaw()F"))
152+
@Inject(method = "setPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;apply(Lnet/minecraft/entity/EntityPosition;Lnet/minecraft/entity/EntityPosition;Ljava/util/Set;)Lnet/minecraft/entity/EntityPosition;", ordinal = 0, shift = At.Shift.AFTER))
153+
private static void injectAfterRotationApply(EntityPosition pos, Set<PositionFlag> flags, Entity entity, boolean bl, CallbackInfoReturnable<Boolean> cir) {
154+
var player = Lambda.getMc().player;
155+
if (entity != player) return;
156+
forceRotateEvent = EventFlow.post(new PlayerEvent.ServerForceRotate(pos.yaw(), pos.pitch()));
157+
}
158+
159+
@ModifyExpressionValue(method = "setPosition", at = {@At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;yaw()F", ordinal = 0), @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;yaw()F", ordinal = 1)})
141160
private static float wrapSetYaw(float original, @Local(argsOnly = true) Entity entity) {
142161
var player = Lambda.getMc().player;
143162
if (entity != player) return original;
144163
if (player == null) return original;
145-
if (NoForceRotate.INSTANCE.isEnabled()) {
146-
return player.getYaw();
147-
}
148-
return original;
164+
final var force = forceRotateEvent == null || !forceRotateEvent.isCanceled();
165+
RotationManager.resetYaw(original, force);
166+
return force ? player.getYaw() : original;
149167
}
150168

151-
@ModifyExpressionValue(method = "setPosition(Lnet/minecraft/entity/EntityPosition;Ljava/util/Set;Lnet/minecraft/entity/Entity;Z)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;pitch()F"))
169+
@ModifyExpressionValue(method = "setPosition", at = {@At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;pitch()F", ordinal = 0), @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityPosition;pitch()F", ordinal = 1)})
152170
private static float wrapSetPitch(float original, @Local(argsOnly = true) Entity entity) {
153171
var player = Lambda.getMc().player;
154172
if (entity != player) return original;
155173
if (player == null) return original;
156-
if (NoForceRotate.INSTANCE.isEnabled()) {
157-
return player.getPitch();
158-
}
159-
return original;
174+
final var force = forceRotateEvent == null || !forceRotateEvent.isCanceled();
175+
RotationManager.resetPitch(original, force);
176+
return force ? player.getPitch() : original;
160177
}
161178
}

src/main/java/com/lambda/mixin/render/GameRendererMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
import net.minecraft.client.render.RenderTickCounter;
4141
import net.minecraft.client.render.WorldRenderer;
4242
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
43-
import net.minecraft.client.util.Window;
4443
import net.minecraft.client.util.ObjectAllocator;
44+
import net.minecraft.client.util.Window;
4545
import net.minecraft.item.ItemStack;
4646
import org.joml.Matrix4f;
4747
import org.joml.Vector4f;

src/main/kotlin/com/lambda/command/commands/TransferCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ import com.lambda.brigadier.executeWithResult
2828
import com.lambda.brigadier.required
2929
import com.lambda.command.LambdaCommand
3030
import com.lambda.config.automation.AutomationConfig
31-
import com.lambda.interaction.material.StackSelection.Companion.selectStack
3231
import com.lambda.interaction.handlers.ContainerHandler
3332
import com.lambda.interaction.handlers.ContainerHandler.findContainersWithMaterial
3433
import com.lambda.interaction.handlers.ContainerHandler.findContainersWithSpace
34+
import com.lambda.interaction.material.StackSelection.Companion.selectStack
3535
import com.lambda.task.RootTask
3636
import com.lambda.task.Task
3737
import com.lambda.threading.runSafeAutomated

src/main/kotlin/com/lambda/event/events/PlayerEvent.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ sealed class PlayerEvent {
4444
val deltaPitch: Double,
4545
) : ICancellable by Cancellable()
4646

47+
data class ServerForceRotate(
48+
val yaw: Double,
49+
val pitch: Double
50+
) : ICancellable by Cancellable()
51+
4752
/**
4853
* Represents the player swinging its hand
4954
*/

src/main/kotlin/com/lambda/gui/MenuBar.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ import com.lambda.imgui.ImGui
3939
import com.lambda.imgui.ImGui.closeCurrentPopup
4040
import com.lambda.imgui.flag.ImGuiCol
4141
import com.lambda.imgui.flag.ImGuiStyleVar
42-
import com.lambda.imgui.type.ImBoolean
4342
import com.lambda.imgui.flag.ImGuiWindowFlags
43+
import com.lambda.imgui.type.ImBoolean
4444
import com.lambda.interaction.handlers.BaritoneHandler
4545
import com.lambda.module.ModuleRegistry
4646
import com.lambda.module.ModuleRegistry.moduleNameMap

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/BreakSim.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ import com.lambda.interaction.construction.simulation.result.BuildResult
2828
import com.lambda.interaction.construction.simulation.result.results.BreakResult
2929
import com.lambda.interaction.construction.simulation.result.results.GenericResult
3030
import com.lambda.interaction.construction.verify.TargetState
31+
import com.lambda.interaction.handlers.ContainerHandler.findContainersWithMaterial
3132
import com.lambda.interaction.managers.hotbar.HotbarManager
3233
import com.lambda.interaction.managers.rotating.IRotationRequest.Companion.rotationRequest
3334
import com.lambda.interaction.managers.rotating.RotationManager
3435
import com.lambda.interaction.material.ContainerSelection.Companion.selectContainer
3536
import com.lambda.interaction.material.StackSelection
3637
import com.lambda.interaction.material.StackSelection.Companion.EVERYTHING
3738
import com.lambda.interaction.material.StackSelection.Companion.selectStack
38-
import com.lambda.interaction.handlers.ContainerHandler.findContainersWithMaterial
3939
import com.lambda.interaction.material.container.MaterialContainer
4040
import com.lambda.util.BlockUtils.blockState
4141
import com.lambda.util.BlockUtils.calcItemBlockBreakingDelta

src/main/kotlin/com/lambda/interaction/construction/simulation/result/results/BreakResult.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import baritone.api.pathing.goals.GoalInverted
2222
import com.lambda.context.AutomatedSafeContext
2323
import com.lambda.graphics.mc.RenderBuilder
2424
import com.lambda.graphics.util.DirectionMask.mask
25-
import com.lambda.interaction.handlers.BaritoneHandler
2625
import com.lambda.interaction.construction.simulation.context.BreakContext
2726
import com.lambda.interaction.construction.simulation.result.BuildResult
2827
import com.lambda.interaction.construction.simulation.result.ComparableResult
@@ -32,8 +31,9 @@ import com.lambda.interaction.construction.simulation.result.Drawable
3231
import com.lambda.interaction.construction.simulation.result.Navigable
3332
import com.lambda.interaction.construction.simulation.result.Rank
3433
import com.lambda.interaction.construction.simulation.result.Resolvable
35-
import com.lambda.interaction.material.StackSelection.Companion.selectStack
34+
import com.lambda.interaction.handlers.BaritoneHandler
3635
import com.lambda.interaction.handlers.ContainerHandler.transferByTask
36+
import com.lambda.interaction.material.StackSelection.Companion.selectStack
3737
import com.lambda.interaction.material.container.containers.HotbarContainer
3838
import com.lambda.task.Task
3939
import net.minecraft.block.BlockState

src/main/kotlin/com/lambda/interaction/construction/simulation/result/results/GenericResult.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ package com.lambda.interaction.construction.simulation.result.results
2020
import baritone.api.pathing.goals.GoalNear
2121
import com.lambda.context.AutomatedSafeContext
2222
import com.lambda.graphics.mc.RenderBuilder
23-
import com.lambda.interaction.handlers.BaritoneHandler
2423
import com.lambda.interaction.construction.simulation.result.BuildResult
2524
import com.lambda.interaction.construction.simulation.result.ComparableResult
2625
import com.lambda.interaction.construction.simulation.result.Drawable
2726
import com.lambda.interaction.construction.simulation.result.Navigable
2827
import com.lambda.interaction.construction.simulation.result.Rank
2928
import com.lambda.interaction.construction.simulation.result.Resolvable
30-
import com.lambda.interaction.material.StackSelection
29+
import com.lambda.interaction.handlers.BaritoneHandler
3130
import com.lambda.interaction.handlers.ContainerHandler.transferByTask
31+
import com.lambda.interaction.material.StackSelection
3232
import com.lambda.interaction.material.container.containers.HotbarContainer
3333
import com.lambda.task.Task
3434
import net.minecraft.client.data.TextureMap.side

src/main/kotlin/com/lambda/interaction/construction/simulation/result/results/InteractResult.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ package com.lambda.interaction.construction.simulation.result.results
2020
import baritone.api.pathing.goals.GoalBlock
2121
import baritone.api.pathing.goals.GoalInverted
2222
import com.lambda.graphics.mc.RenderBuilder
23-
import com.lambda.interaction.handlers.BaritoneHandler
2423
import com.lambda.interaction.construction.simulation.context.InteractContext
2524
import com.lambda.interaction.construction.simulation.result.BuildResult
2625
import com.lambda.interaction.construction.simulation.result.Contextual
2726
import com.lambda.interaction.construction.simulation.result.Dependent
2827
import com.lambda.interaction.construction.simulation.result.Drawable
2928
import com.lambda.interaction.construction.simulation.result.Navigable
3029
import com.lambda.interaction.construction.simulation.result.Rank
30+
import com.lambda.interaction.handlers.BaritoneHandler
3131
import net.minecraft.block.BlockState
3232
import net.minecraft.entity.Entity
3333
import net.minecraft.item.Item

0 commit comments

Comments
 (0)