2222 * SOFTWARE.
2323 */
2424
25- package com .zigythebird .playeranim .mixin ;
25+ package com .zigythebird .playeranim .mixin . firstPerson ;
2626
27+ import com .llamalad7 .mixinextras .injector .v2 .WrapWithCondition ;
2728import com .mojang .blaze3d .vertex .PoseStack ;
2829import com .zigythebird .playeranimcore .api .firstPerson .FirstPersonMode ;
2930import net .minecraft .client .Minecraft ;
3031import net .minecraft .client .model .EntityModel ;
3132import net .minecraft .client .model .PlayerModel ;
3233import net .minecraft .client .player .AbstractClientPlayer ;
34+ import net .minecraft .client .player .LocalPlayer ;
3335import net .minecraft .client .renderer .MultiBufferSource ;
3436import net .minecraft .client .renderer .entity .LivingEntityRenderer ;
37+ import net .minecraft .client .renderer .entity .layers .HumanoidArmorLayer ;
38+ import net .minecraft .client .renderer .entity .layers .PlayerItemInHandLayer ;
39+ import net .minecraft .client .renderer .entity .layers .RenderLayer ;
40+ import net .minecraft .world .entity .Entity ;
3541import net .minecraft .world .entity .LivingEntity ;
3642import org .spongepowered .asm .mixin .Mixin ;
3743import org .spongepowered .asm .mixin .Shadow ;
4046import org .spongepowered .asm .mixin .injection .Inject ;
4147import org .spongepowered .asm .mixin .injection .callback .CallbackInfo ;
4248
43- @ Mixin (LivingEntityRenderer .class )
49+ @ Mixin (value = LivingEntityRenderer .class , priority = 2001 )
4450public class LivingEntityRendererMixin <T extends LivingEntity , M extends EntityModel <T >> {
45- @ Shadow protected M model ;
51+ @ Shadow
52+ protected M model ;
4653
4754 @ Inject (method = "render(Lnet/minecraft/world/entity/LivingEntity;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V" , at = @ At ("TAIL" ))
4855 private void render (T entity , float entityYaw , float partialTicks , PoseStack poseStack , MultiBufferSource buffer , int packedLight , CallbackInfo ci ) {
@@ -63,4 +70,14 @@ private void render(T entity, float entityYaw, float partialTicks, PoseStack pos
6370 model .rightArm .visible = visible ;
6471 model .leftArm .visible = visible ;
6572 }
73+
74+ @ WrapWithCondition (
75+ method = "render(Lnet/minecraft/world/entity/LivingEntity;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V" ,
76+ at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/renderer/entity/layers/RenderLayer;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/Entity;FFFFFF)V" ))
77+ private boolean filterLayers (RenderLayer layer , PoseStack poseStack , MultiBufferSource multiBufferSource , int i , Entity entity , float v , float v1 , float v2 , float v3 , float v4 , float v5 ) {
78+ if (entity instanceof LocalPlayer && FirstPersonMode .isFirstPersonPass ()) {
79+ return layer instanceof PlayerItemInHandLayer || layer instanceof HumanoidArmorLayer <?,?,?>;
80+ }
81+ return true ;
82+ }
6683}
0 commit comments