Skip to content

Commit 5ae5302

Browse files
committed
Initial draft for 1.21.11
1 parent 56bfa75 commit 5ae5302

39 files changed

+265
-228
lines changed

build.gradle.kts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ val discordIPCVersion: String by project
3030
val classGraphVersion: String by project
3131
val kotlinVersion: String by project
3232
val ktorVersion: String by project
33-
val mockitoKotlin: String by project
34-
val mockitoInline: String by project
3533
val mockkVersion: String by project
3634
val spairVersion: String by project
3735
val lwjglVersion: String by project
@@ -46,10 +44,10 @@ val replacements = file("gradle.properties").inputStream().use { stream ->
4644
}.map { (k, v) -> k.toString() to v.toString() }.toMap()
4745

4846
plugins {
49-
kotlin("jvm") version "2.2.0"
50-
id("org.jetbrains.dokka") version "2.0.0"
51-
id("fabric-loom") version "1.10-SNAPSHOT"
52-
id("com.gradleup.shadow") version "9.0.0-rc1"
47+
kotlin("jvm") version "2.3.0"
48+
id("org.jetbrains.dokka") version "2.1.0"
49+
id("fabric-loom") version "1.14-SNAPSHOT"
50+
id("com.gradleup.shadow") version "9.3.0"
5351
id("maven-publish")
5452
}
5553

