Skip to content

Commit d3cf89f

Browse files
committed
Merge branch 'master' into feature/plugin
2 parents dfd71cf + 3db1e98 commit d3cf89f

File tree

128 files changed

+2957
-753
lines changed

Some content is hidden

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

128 files changed

+2957
-753
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.lambda.mixin.items;
2+
3+
import com.lambda.module.modules.render.BlockESP;
4+
import net.minecraft.block.BarrierBlock;
5+
import net.minecraft.block.BlockRenderType;
6+
import net.minecraft.block.BlockState;
7+
import net.minecraft.block.Blocks;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
@Mixin(BarrierBlock.class)
14+
public class BarrierBlockMixin {
15+
16+
@Inject(method = "getRenderType", at = @At(value = "RETURN"), cancellable = true)
17+
private void getRenderType(BlockState state, CallbackInfoReturnable<BlockRenderType> cir) {
18+
if (BlockESP.INSTANCE.isEnabled()
19+
&& BlockESP.getBarrier()
20+
&& state.getBlock() == Blocks.BARRIER
21+
) cir.setReturnValue(BlockRenderType.MODEL);
22+
}
23+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.module.modules.render.BlockESP;
4+
import net.minecraft.block.BlockState;
5+
import net.minecraft.block.Blocks;
6+
import net.minecraft.client.render.block.BlockRenderManager;
7+
import net.minecraft.client.render.model.BakedModel;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
@Mixin(BlockRenderManager.class)
14+
public abstract class BlockRenderManagerMixin {
15+
@Inject(method = "getModel", at = @At("HEAD"), cancellable = true)
16+
private void getModel(BlockState state, CallbackInfoReturnable<BakedModel> cir) {
17+
if (BlockESP.INSTANCE.isEnabled()
18+
&& BlockESP.getBarrier()
19+
&& state.getBlock() == Blocks.BARRIER
20+
) cir.setReturnValue(BlockESP.getModel());
21+
}
22+
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.lambda.event.EventFlow;
44
import com.lambda.event.events.RenderEvent;
5+
import com.lambda.graphics.RenderMain;
56
import net.minecraft.client.render.GameRenderer;
7+
import net.minecraft.client.util.math.MatrixStack;
68
import org.spongepowered.asm.mixin.Mixin;
79
import org.spongepowered.asm.mixin.injection.At;
810
import org.spongepowered.asm.mixin.injection.Inject;
@@ -16,4 +18,9 @@ private void updateTargetedEntityInvoke(float tickDelta, CallbackInfo info) {
1618
info.cancel();
1719
}
1820
}
21+
22+
@Inject(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", shift = At.Shift.AFTER))
23+
private void onRenderWorld(float tickDelta, long limitTime, MatrixStack matrix, CallbackInfo ci) {
24+
RenderMain.render3D(matrix.peek().getPositionMatrix());
25+
}
1926
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.module.modules.render.NoRender;
4+
import net.minecraft.client.MinecraftClient;
5+
import net.minecraft.client.gui.hud.InGameOverlayRenderer;
6+
import net.minecraft.client.texture.Sprite;
7+
import net.minecraft.client.util.math.MatrixStack;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.ModifyArg;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
14+
@Mixin(InGameOverlayRenderer.class)
15+
public class InGameOverlayRendererMixin {
16+
@Inject(method = "renderFireOverlay", at = @At("HEAD"), cancellable = true)
17+
private static void onRenderFireOverlay(
18+
MinecraftClient mc,
19+
MatrixStack matrixStack,
20+
CallbackInfo ci
21+
) {
22+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoBurning()) ci.cancel();
23+
}
24+
25+
@ModifyArg(method = "renderFireOverlay", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;translate(FFF)V"), index = 1)
26+
private static float onRenderFireOverlayTranslate(float x) {
27+
if (NoRender.INSTANCE.isEnabled()) {
28+
return (float) NoRender.getFireOverlayYOffset();
29+
} else {
30+
return -0.3f;
31+
}
32+
}
33+
34+
@Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true)
35+
private static void onRenderUnderwaterOverlay(
36+
MinecraftClient mc,
37+
MatrixStack matrixStack,
38+
CallbackInfo ci
39+
) {
40+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoUnderwater()) ci.cancel();
41+
}
42+
43+
@Inject(method = "renderInWallOverlay", at = @At("HEAD"), cancellable = true)
44+
private static void onRenderInWallOverlay(
45+
Sprite sprite,
46+
MatrixStack matrices,
47+
CallbackInfo ci
48+
) {
49+
if (NoRender.INSTANCE.isEnabled() && NoRender.getNoInWall()) ci.cancel();
50+
}
51+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
@Mixin(LightmapTextureManager.class)
1414
public class LightmapTextureManagerMixin {
1515
@ModifyArg(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;setColor(III)V"), index = 2)
16-
private int updateModify(int x) {
16+
private int updateModify(int color) {
1717
if (Fullbright.INSTANCE.isEnabled() || XRay.INSTANCE.isEnabled()) {
1818
return 0xFFFFFFFF;
1919
}
20-
return x;
20+
return color;
2121
}
2222

2323
@Inject(method = "getDarknessFactor(F)F", at = @At("HEAD"), cancellable = true)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.module.modules.render.XRay;
4+
import net.minecraft.block.BlockState;
5+
import net.minecraft.client.render.RenderLayer;
6+
import net.minecraft.client.render.RenderLayers;
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.callback.CallbackInfoReturnable;
11+
12+
@Mixin(RenderLayers.class)
13+
public class RenderLayersMixin {
14+
@Inject(method = "getBlockLayer", at = @At("HEAD"), cancellable = true)
15+
private static void onGetBlockLayer(BlockState state, CallbackInfoReturnable<RenderLayer> cir) {
16+
if (XRay.INSTANCE.isDisabled()) return;
17+
18+
if (!XRay.isSelected(state)) cir.setReturnValue(RenderLayer.getTranslucent());
19+
}
20+
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ package com.lambda
33
import com.google.gson.Gson
44
import com.google.gson.GsonBuilder
55
import com.lambda.config.serializer.*
6+
import com.lambda.config.serializer.gui.CustomModuleWindowSerializer
67
import com.lambda.config.serializer.gui.ModuleTagSerializer
78
import com.lambda.config.serializer.gui.TagWindowSerializer
89
import com.lambda.core.Loader
9-
import com.lambda.gui.impl.clickgui.windows.TagWindow
10+
import com.lambda.gui.impl.clickgui.windows.tag.CustomModuleWindow
11+
import com.lambda.gui.impl.clickgui.windows.tag.TagWindow
1012
import com.lambda.module.tag.ModuleTag
1113
import com.lambda.util.KeyCode
1214
import com.mojang.authlib.GameProfile
@@ -28,6 +30,7 @@ object Lambda {
2830
val gson: Gson = GsonBuilder()
2931
.setPrettyPrinting()
3032
.registerTypeAdapter(ModuleTag::class.java, ModuleTagSerializer)
33+
.registerTypeAdapter(CustomModuleWindow::class.java, CustomModuleWindowSerializer)
3134
.registerTypeAdapter(TagWindow::class.java, TagWindowSerializer)
3235
.registerTypeAdapter(KeyCode::class.java, KeyCodeSerializer)
3336
.registerTypeAdapter(Color::class.java, ColorSerializer)

common/src/main/kotlin/com/lambda/config/configurations/GuiConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ import com.lambda.util.FolderRegister
66
object GuiConfig : Configuration() {
77
override val configName = "gui"
88
override val primary = FolderRegister.config.resolve("$configName.json")
9-
}
9+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.lambda.config.serializer.gui
2+
3+
import com.google.gson.*
4+
import com.lambda.gui.impl.clickgui.LambdaClickGui
5+
import com.lambda.gui.impl.clickgui.windows.tag.CustomModuleWindow
6+
import com.lambda.module.ModuleRegistry
7+
import com.lambda.util.math.Vec2d
8+
import java.lang.reflect.Type
9+
10+
object CustomModuleWindowSerializer : JsonSerializer<CustomModuleWindow>, JsonDeserializer<CustomModuleWindow> {
11+
override fun serialize(
12+
src: CustomModuleWindow?,
13+
typeOfSrc: Type?,
14+
context: JsonSerializationContext?,
15+
): JsonElement = src?.let {
16+
JsonObject().apply {
17+
addProperty("title", it.title)
18+
add("modules", JsonArray().apply {
19+
it.modules.forEach {
20+
add(it.name)
21+
}
22+
})
23+
addProperty("width", it.width)
24+
addProperty("height", it.height)
25+
addProperty("isOpen", it.isOpen)
26+
add("position", JsonArray().apply {
27+
add(it.position.x)
28+
add(it.position.y)
29+
})
30+
}
31+
} ?: JsonNull.INSTANCE
32+
33+
override fun deserialize(
34+
json: JsonElement?,
35+
typeOfT: Type?,
36+
context: JsonDeserializationContext?,
37+
) = json?.asJsonObject?.let {
38+
CustomModuleWindow(
39+
it["title"].asString,
40+
it["modules"].asJsonArray.mapNotNull { name ->
41+
ModuleRegistry.modules.firstOrNull { module ->
42+
module.name == name.asString
43+
}
44+
} as MutableList,
45+
LambdaClickGui
46+
).apply {
47+
width = it["width"].asDouble
48+
height = it["height"].asDouble
49+
isOpen = it["isOpen"].asBoolean
50+
position = Vec2d(
51+
it["position"].asJsonArray[0].asDouble,
52+
it["position"].asJsonArray[1].asDouble
53+
)
54+
}
55+
} ?: throw JsonParseException("Invalid window data")
56+
}

common/src/main/kotlin/com/lambda/config/serializer/gui/TagWindowSerializer.kt

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.lambda.config.serializer.gui
22

33
import com.google.gson.*
4-
import com.lambda.gui.impl.clickgui.windows.TagWindow
4+
import com.lambda.gui.impl.clickgui.LambdaClickGui
5+
import com.lambda.gui.impl.clickgui.windows.tag.TagWindow
56
import com.lambda.module.tag.ModuleTag
67
import com.lambda.util.math.Vec2d
78
import java.lang.reflect.Type
@@ -13,12 +14,7 @@ object TagWindowSerializer : JsonSerializer<TagWindow>, JsonDeserializer<TagWind
1314
context: JsonSerializationContext?,
1415
): JsonElement = src?.let {
1516
JsonObject().apply {
16-
addProperty("title", it.title)
17-
add("tags", JsonArray().apply {
18-
it.tags.forEach { tag ->
19-
add(tag.name)
20-
}
21-
})
17+
addProperty("tag", it.tag.name)
2218
addProperty("width", it.width)
2319
addProperty("height", it.height)
2420
addProperty("isOpen", it.isOpen)
@@ -33,15 +29,10 @@ object TagWindowSerializer : JsonSerializer<TagWindow>, JsonDeserializer<TagWind
3329
json: JsonElement?,
3430
typeOfT: Type?,
3531
context: JsonDeserializationContext?,
36-
) = json?.asJsonObject?.let {
37-
TagWindow(
38-
tags = it["tags"].asJsonArray.map { tag ->
39-
ModuleTag(tag.asString)
40-
}.toSet(),
41-
title = it["title"].asString,
42-
width = it["width"].asDouble,
32+
) = json?.asJsonObject?.let {
33+
TagWindow(ModuleTag(it["tag"].asString), LambdaClickGui).apply {
34+
width = it["width"].asDouble
4335
height = it["height"].asDouble
44-
).apply {
4536
isOpen = it["isOpen"].asBoolean
4637
position = Vec2d(
4738
it["position"].asJsonArray[0].asDouble,

0 commit comments

Comments
 (0)