|
1 | 1 | package net.i_no_am.viewmodel.mixin; |
2 | 2 |
|
| 3 | +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; |
3 | 4 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; |
4 | 5 | import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; |
5 | 6 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; |
| 7 | +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; |
6 | 8 | import com.mojang.blaze3d.vertex.PoseStack; |
7 | 9 | import com.mojang.math.Axis; |
8 | 10 | import net.i_no_am.viewmodel.Global; |
|
29 | 31 | public abstract class MixinItemInHandRenderer implements Global { |
30 | 32 |
|
31 | 33 | @Shadow private ItemStack mainHandItem; |
32 | | - @Shadow private ItemStack offHandItem; |
33 | | - @Shadow private float offHandHeight; |
34 | | - @Shadow protected abstract boolean shouldInstantlyReplaceVisibleItem(ItemStack currentlyVisibleItem, ItemStack expectedItem); |
35 | | - @Shadow private float mainHandHeight; |
36 | 34 |
|
37 | 35 | @Inject(method = "submitArmWithItem", at = @At("HEAD")) |
38 | 36 | private void onRenderHandsPos(AbstractClientPlayer player, float frameInterp, float xRot, InteractionHand hand, float attack, ItemStack itemStack, float inverseArmHeight, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, CallbackInfo ci) { |
@@ -92,23 +90,14 @@ private boolean skipSwapAnimation(boolean original) { |
92 | 90 | return original || Config.skipSwapping; |
93 | 91 | } |
94 | 92 |
|
95 | | - @ModifyArg(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;clamp(FFF)F", ordinal = 2), index = 0) |
96 | | - private float modifyEquipProgressMainHand(float value) { |
97 | | - if (mc.player == null) return value; |
98 | | - |
99 | | - ItemStack currentStack = mc.player.getMainHandItem(); |
100 | | - if (Config.oldAnimations && !Config.skipSwapping) { |
101 | | - mainHandItem = currentStack; |
102 | | - } |
103 | | - |
104 | | - float progress = Config.oldAnimations ? 1 : (float) Math.pow(mc.player.getItemSwapScale(1), 3); |
105 | | - |
106 | | - return (ItemStack.matches(mainHandItem, currentStack) ? progress : 0) - mainHandHeight; |
| 93 | + @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;shouldInstantlyReplaceVisibleItem(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z", ordinal = 0)) |
| 94 | + private boolean skipMainHandSwapAnimation(ItemInHandRenderer instance, ItemStack currentlyVisibleItem, ItemStack expectedItem, Operation<Boolean> original) { |
| 95 | + return Config.oldAnimations || original.call(instance, currentlyVisibleItem, expectedItem); |
107 | 96 | } |
108 | 97 |
|
109 | | - @ModifyArg(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;clamp(FFF)F", ordinal = 3), index = 0) |
110 | | - private float skipOffHandSwapAnim(float value) { |
111 | | - return Config.skipSwapping ? (shouldInstantlyReplaceVisibleItem(offHandItem, mc.player.getOffhandItem()) ? 1 : 0) - offHandHeight : value; |
| 98 | + @ModifyExpressionValue(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getItemSwapScale(F)F")) |
| 99 | + private float removeItemSwapScale(float original) { |
| 100 | + return Config.oldAnimations ? 1.0F : original; |
112 | 101 | } |
113 | 102 |
|
114 | 103 | @WrapMethod(method = "applyEatTransform") |
|
0 commit comments