diff --git a/src/main/java/dev/gegy/colored_lights/mixin/render/entity/ModelPartMixin.java b/src/main/java/dev/gegy/colored_lights/mixin/render/entity/ModelPartMixin.java index bc970b9..1173a58 100644 --- a/src/main/java/dev/gegy/colored_lights/mixin/render/entity/ModelPartMixin.java +++ b/src/main/java/dev/gegy/colored_lights/mixin/render/entity/ModelPartMixin.java @@ -2,32 +2,27 @@ import dev.gegy.colored_lights.render.ColoredLightEntityRenderContext; import net.minecraft.client.model.ModelPart; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.MathHelper; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.invoke.arg.Args; -@Mixin(ModelPart.class) +@Mixin(value = ModelPart.class, priority = 800) public abstract class ModelPartMixin { - @Shadow - protected abstract void renderCuboids(MatrixStack.Entry entry, VertexConsumer writer, int light, int overlay, float red, float green, float blue, float alpha); - @Redirect( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;IIFFFF)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/ModelPart;renderCuboids(Lnet/minecraft/client/util/math/MatrixStack$Entry;Lnet/minecraft/client/render/VertexConsumer;IIFFFF)V") - ) - private void render(ModelPart part, MatrixStack.Entry entry, VertexConsumer writer, int light, int overlay, float red, float green, float blue, float alpha) { - var ctx = ColoredLightEntityRenderContext.get(); - if (ctx != null) { + @ModifyArgs(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;IIFFFF)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/ModelPart;renderCuboids(Lnet/minecraft/client/util/math/MatrixStack$Entry;Lnet/minecraft/client/render/VertexConsumer;IIFFFF)V")) + private void modArgs(Args args){ + ColoredLightEntityRenderContext ctx = ColoredLightEntityRenderContext.get(); + if (ctx != null){ + int light = args.get(2); + float red = args.get(4); + float green = args.get(5); + float blue = args.get(6); float factor = ctx.getLightColorFactor(light); - red *= MathHelper.lerp(factor, 1.0F, ctx.red); - green *= MathHelper.lerp(factor, 1.0F, ctx.green); - blue *= MathHelper.lerp(factor, 1.0F, ctx.blue); + args.set(4, red * MathHelper.lerp(factor, 1.0f, ctx.red)); + args.set(5, green * MathHelper.lerp(factor, 1.0f, ctx.green)); + args.set(6, blue * MathHelper.lerp(factor, 1.0f, ctx.blue)); } - - this.renderCuboids(entry, writer, light, overlay, red, green, blue, alpha); } }