Skip to content

Commit 352ac10

Browse files
committed
Fix Cape Swinging
1 parent 536b7ec commit 352ac10

File tree

4 files changed

+93
-24
lines changed

4 files changed

+93
-24
lines changed

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/cape_movement/MixinCapeLayer.java

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,30 +42,23 @@
4242

4343
@Mixin(CapeLayer.class)
4444
public abstract class MixinCapeLayer {
45-
@Shadow
46-
@Final
47-
private HumanoidModel<AvatarRenderState> model;
45+
@Shadow
46+
@Final
47+
private HumanoidModel<AvatarRenderState> model;
4848

49-
@ModifyExpressionValue(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/CapeLayer;hasLayer(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;)Z", ordinal = 1))
50-
private boolean animatium$capeChestplateTranslation(boolean original) {
51-
if (Animatium.isEnabled() && !AnimatiumConfig.instance().movement.capeChestplateTranslation) {
52-
return false;
53-
} else {
54-
return original;
55-
}
56-
}
49+
@ModifyExpressionValue(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/CapeLayer;hasLayer(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;)Z", ordinal = 1))
50+
private boolean animatium$capeChestplateTranslation(boolean original) {
51+
if (Animatium.isEnabled() && !AnimatiumConfig.instance().movement.capeChestplateTranslation) {
52+
return false;
53+
} else {
54+
return original;
55+
}
56+
}
5757

58-
@Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V", shift = At.Shift.BEFORE))
59-
private void animatium$capeSneakPosition(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) {
60-
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.capeSneakPosition && avatarRenderState.isCrouching) {
61-
poseStack.translate(0.0F, avatarRenderState.scale * 2.0F / 16.0F, 0.0F);
62-
}
63-
}
64-
65-
@Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V", shift = At.Shift.BEFORE))
66-
private void animatium$capeSwingRotation(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) {
67-
if (Animatium.isEnabled() && !AnimatiumConfig.instance().movement.capeSwingRotation) {
68-
model.body.yRot = 0;
69-
}
70-
}
58+
@Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V", shift = At.Shift.BEFORE))
59+
private void animatium$capeSneakPosition(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci) {
60+
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.capeSneakPosition && avatarRenderState.isCrouching) {
61+
poseStack.translate(0.0F, avatarRenderState.scale * 2.0F / 16.0F, 0.0F);
62+
}
63+
}
7164
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Animatium
3+
* The all-you-could-want legacy animations mod for modern minecraft versions.
4+
* Brings back animations from the 1.7/1.8 era and more.
5+
* <p>
6+
* Copyright (C) 2024-2025 lowercasebtw
7+
* Copyright (C) 2024-2025 mixces
8+
* Copyright (C) 2024-2025 Contributors to the project retain their copyright
9+
* <p>
10+
* This program is free software: you can redistribute it and/or modify
11+
* it under the terms of the GNU General Public License as published by
12+
* the Free Software Foundation, either version 3 of the License, or
13+
* (at your option) any later version.
14+
* <p>
15+
* This program is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU General Public License for more details.
19+
* <p>
20+
* You should have received a copy of the GNU General Public License
21+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22+
* <p>
23+
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
24+
*/
25+
26+
package org.visuals.legacy.animatium.mixins.v1.entity.cape_movement;
27+
28+
import com.mojang.blaze3d.vertex.VertexConsumer;
29+
import net.minecraft.client.model.PlayerCapeModel;
30+
import net.minecraft.client.renderer.MultiBufferSource;
31+
import net.minecraft.client.renderer.OutlineBufferSource;
32+
import net.minecraft.client.renderer.RenderType;
33+
import net.minecraft.client.renderer.SubmitNodeStorage;
34+
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
35+
import org.spongepowered.asm.mixin.Mixin;
36+
import org.spongepowered.asm.mixin.injection.At;
37+
import org.spongepowered.asm.mixin.injection.Inject;
38+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
39+
import org.visuals.legacy.animatium.Animatium;
40+
import org.visuals.legacy.animatium.config.AnimatiumConfig;
41+
42+
@Mixin(ModelFeatureRenderer.class)
43+
public abstract class MixinModelFeatureRenderer_CapeSwinging {
44+
@Inject(method = "renderModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/Model;setupAnim(Ljava/lang/Object;)V", shift = At.Shift.AFTER))
45+
private <S> void animatium$capeSwingRotation(final SubmitNodeStorage.ModelSubmit<S> submit, final RenderType renderType, final VertexConsumer consumer, final OutlineBufferSource outlineBufferSource, final MultiBufferSource.BufferSource crumblingBufferSource, final CallbackInfo ci) {
46+
if (Animatium.isEnabled() && !AnimatiumConfig.instance().movement.capeSwingRotation && submit.model() instanceof PlayerCapeModel playerCapeModel) {
47+
playerCapeModel.body.yRot = 0;
48+
}
49+
}
50+
}

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/MixinScreenEffectRenderer_TextureOverlays.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
/**
2+
* Animatium
3+
* The all-you-could-want legacy animations mod for modern minecraft versions.
4+
* Brings back animations from the 1.7/1.8 era and more.
5+
* <p>
6+
* Copyright (C) 2024-2025 lowercasebtw
7+
* Copyright (C) 2024-2025 mixces
8+
* Copyright (C) 2024-2025 Contributors to the project retain their copyright
9+
* <p>
10+
* This program is free software: you can redistribute it and/or modify
11+
* it under the terms of the GNU General Public License as published by
12+
* the Free Software Foundation, either version 3 of the License, or
13+
* (at your option) any later version.
14+
* <p>
15+
* This program is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU General Public License for more details.
19+
* <p>
20+
* You should have received a copy of the GNU General Public License
21+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22+
* <p>
23+
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
24+
*/
25+
126
package org.visuals.legacy.animatium.mixins.v1.rendering;
227

328
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;

src/main/resources/animatium.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"v1.entity.armor_hurt.MixinOverlayTexture",
2121
"v1.entity.cape_movement.MixinAvatarRenderer",
2222
"v1.entity.cape_movement.MixinCapeLayer",
23+
"v1.entity.cape_movement.MixinModelFeatureRenderer_CapeSwinging",
2324
"v1.entity.fishing.MixinFishingHookRenderer",
2425
"v1.entity.fishing.MixinItemModelResolver",
2526
"v1.entity.flame.MixinFlameFeatureRenderer",

0 commit comments

Comments
 (0)