@@ -175,7 +173,8 @@ dependencies {
175173
includeLib("io.ktor:ktor-serialization-gson:$ktorVersion")
176174

177175
// Add mods
178-
modImplementation("com.github.rfresh2:baritone-fabric:$minecraftVersion")
176+
/*modImplementation("com.github.rfresh2:baritone-fabric:$minecraftVersion") */
177+
modImplementation("com.github.rfresh2:baritone-fabric:1.21.10-SNAPSHOT") // ToDo: Move to 1.21.11
179178
modCompileOnly("maven.modrinth:sodium:$sodiumVersion")
180179
modCompileOnly("maven.modrinth:malilib:$maLiLibVersion")
181180
modCompileOnly("maven.modrinth:litematica:$litematicaVersion")
@@ -185,8 +184,6 @@ dependencies {
185184

186185
// Test implementations
187186
testImplementation(kotlin("test"))
188-
testImplementation("org.mockito.kotlin:mockito-kotlin:$mockitoKotlin")
189-
testImplementation("org.mockito:mockito-inline:$mockitoInline")
190187
testImplementation("io.mockk:mockk:${mockkVersion}")
191188

192189
// Finish the configuration

gradle.properties

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,36 @@
1818
# Lambda https://github.com/lambda-client/lambda
1919
modId=lambda
2020
modName=Lambda
21-
modVersion=0.0.1
21+
modVersion=0.0.2
2222
modDescription=Minecraft utility mod for automation
2323
modIcon=assets/lambda/lambda.png
2424
mavenGroup=com.lambda
2525
modAuthors=Constructor (Avanatiker), Blade, beanbag44, Emy
2626

2727
# General
28-
minecraftVersion=1.21.5
29-
minecraftVersionMin=1.21.5
30-
minecraftVersionMax=1.21.6
28+
minecraftVersion=1.21.11
29+
minecraftVersionMin=1.21.11
30+
minecraftVersionMax=1.21.11
3131
lwjglVersion=3.3.3
32-
mixinExtrasVersion=0.5.0-rc.2
33-
kotlinVersion=2.2.0
32+
mixinExtrasVersion=0.5.0
33+
kotlinVersion=2.3.0
3434
pngEncoderVersion=0.16.0
3535
javaVersion=21
3636
baritoneVersion=1.14.0
3737
discordIPCVersion=6f6b6cce17
38-
classGraphVersion=4.8.179
39-
ktorVersion=3.1.2
40-
mockitoKotlin=5.4.0
41-
mockitoInline=5.2.0
42-
mockkVersion=1.13.17
38+
classGraphVersion=4.8.184
39+
ktorVersion=3.3.3
40+
mockkVersion=1.14.7
4341
spairVersion=1.90.0
4442

4543
# Fabric https://fabricmc.net/develop/
46-
fabricLoaderVersion=0.16.13
47-
yarnMappings=build.1
48-
fabricApiVersion=0.124.0
49-
kotlinFabricVersion=1.13.4+kotlin
50-
sodiumVersion=mc1.21.5-0.6.13-fabric
51-
litematicaVersion=0.22.2
52-
maLiLibVersion=0.24.2
44+
fabricLoaderVersion=0.18.3
45+
yarnMappings=build.3
46+
fabricApiVersion=0.139.5
47+
kotlinFabricVersion=1.13.8+kotlin
48+
sodiumVersion=mc1.21.11-0.8.0-fabric
49+
litematicaVersion=0.25.1
50+
maLiLibVersion=0.27.1
5351

5452
# Kotlin https://kotlinlang.org/
5553
kotlin.code.style=official

gradle/wrapper/gradle-wrapper.properties

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

1818
distributionBase=GRADLE_USER_HOME
1919
distributionPath=wrapper/dists
20-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
20+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
2121
networkTimeout=10000
2222
validateDistributionUrl=true
2323
zipStoreBase=GRADLE_USER_HOME

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ void sendLambdaMovement(CallbackInfo ci) {
8585
autoJumpEnabled = Lambda.getMc().options.getAutoJump().getValue();
8686
}
8787

88-
@WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;sendSneakingPacket()V"))
89-
void sendSneakingPacket(ClientPlayerEntity entity, Operation<Void> original) {
90-
PlayerPacketHandler.sendSneakPackets();
91-
}
92-
9388
@ModifyExpressionValue(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isSprinting()Z"))
9489
boolean isSprinting(boolean original) {
9590
return EventFlow.post(new MovementEvent.Sprint(original)).getSprint();

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

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -18,60 +18,28 @@
1818
package com.lambda.mixin.render;
1919

2020
import com.lambda.module.modules.render.NoRender;
21-
import com.lambda.module.modules.render.WorldColors;
22-
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
23-
import net.minecraft.client.render.BackgroundRenderer;
21+
import net.minecraft.client.render.fog.BlindnessEffectFogModifier;
22+
import net.minecraft.client.render.fog.DarknessEffectFogModifier;
23+
import net.minecraft.block.enums.CameraSubmersionType;
2424
import net.minecraft.entity.Entity;
25-
import net.minecraft.entity.LivingEntity;
26-
import net.minecraft.util.math.Vec3d;
27-
import net.minecraft.world.biome.Biome;
28-
import org.spongepowered.asm.mixin.Final;
2925
import org.spongepowered.asm.mixin.Mixin;
30-
import org.spongepowered.asm.mixin.Shadow;
3126
import org.spongepowered.asm.mixin.injection.At;
3227
import org.spongepowered.asm.mixin.injection.Inject;
3328
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
3429

35-
import java.util.List;
36-
import java.util.stream.Stream;
37-
3830
/**
39-
* <pre>{@code
40-
* Vec3d vec3d2 = camera.getPos().subtract(2.0, 2.0, 2.0).multiply(0.25);
41-
* Vec3d vec3d3 = CubicSampler.sampleColor(
42-
* vec3d2, (x, y, z) -> world.getDimensionEffects().adjustFogColor(Vec3d.unpackRgb(biomeAccess.getBiomeForNoiseGen(x, y, z).value().getFogColor()), v)
43-
* );
44-
* red = (float)vec3d3.getX();
45-
* green = (float)vec3d3.getY();
46-
* blue = (float)vec3d3.getZ();
47-
* }</pre>
31+
* Mixins to disable blindness and darkness fog effects when NoRender is enabled.
32+
*
33+
* Note: The fog system was completely rewritten in 1.21.11.
34+
* BackgroundRenderer was replaced with FogRenderer and fog modifiers are now separate classes.
4835
*/
49-
@Mixin(BackgroundRenderer.class)
36+
@Mixin(BlindnessEffectFogModifier.class)
5037
public class BackgroundRendererMixin {
51-
@Shadow @Final private static List<BackgroundRenderer.StatusEffectFogModifier> FOG_MODIFIERS;
52-
53-
/**
54-
* Modifies the fog color returned from CubicSampler.sampleColor
55-
*/
56-
@ModifyExpressionValue(method = "getFogColor", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/CubicSampler;sampleColor(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/CubicSampler$RgbFetcher;)Lnet/minecraft/util/math/Vec3d;"))
57-
private static Vec3d modifyFogColor(Vec3d original) {
58-
return WorldColors.fogOfWarColor(original);
59-
}
60-
61-
@ModifyExpressionValue(method = "getFogColor", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/biome/Biome;getWaterFogColor()I"))
62-
private static int modifyWaterFogColor(int original) {
63-
return WorldColors.waterFogColor(original);
64-
}
6538

66-
@Inject(method = "getFogModifier(Lnet/minecraft/entity/Entity;F)Lnet/minecraft/client/render/BackgroundRenderer$StatusEffectFogModifier;", at = @At("HEAD"), cancellable = true)
67-
private static void injectFogModifier(Entity entity, float tickProgress, CallbackInfoReturnable<BackgroundRenderer.StatusEffectFogModifier> cir){
68-
if (entity instanceof LivingEntity livingEntity) {
69-
Stream<BackgroundRenderer.StatusEffectFogModifier> modifiers = FOG_MODIFIERS
70-
.stream()
71-
.filter((modifier) ->
72-
modifier.shouldApply(livingEntity, tickProgress) && NoRender.shouldAcceptFog(modifier)
73-
);
74-
cir.setReturnValue(modifiers.findFirst().orElse(null));
39+
@Inject(method = "shouldApply", at = @At("HEAD"), cancellable = true)
40+
private void injectShouldApplyBlindness(CameraSubmersionType submersionType, Entity cameraEntity, CallbackInfoReturnable<Boolean> cir) {
41+
if (NoRender.getNoBlindness() && NoRender.isEnabled()) {
42+
cir.setReturnValue(false);
7543
}
7644
}
7745
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright 2025 Lambda
3+
*
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
18+
package com.lambda.mixin.render;
19+
20+
import com.lambda.module.modules.render.NoRender;
21+
import net.minecraft.client.render.fog.DarknessEffectFogModifier;
22+
import net.minecraft.block.enums.CameraSubmersionType;
23+
import net.minecraft.entity.Entity;
24+
import org.spongepowered.asm.mixin.Mixin;
25+
import org.spongepowered.asm.mixin.injection.At;
26+
import org.spongepowered.asm.mixin.injection.Inject;
27+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
28+
29+
/**
30+
* Mixin to disable darkness fog effect when NoRender is enabled.
31+
*/
32+
@Mixin(DarknessEffectFogModifier.class)
33+
public class DarknessEffectFogMixin {
34+
35+
@Inject(method = "shouldApply", at = @At("HEAD"), cancellable = true)
36+
private void injectShouldApplyDarkness(CameraSubmersionType submersionType, Entity cameraEntity, CallbackInfoReturnable<Boolean> cir) {
37+
if (NoRender.getNoDarkness() && NoRender.isEnabled()) {
38+
cir.setReturnValue(false);
39+
}
40+
}
41+
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929

3030
@Mixin(DebugRenderer.class)
3131
public class DebugRendererMixin {
32-
@Inject(method = "render", at = @At("TAIL"))
33-
private void onRender(MatrixStack matrices, Frustum frustum, VertexConsumerProvider.Immediate vertexConsumers, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) {
34-
DebugRendererModule.render(matrices, vertexConsumers, cameraX, cameraY, cameraZ);
35-
}
32+
// @Inject(method = "render", at = @At("TAIL"))
33+
// private void onRender(MatrixStack matrices, Frustum frustum, VertexConsumerProvider.Immediate vertexConsumers, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) {
34+
// DebugRendererModule.render(matrices, vertexConsumers, cameraX, cameraY, cameraZ);
35+
// }
3636
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ private void updateTargetedEntityInvoke(float tickDelta, CallbackInfo info) {
5959
* this.client.worldRenderer.render(this.pool, renderTickCounter, bl, camera, this, matrix4f3, matrix4f);
6060
* }</pre>
6161
*/
62-
@WrapOperation(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;render(Lnet/minecraft/client/util/ObjectAllocator;Lnet/minecraft/client/render/RenderTickCounter;ZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V"))
63-
void onRenderWorld(WorldRenderer instance, ObjectAllocator allocator, RenderTickCounter tickCounter, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, Matrix4f positionMatrix, Matrix4f projectionMatrix, Operation<Void> original) {
64-
original.call(instance, allocator, tickCounter, renderBlockOutline, camera, gameRenderer, positionMatrix, projectionMatrix);
65-
66-
RenderMain.render3D(positionMatrix, projectionMatrix);
67-
}
62+
// @WrapOperation(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;render(Lnet/minecraft/client/util/ObjectAllocator;Lnet/minecraft/client/render/RenderTickCounter;ZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V"))
63+
// void onRenderWorld(WorldRenderer instance, ObjectAllocator allocator, RenderTickCounter tickCounter, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, Matrix4f positionMatrix, Matrix4f projectionMatrix, Operation<Void> original) {
64+
// original.call(instance, allocator, tickCounter, renderBlockOutline, camera, gameRenderer, positionMatrix, projectionMatrix);
65+
//
66+
// RenderMain.render3D(positionMatrix, projectionMatrix);
67+
// }
6868

6969
@ModifyExpressionValue(method = "renderWorld", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 0))
7070
private float modifyMax(float original) {

src/main/kotlin/com/lambda/Lambda.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.lambda.config.serializer.ItemCodec
2727
import com.lambda.config.serializer.ItemStackCodec
2828
import com.lambda.config.serializer.KeyCodeCodec
2929
import com.lambda.config.serializer.OptionalCodec
30+
import com.lambda.config.serializer.TextCodec
3031
import com.lambda.core.Loader
3132
import com.lambda.event.events.ClientEvent
3233
import com.lambda.event.listener.UnsafeListener.Companion.listenOnceUnsafe
@@ -79,7 +80,7 @@ object Lambda : ClientModInitializer {
7980
.registerTypeAdapter(GameProfile::class.java, GameProfileCodec)
8081
.registerTypeAdapter(Optional::class.java, OptionalCodec)
8182
.registerTypeAdapter(ItemStack::class.java, ItemStackCodec)
82-
.registerTypeAdapter(Text::class.java, Text.Serializer(DynamicRegistryManager.EMPTY))
83+
.registerTypeAdapter(Text::class.java, TextCodec) // ToDo: Find out if needed
8384
.registerTypeAdapter(Item::class.java, ItemCodec)
8485
.registerTypeAdapter(BlockItem::class.java, ItemCodec)
8586
.registerTypeAdapter(ArrowItem::class.java, ItemCodec)

src/main/kotlin/com/lambda/brigadier/argument/PlayerArguments.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import net.minecraft.command.argument.EntityArgumentType
3535
import net.minecraft.command.argument.GameProfileArgumentType
3636
import net.minecraft.command.argument.TeamArgumentType
3737
import net.minecraft.scoreboard.Team
38+
import net.minecraft.server.PlayerConfigEntry
3839
import net.minecraft.server.command.ServerCommandSource
3940
import net.minecraft.server.network.ServerPlayerEntity
4041

@@ -69,7 +70,7 @@ fun ArgumentReader<
6970
DefaultArgumentDescriptor<
7071
GameProfileArgumentType
7172
>
72-
>.value(): Collection<GameProfile> {
73+
>.value(): Collection<PlayerConfigEntry> {
7374
return GameProfileArgumentType.getProfileArgument(context, name)
7475
}
7576

0 commit comments

Comments
 (0)