diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java new file mode 100644 index 0000000000..35bc339bf9 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java @@ -0,0 +1,29 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.ESP; +import net.minecraft.client.render.entity.ArmorStandEntityRenderer; +import net.minecraft.entity.EntityType; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ArmorStandEntityRenderer.class) +public class ArmorStandEntityRendererMixin { + @Unique + private static ESP esp; + + @ModifyExpressionValue(method = "getRenderLayer(Lnet/minecraft/client/render/entity/state/ArmorStandEntityRenderState;ZZZ)Lnet/minecraft/client/render/RenderLayer;", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/ArmorStandEntityRenderState;marker:Z", opcode = Opcodes.GETFIELD)) + private boolean modifyMarkerValue(boolean original) { + if (esp == null) esp = Modules.get().get(ESP.class); + + return original && !(esp.isActive() && !esp.shouldSkip(EntityType.ARMOR_STAND)); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java index cefd1c7170..0b9f594c88 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java @@ -355,6 +355,10 @@ public boolean shouldSkip(Entity entity) { return !EntityUtils.isInRenderDistance(entity); } + public boolean shouldSkip(EntityType entityType) { + return !entities.get().contains(entityType); + } + public Color getColor(Entity entity) { Color color; double alpha = 1; diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index d76c049dd1..cbf93bf82b 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -16,6 +16,7 @@ "AbstractSignEditScreenAccessor", "AbstractSignEditScreenMixin", "ArmorFeatureRendererMixin", + "ArmorStandEntityRendererMixin", "AttackRangeComponentMixin", "BannerBlockEntityRendererMixin", "BeaconBlockEntityRendererMixin",