Skip to content

Commit 6d5d3bc

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature/renderer
2 parents fc59c12 + c536583 commit 6d5d3bc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+894
-254
lines changed

build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ subprojects {
3030
"mappings"("net.fabricmc:yarn:$yarnMappings:v2")
3131
}
3232

33+
repositories {
34+
maven("https://babbaj.github.io/maven/")
35+
}
36+
3337
if (path == ":common") return@subprojects
3438

3539
apply(plugin = "com.github.johnrengelman.shadow")

common/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ dependencies {
2525

2626
// Add Kotlin
2727
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
28+
29+
// Baritone
30+
modImplementation("baritone-api:baritone-api:1.10.2")
31+
modImplementation("baritone-api:baritone-unoptimized-fabric:1.10.2")
2832
}
2933

3034
// Avoid nested jars
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.lambda.mixin.baritone;
2+
3+
import baritone.Baritone;
4+
import baritone.api.utils.Rotation;
5+
import baritone.utils.player.BaritonePlayerContext;
6+
import com.lambda.interaction.RotationManager;
7+
import com.lambda.util.BaritoneUtils;
8+
import org.spongepowered.asm.mixin.Final;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.Shadow;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
14+
15+
@Mixin(value = BaritonePlayerContext.class, remap = false) // fix compileJava warning
16+
public class MixinBaritonePlayerContext {
17+
@Shadow @Final private Baritone baritone;
18+
19+
// Let baritone know the actual rotation
20+
@Inject(method = "playerRotations", at = @At("HEAD"), cancellable = true, remap = false)
21+
void syncRotationWithBaritone(CallbackInfoReturnable<Rotation> cir) {
22+
if (baritone != BaritoneUtils.getPrimary()) return;
23+
24+
RotationManager rm = RotationManager.INSTANCE;
25+
cir.setReturnValue(new Rotation((float) rm.getCurrentRotation().getYaw(), (float) rm.getCurrentRotation().getPitch()));
26+
}
27+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.lambda.mixin.baritone;
2+
3+
import baritone.api.event.events.PlayerUpdateEvent;
4+
import baritone.api.event.events.RotationMoveEvent;
5+
import baritone.api.utils.Rotation;
6+
import baritone.behavior.LookBehavior;
7+
import com.lambda.interaction.RotationManager;
8+
import com.lambda.util.BaritoneUtils;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Inject;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
14+
@Mixin(LookBehavior.class)
15+
public class MixinLookBehavior {
16+
// Redirect baritone's rotations into our rotation engine
17+
@Inject(method = "updateTarget", at = @At("HEAD"), remap = false, cancellable = true)
18+
void onTargetUpdate(Rotation rotation, boolean blockInteract, CallbackInfo ci) {
19+
LookBehavior instance = ((LookBehavior) (Object) this);
20+
if (instance.baritone != BaritoneUtils.getPrimary()) return;
21+
22+
RotationManager.BaritoneProcessor.handleBaritoneRotation(rotation.getYaw(), rotation.getPitch());
23+
ci.cancel();
24+
}
25+
26+
@Inject(method = "onPlayerUpdate", at = @At("HEAD"), remap = false, cancellable = true)
27+
void onUpdate(PlayerUpdateEvent event, CallbackInfo ci) {
28+
LookBehavior instance = ((LookBehavior) (Object) this);
29+
if (instance.baritone != BaritoneUtils.getPrimary()) return;
30+
31+
ci.cancel();
32+
}
33+
34+
@Inject(method = "onPlayerRotationMove", at = @At("HEAD"), remap = false, cancellable = true)
35+
void onMovementUpdate(RotationMoveEvent event, CallbackInfo ci) {
36+
LookBehavior instance = ((LookBehavior) (Object) this);
37+
if (instance.baritone != BaritoneUtils.getPrimary()) return;
38+
39+
ci.cancel();
40+
}
41+
}

common/src/main/java/com/lambda/mixin/entity/ClientPlayerEntityMixin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,8 @@ boolean onSlowDown(ClientPlayerEntity entity) {
5757

5858
@Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/input/Input;tick(ZF)V"))
5959
void processMovement(Input input, boolean slowDown, float slowDownFactor) {
60-
if (EventFlow.post(new MovementEvent.InputUpdate(input, slowDown, slowDownFactor)).isCanceled()) return;
61-
6260
input.tick(slowDown, slowDownFactor);
61+
EventFlow.post(new MovementEvent.InputUpdate(input, slowDown, slowDownFactor));
6362
}
6463

6564
@Inject(method = "sendMovementPackets", at = @At(value = "HEAD"), cancellable = true)

common/src/main/java/com/lambda/mixin/entity/PlayerEntityMixin.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,30 @@
22

33
import com.lambda.event.EventFlow;
44
import com.lambda.event.events.MovementEvent;
5+
import com.lambda.interaction.RotationManager;
6+
import net.minecraft.client.MinecraftClient;
57
import net.minecraft.entity.player.PlayerEntity;
68
import org.spongepowered.asm.mixin.Mixin;
79
import org.spongepowered.asm.mixin.injection.At;
810
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.Redirect;
912
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1013

1114
@Mixin(PlayerEntity.class)
1215
public class PlayerEntityMixin {
1316
@Inject(method = "clipAtLedge", at = @At(value = "HEAD"), cancellable = true)
1417
private void injectSafeWalk(CallbackInfoReturnable<Boolean> cir) {
15-
MovementEvent.ClipAtLedge event = new MovementEvent.ClipAtLedge(cir.getReturnValueZ());
18+
MovementEvent.ClipAtLedge event = new MovementEvent.ClipAtLedge(((PlayerEntity) (Object) this).isSneaking());
1619
cir.setReturnValue(EventFlow.post(event).getClip());
1720
}
21+
22+
@Redirect(method = "tickNewAi", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getYaw()F"))
23+
private float injectHeadYaw(PlayerEntity instance) {
24+
if ((Object) this != MinecraftClient.getInstance().player) {
25+
return instance.getYaw();
26+
}
27+
28+
Float yaw = RotationManager.getRenderYaw();
29+
return (yaw != null) ? yaw : instance.getYaw();
30+
}
1831
}

common/src/main/java/com/lambda/mixin/render/CameraMixin.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package com.lambda.mixin.render;
22

3+
import com.lambda.interaction.RotationManager;
34
import com.lambda.module.modules.player.Freecam;
45
import net.minecraft.client.render.Camera;
56
import net.minecraft.entity.Entity;
67
import net.minecraft.world.BlockView;
78
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Shadow;
810
import org.spongepowered.asm.mixin.injection.At;
911
import org.spongepowered.asm.mixin.injection.Inject;
1012
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1113

1214
@Mixin(Camera.class)
13-
public class CameraMixin {
15+
public abstract class CameraMixin {
16+
@Shadow
17+
public abstract void setRotation(float yaw, float pitch);
18+
1419
@Inject(method = "update", at = @At("TAIL"))
1520
private void onUpdate(
1621
BlockView area,
@@ -24,4 +29,11 @@ private void onUpdate(
2429

2530
Freecam.updateCam();
2631
}
32+
33+
@Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V", shift = At.Shift.AFTER))
34+
private void injectQuickPerspectiveSwap(BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta, CallbackInfo ci) {
35+
var rot = RotationManager.getLockRotation();
36+
if (rot == null) return;
37+
setRotation(rot.getYawF(), rot.getPitchF());
38+
}
2739
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.module.modules.render.Fullbright;
4+
import com.lambda.module.modules.render.NoRender;
5+
import com.lambda.module.modules.render.XRay;
6+
import net.minecraft.client.render.LightmapTextureManager;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
13+
14+
@Mixin(LightmapTextureManager.class)
15+
public class LightmapTextureManagerMixin {
16+
@ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;setColor(III)V"))
17+
private void updateModify(Args args) {
18+
if (Fullbright.INSTANCE.isEnabled() || XRay.INSTANCE.isEnabled()) {
19+
args.set(2, 0xFFFFFFFF);
20+
}
21+
}
22+
23+
@Inject(method = "getDarknessFactor(F)F", at = @At("HEAD"), cancellable = true)
24+
private void getDarknessFactor(float tickDelta, CallbackInfoReturnable<Float> info) {
25+
if (NoRender.getNoDarkness()) info.setReturnValue(0.0f);
26+
}
27+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.Lambda;
4+
import com.lambda.interaction.RotationManager;
5+
import net.minecraft.client.render.VertexConsumerProvider;
6+
import net.minecraft.client.render.entity.LivingEntityRenderer;
7+
import net.minecraft.client.util.math.MatrixStack;
8+
import net.minecraft.entity.LivingEntity;
9+
import net.minecraft.util.math.MathHelper;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.Unique;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.Redirect;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16+
17+
import java.util.Objects;
18+
19+
@Mixin(LivingEntityRenderer.class)
20+
public class LivingEntityRendererMixin<T extends LivingEntity> {
21+
@Unique
22+
private Float lambda$pitch = null;
23+
24+
@Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At("HEAD"))
25+
private void injectRender(T livingEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) {
26+
Float rotationPitch = RotationManager.getRenderPitch();
27+
28+
this.lambda$pitch = null;
29+
30+
if (livingEntity != Lambda.getMc().player || rotationPitch == null) {
31+
return;
32+
}
33+
34+
this.lambda$pitch = rotationPitch;
35+
}
36+
37+
@Redirect(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;lerp(FFF)F", ordinal = 0))
38+
private float injectRotationPitch(float g, float f, float s) {
39+
return Objects.requireNonNullElseGet(lambda$pitch, () -> MathHelper.lerp(g, f, s));
40+
}
41+
}

common/src/main/kotlin/com/lambda/config/Configuration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.google.gson.JsonObject
55
import com.google.gson.JsonParser
66
import com.lambda.Lambda.LOG
77
import com.lambda.Lambda.gson
8+
import com.lambda.config.configurations.ModuleConfig
89
import com.lambda.event.EventFlow.lambdaScope
910
import com.lambda.event.events.ClientEvent
1011
import com.lambda.event.listener.UnsafeListener.Companion.unsafeListener
@@ -14,7 +15,6 @@ import com.lambda.util.StringUtils.capitalize
1415
import kotlinx.coroutines.Dispatchers
1516
import kotlinx.coroutines.launch
1617
import java.io.File
17-
import java.util.*
1818

1919
/**
2020
* Represents a compound of [Configurable] objects whose [AbstractSetting]s

0 commit comments

Comments
 (0)