2020import com .google .common .base .MoreObjects ;
2121import com .lambda .Lambda ;
2222import com .lambda .module .modules .render .ViewModel ;
23+ import com .llamalad7 .mixinextras .injector .ModifyExpressionValue ;
2324import net .minecraft .client .MinecraftClient ;
2425import net .minecraft .client .network .AbstractClientPlayerEntity ;
25- import net .minecraft .client .render .VertexConsumerProvider ;
26+ import net .minecraft .client .render .command . OrderedRenderCommandQueue ;
2627import net .minecraft .client .render .item .HeldItemRenderer ;
2728import net .minecraft .client .util .math .MatrixStack ;
2829import net .minecraft .item .ItemStack ;
3334import org .spongepowered .asm .mixin .injection .At ;
3435import org .spongepowered .asm .mixin .injection .Inject ;
3536import org .spongepowered .asm .mixin .injection .ModifyArg ;
36- import org .spongepowered .asm .mixin .injection .ModifyVariable ;
3737import org .spongepowered .asm .mixin .injection .callback .CallbackInfo ;
3838
3939@ Mixin (HeldItemRenderer .class )
@@ -43,63 +43,59 @@ public class HeldItemRendererMixin {
4343 @ Shadow private ItemStack offHand ;
4444 @ Shadow private float equipProgressMainHand ;
4545 @ Shadow private float equipProgressOffHand ;
46- //
47- // @Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderArmHoldingItem(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IFFLnet/minecraft/util/Arm;)V"))
48- // private void onRenderArmHoldingItem(AbstractClientPlayerEntity player, float tickDelta, float pitch, Hand hand, float swingProgress, ItemStack itemStack, float equipProgress, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) {
49- // if (!ViewModel.INSTANCE.isEnabled()) return;
50- //
51- // ViewModel.INSTANCE.transform(itemStack, hand, matrices);
52- // }
53- //
54- // @Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemDisplayContext;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", ordinal = 1))
55- // private void onRenderFirstPersonItem(AbstractClientPlayerEntity player, float tickDelta, float pitch, Hand hand, float swingProgress, ItemStack itemStack, float equipProgress, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) {
56- // if (!ViewModel.INSTANCE.isEnabled()) return;
57- //
58- // ViewModel.INSTANCE.transform(itemStack, hand, matrices);
59- // }
60- //
61- // @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 2), index = 0)
62- // private float modifyEquipProgressMainHand(float value) {
63- // if (client.player == null || ViewModel.INSTANCE.isDisabled()) return value;
64- //
65- // ViewModel config = ViewModel.INSTANCE;
66- // ItemStack currentStack = client.player.getMainHandStack();
67- // if (config.getOldAnimations() && !config.getSwapAnimation()) {
68- // mainHand = currentStack;
69- // }
70- //
71- // float progress = config.getOldAnimations() ? 1 : (float) Math.pow(client.player.getAttackCooldownProgress(1), 3);
72- //
73- // return (ItemStack.areEqual(mainHand, currentStack) ? progress : 0) - equipProgressMainHand;
74- // }
75- //
76- // @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 3), index = 0)
77- // private float modifyEquipProgressOffHand(float value) {
78- // if (client.player == null || ViewModel.INSTANCE.isDisabled()) return value;
79- //
80- // ViewModel config = ViewModel.INSTANCE;
81- //
82- // ItemStack currentStack = client.player.getOffHandStack();
83- // if (config.getOldAnimations() && !config.getSwapAnimation()) {
84- // offHand = currentStack;
85- // }
86- //
87- // return (ItemStack.areEqual(offHand, currentStack) ? 1 : 0) - equipProgressOffHand;
88- // }
89- //
90- // @ModifyVariable(method = "renderItem(FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/network/ClientPlayerEntity;I)V", at = @At(value = "STORE", ordinal = 0), index = 6)
91- // private float modifySwing(float swingProgress) {
92- // ViewModel config = ViewModel.INSTANCE;
93- // MinecraftClient mc = Lambda.getMc();
94- // if (config.isDisabled() || mc.player == null) return swingProgress;
95- // Hand hand = MoreObjects.firstNonNull(mc.player.preferredHand, Hand.MAIN_HAND);
96- //
97- // if (hand == Hand.MAIN_HAND) {
98- // return swingProgress + config.getMainSwingProgress();
99- // } else if (hand == Hand.OFF_HAND) {
100- // return swingProgress + config.getOffhandSwingProgress();
101- // }
102- //
103- // return swingProgress;
104- // }
46+
47+ @ Inject (method = "renderFirstPersonItem" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemDisplayContext;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;I)V" ))
48+ private void injectRenderFirstPersonItem (AbstractClientPlayerEntity player , float tickProgress , float pitch , Hand hand , float swingProgress , ItemStack item , float equipProgress , MatrixStack matrices , OrderedRenderCommandQueue orderedRenderCommandQueue , int light , CallbackInfo ci ) {
49+ if (ViewModel .INSTANCE .isEnabled ()) ViewModel .INSTANCE .transform (item , hand , matrices );
50+ }
51+
52+ @ Inject (method = "renderFirstPersonItem" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderArmHoldingItem(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;IFFLnet/minecraft/util/Arm;)V" ))
53+ private void injectRenderArmHoldingItem (AbstractClientPlayerEntity player , float tickProgress , float pitch , Hand hand , float swingProgress , ItemStack item , float equipProgress , MatrixStack matrices , OrderedRenderCommandQueue orderedRenderCommandQueue , int light , CallbackInfo ci ) {
54+ if (ViewModel .INSTANCE .isEnabled ()) ViewModel .INSTANCE .transform (item , hand , matrices );
55+ }
56+
57+ @ ModifyArg (method = "updateHeldItems" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F" , ordinal = 2 ), index = 0 )
58+ private float modifyEquipProgressMainHand (float value ) {
59+ if (client .player == null || ViewModel .INSTANCE .isDisabled ()) return value ;
60+
61+ ViewModel config = ViewModel .INSTANCE ;
62+ ItemStack currentStack = client .player .getMainHandStack ();
63+ if (config .getOldAnimations () && !config .getSwapAnimation ()) {
64+ mainHand = currentStack ;
65+ }
66+
67+ float progress = config .getOldAnimations () ? 1 : (float ) Math .pow (client .player .getAttackCooldownProgress (1 ), 3 );
68+
69+ return (ItemStack .areEqual (mainHand , currentStack ) ? progress : 0 ) - equipProgressMainHand ;
70+ }
71+
72+ @ ModifyArg (method = "updateHeldItems" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F" , ordinal = 3 ), index = 0 )
73+ private float modifyEquipProgressOffHand (float value ) {
74+ if (client .player == null || ViewModel .INSTANCE .isDisabled ()) return value ;
75+
76+ ViewModel config = ViewModel .INSTANCE ;
77+
78+ ItemStack currentStack = client .player .getOffHandStack ();
79+ if (config .getOldAnimations () && !config .getSwapAnimation ()) {
80+ offHand = currentStack ;
81+ }
82+
83+ return (ItemStack .areEqual (offHand , currentStack ) ? 1 : 0 ) - equipProgressOffHand ;
84+ }
85+
86+ @ ModifyExpressionValue (method = "renderItem(FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/network/ClientPlayerEntity;I)V" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/network/ClientPlayerEntity;getHandSwingProgress(F)F" ))
87+ private float modifySwing (float swingProgress ) {
88+ ViewModel config = ViewModel .INSTANCE ;
89+ MinecraftClient mc = Lambda .getMc ();
90+ if (config .isDisabled () || mc .player == null ) return swingProgress ;
91+ Hand hand = MoreObjects .firstNonNull (mc .player .preferredHand , Hand .MAIN_HAND );
92+
93+ if (hand == Hand .MAIN_HAND ) {
94+ return swingProgress + config .getMainSwingProgress ();
95+ } else if (hand == Hand .OFF_HAND ) {
96+ return swingProgress + config .getOffhandSwingProgress ();
97+ }
98+
99+ return swingProgress ;
100+ }
105101}
0 commit comments