From bacf496f7d2f3f8336792ef46b0fa4020cced239 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 17 Mar 2026 01:40:44 +0000 Subject: [PATCH 1/2] Work on Lunar support --- common/build.gradle | 3 + .../mixin/MinecraftCapesMixinPlugin.java | 62 +++++++++++++++++++ .../{ => common}/MixinAvatarRenderState.java | 2 +- .../{ => common}/MixinAvatarRenderer.java | 2 +- .../mixin/{ => common}/MixinCapeLayer.java | 24 +++---- .../MixinClientMannequin.java} | 6 +- .../{ => common}/MixinDeadmau5EarsLayer.java | 2 +- .../mixin/{ => common}/MixinPlayerInfo.java | 16 ++--- .../mixin/lunar/MixinPlayerEarsModel.java | 32 ++++++++++ .../mixin/lunar/MixinPlayerInfo.java | 19 ++++++ .../{ => vanilla}/MixinPlayerEarsModel.java | 2 +- .../mixin/vanilla/MixinPlayerInfo.java | 22 +++++++ .../main/resources/minecraftcapes.mixins.json | 18 +++--- 13 files changed, 168 insertions(+), 42 deletions(-) create mode 100644 common/src/main/java/net/minecraftcapes/mixin/MinecraftCapesMixinPlugin.java rename common/src/main/java/net/minecraftcapes/mixin/{ => common}/MixinAvatarRenderState.java (97%) rename common/src/main/java/net/minecraftcapes/mixin/{ => common}/MixinAvatarRenderer.java (98%) rename common/src/main/java/net/minecraftcapes/mixin/{ => common}/MixinCapeLayer.java (56%) rename common/src/main/java/net/minecraftcapes/mixin/{ClientMannequinMixin.java => common/MixinClientMannequin.java} (90%) rename common/src/main/java/net/minecraftcapes/mixin/{ => common}/MixinDeadmau5EarsLayer.java (98%) rename common/src/main/java/net/minecraftcapes/mixin/{ => common}/MixinPlayerInfo.java (71%) create mode 100644 common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java create mode 100644 common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerInfo.java rename common/src/main/java/net/minecraftcapes/mixin/{ => vanilla}/MixinPlayerEarsModel.java (97%) create mode 100644 common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerInfo.java diff --git a/common/build.gradle b/common/build.gradle index ffd734d0..b229950f 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -14,6 +14,9 @@ dependencies { // MixinExtras compileOnly("io.github.llamalad7:mixinextras-common:0.5.0") + + // ASM for building + compileOnly("org.ow2.asm:asm-tree:9.9") } configurations { diff --git a/common/src/main/java/net/minecraftcapes/mixin/MinecraftCapesMixinPlugin.java b/common/src/main/java/net/minecraftcapes/mixin/MinecraftCapesMixinPlugin.java new file mode 100644 index 00000000..f6a7229d --- /dev/null +++ b/common/src/main/java/net/minecraftcapes/mixin/MinecraftCapesMixinPlugin.java @@ -0,0 +1,62 @@ +package net.minecraftcapes.mixin; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import java.util.List; +import java.util.Set; + +public class MinecraftCapesMixinPlugin implements IMixinConfigPlugin { + + private static Boolean isLunar() { + try { + Class.forName("com.moonsworth.lunar.genesis.Genesis"); + return true; + } catch (Throwable ignored) { + } + + return false; + } + + @Override + public void onLoad(String s) { + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String target, String mixin) { + boolean lunar = isLunar(); + + // Anything in your lunar package only applies on Lunar + if (mixin.contains("lunar.")) { + return lunar; + } + + // Disable fragile vanilla mixins when running on Lunar + if (mixin.contains("vanilla.")) { + return !lunar; + } + + return true; + } + + @Override + public void acceptTargets(Set set, Set set1) {} + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) {} + + @Override + public void postApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) {} + +} diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderState.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderState.java similarity index 97% rename from common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderState.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderState.java index 22f67c2c..62b075ba 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderState.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderState.java @@ -1,4 +1,4 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; import net.minecraft.client.renderer.entity.state.AvatarRenderState; import net.minecraft.resources.Identifier; diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderer.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderer.java similarity index 98% rename from common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderer.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderer.java index a4f33a3a..4d5b5743 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinAvatarRenderer.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinAvatarRenderer.java @@ -1,4 +1,4 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; import net.minecraft.client.entity.ClientAvatarEntity; import net.minecraft.client.model.player.PlayerModel; diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinCapeLayer.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java similarity index 56% rename from common/src/main/java/net/minecraftcapes/mixin/MixinCapeLayer.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java index 8b3ef106..6ebb61c4 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinCapeLayer.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java @@ -1,5 +1,7 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.model.Model; @@ -15,7 +17,6 @@ import net.minecraftcapes.player.ExtendedRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(CapeLayer.class) public abstract class MixinCapeLayer extends RenderLayer { @@ -24,25 +25,16 @@ public MixinCapeLayer(RenderLayerParent p_117346 super(p_117346_); } - @Redirect(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/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) - private void minecraftcapes$submitCape(SubmitNodeCollector instance, Model model, Object object, PoseStack poseStack, RenderType renderType, int p_432874_, int overlay, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, @Local AvatarRenderState avatarRenderState) { + @WrapOperation(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/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + private void minecraftcapes$submitCape(SubmitNodeCollector instance, Model model, Object object, PoseStack poseStack, RenderType renderType, int i, int overlay, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, Operation original, @Local AvatarRenderState avatarRenderState) { ExtendedRenderState extendedRenderState = (ExtendedRenderState) avatarRenderState; if(extendedRenderState.minecraftcapes$getCapeEnabled()) { - instance.order(0).submitModel(model, object, poseStack, RenderTypes.armorCutoutNoCull(avatarRenderState.skin.cape().texturePath()), p_432874_, overlay, -1, null, outlineColor, crumblingOverlay); + instance.order(0).submitModel(model, object, poseStack, RenderTypes.armorCutoutNoCull(avatarRenderState.skin.cape().texturePath()), i, overlay, -1, null, outlineColor, crumblingOverlay); if(extendedRenderState.minecraftcapes$hasCapeGlint()) { - instance.order(1).submitModel(model, object, poseStack, RenderTypes.armorEntityGlint(), p_432874_, overlay, -1, null, outlineColor, crumblingOverlay); + instance.order(1).submitModel(model, object, poseStack, RenderTypes.armorEntityGlint(), i, overlay, -1, null, outlineColor, crumblingOverlay); } } else { - instance.submitModel( - model, - avatarRenderState, - poseStack, - renderType, - p_432874_, - overlay, - outlineColor, - crumblingOverlay - ); + original.call(instance, model, object, poseStack, renderType, i, overlay, outlineColor, crumblingOverlay); } } } \ No newline at end of file diff --git a/common/src/main/java/net/minecraftcapes/mixin/ClientMannequinMixin.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinClientMannequin.java similarity index 90% rename from common/src/main/java/net/minecraftcapes/mixin/ClientMannequinMixin.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinClientMannequin.java index 3d336e48..20c8b618 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/ClientMannequinMixin.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinClientMannequin.java @@ -1,4 +1,4 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; import net.minecraft.client.entity.ClientAvatarEntity; import net.minecraft.client.entity.ClientMannequin; @@ -14,9 +14,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ClientMannequin.class) -public abstract class ClientMannequinMixin extends Mannequin implements ClientAvatarEntity { +public abstract class MixinClientMannequin extends Mannequin implements ClientAvatarEntity { - protected ClientMannequinMixin(Level p_445957_) { + protected MixinClientMannequin(Level p_445957_) { super(p_445957_); } diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinDeadmau5EarsLayer.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinDeadmau5EarsLayer.java similarity index 98% rename from common/src/main/java/net/minecraftcapes/mixin/MixinDeadmau5EarsLayer.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinDeadmau5EarsLayer.java index fd75e6d3..7a930995 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinDeadmau5EarsLayer.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinDeadmau5EarsLayer.java @@ -1,4 +1,4 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinPlayerInfo.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinPlayerInfo.java similarity index 71% rename from common/src/main/java/net/minecraftcapes/mixin/MixinPlayerInfo.java rename to common/src/main/java/net/minecraftcapes/mixin/common/MixinPlayerInfo.java index 7db188f3..948aa64a 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinPlayerInfo.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinPlayerInfo.java @@ -1,9 +1,8 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.common; import com.mojang.authlib.GameProfile; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.world.entity.player.PlayerSkin; -import net.minecraftcapes.player.DownloadManager; import net.minecraftcapes.player.PlayerHandler; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -12,20 +11,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.function.Supplier; - @Mixin(PlayerInfo.class) public class MixinPlayerInfo { - + @Shadow @Final private GameProfile profile; - - @Inject(method = "createSkinLookup", at = @At("HEAD")) - private static void minecraftcapes$downloadPlayerInfo(GameProfile profile, CallbackInfoReturnable> cir) { - DownloadManager.prepareDownload(profile.id(), profile.name(), false); - } - + @Inject(method = "getSkin", at = @At("RETURN"), cancellable = true) public void minecraftcapes$getSkin(CallbackInfoReturnable cir) { PlayerHandler playerHandler = PlayerHandler.get(profile.id()); @@ -34,5 +26,5 @@ public class MixinPlayerInfo { cir.setReturnValue(playerHandler.getSkin(cir.getReturnValue())); } } - + } diff --git a/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java new file mode 100644 index 00000000..552d8a2c --- /dev/null +++ b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java @@ -0,0 +1,32 @@ +package net.minecraftcapes.mixin.lunar; + +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.player.PlayerEarsModel; +import net.minecraft.client.model.player.PlayerModel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(PlayerEarsModel.class) +public class MixinPlayerEarsModel { + + /** + * I wouldn't usually recommend and overwrite but it stops Lunar complaining... + * @return + */ + @Overwrite + public static LayerDefinition createEarsLayer() { + MeshDefinition meshdefinition = PlayerModel.createMesh(CubeDeformation.NONE, false); + PartDefinition partdefinition = meshdefinition.getRoot().clearRecursively(); + PartDefinition partdefinition1 = partdefinition.getChild("head"); + CubeListBuilder cubelistbuilder = CubeListBuilder.create().texOffs(0, 0).addBox(-3.0F, -6.0F, -1.0F, 6.0F, 6.0F, 1.0F, new CubeDeformation(1.0F, 1.0F, 0.2F)); + partdefinition1.addOrReplaceChild("left_ear", cubelistbuilder, PartPose.offset(-6.0F, -6.0F, 0.0F)); + partdefinition1.addOrReplaceChild("right_ear", cubelistbuilder, PartPose.offset(6.0F, -6.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 14, 7); + } + +} diff --git a/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerInfo.java b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerInfo.java new file mode 100644 index 00000000..8433e630 --- /dev/null +++ b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerInfo.java @@ -0,0 +1,19 @@ +package net.minecraftcapes.mixin.lunar; + +import com.mojang.authlib.GameProfile; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraftcapes.player.DownloadManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerInfo.class) +public class MixinPlayerInfo { + + @Inject(method = "", at = @At("RETURN")) + private void minecraftcapes$init(GameProfile profile, boolean p_254409_, CallbackInfo ci) { + DownloadManager.prepareDownload(profile.id(), profile.name(), false); + } + +} diff --git a/common/src/main/java/net/minecraftcapes/mixin/MixinPlayerEarsModel.java b/common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerEarsModel.java similarity index 97% rename from common/src/main/java/net/minecraftcapes/mixin/MixinPlayerEarsModel.java rename to common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerEarsModel.java index 638ee23b..817033d7 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/MixinPlayerEarsModel.java +++ b/common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerEarsModel.java @@ -1,4 +1,4 @@ -package net.minecraftcapes.mixin; +package net.minecraftcapes.mixin.vanilla; import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.client.model.geom.ModelPart; diff --git a/common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerInfo.java b/common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerInfo.java new file mode 100644 index 00000000..12b60a2c --- /dev/null +++ b/common/src/main/java/net/minecraftcapes/mixin/vanilla/MixinPlayerInfo.java @@ -0,0 +1,22 @@ +package net.minecraftcapes.mixin.vanilla; + +import com.mojang.authlib.GameProfile; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.world.entity.player.PlayerSkin; +import net.minecraftcapes.player.DownloadManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.function.Supplier; + +@Mixin(PlayerInfo.class) +public class MixinPlayerInfo { + + @Inject(method = "createSkinLookup", at = @At("HEAD")) + private static void minecraftcapes$downloadPlayerInfo(GameProfile profile, CallbackInfoReturnable> cir) { + DownloadManager.prepareDownload(profile.id(), profile.name(), false); + } + +} diff --git a/common/src/main/resources/minecraftcapes.mixins.json b/common/src/main/resources/minecraftcapes.mixins.json index 7bef2216..cf51e5e5 100644 --- a/common/src/main/resources/minecraftcapes.mixins.json +++ b/common/src/main/resources/minecraftcapes.mixins.json @@ -2,16 +2,20 @@ "required" : true, "minVersion" : "0.8", "package" : "net.minecraftcapes.mixin", + "plugin" : "net.minecraftcapes.mixin.MinecraftCapesMixinPlugin", "refmap" : "minecraftcapes.refmap.json", "compatibilityLevel" : "JAVA_17", "client" : [ - "ClientMannequinMixin", - "MixinAvatarRenderer", - "MixinAvatarRenderState", - "MixinCapeLayer", - "MixinDeadmau5EarsLayer", - "MixinPlayerEarsModel", - "MixinPlayerInfo" + "common.MixinAvatarRenderer", + "common.MixinAvatarRenderState", + "common.MixinCapeLayer", + "common.MixinClientMannequin", + "common.MixinDeadmau5EarsLayer", + "common.MixinPlayerInfo", + "lunar.MixinPlayerEarsModel", + "lunar.MixinPlayerInfo", + "vanilla.MixinPlayerEarsModel", + "vanilla.MixinPlayerInfo" ], "injectors" : { "defaultRequire" : 1 From bdb64696a48b2952b61ba51a486220900133c156 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 17 Mar 2026 11:14:53 +0000 Subject: [PATCH 2/2] Fix cape glint on lunar --- .../minecraftcapes/mixin/common/MixinCapeLayer.java | 12 ++++++------ .../mixin/lunar/MixinPlayerEarsModel.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java b/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java index 6ebb61c4..a56c8a70 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java +++ b/common/src/main/java/net/minecraftcapes/mixin/common/MixinCapeLayer.java @@ -1,7 +1,6 @@ package net.minecraftcapes.mixin.common; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.model.Model; @@ -18,23 +17,24 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(CapeLayer.class) +@Mixin(value = CapeLayer.class, priority = 0) public abstract class MixinCapeLayer extends RenderLayer { public MixinCapeLayer(RenderLayerParent p_117346_) { super(p_117346_); } - @WrapOperation(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/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) - private void minecraftcapes$submitCape(SubmitNodeCollector instance, Model model, Object object, PoseStack poseStack, RenderType renderType, int i, int overlay, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, Operation original, @Local AvatarRenderState avatarRenderState) { + @WrapWithCondition(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/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + private boolean minecraftcapes$submitCape(SubmitNodeCollector instance, Model model, Object object, PoseStack poseStack, RenderType renderType, int i, int overlay, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, @Local AvatarRenderState avatarRenderState) { ExtendedRenderState extendedRenderState = (ExtendedRenderState) avatarRenderState; if(extendedRenderState.minecraftcapes$getCapeEnabled()) { instance.order(0).submitModel(model, object, poseStack, RenderTypes.armorCutoutNoCull(avatarRenderState.skin.cape().texturePath()), i, overlay, -1, null, outlineColor, crumblingOverlay); if(extendedRenderState.minecraftcapes$hasCapeGlint()) { instance.order(1).submitModel(model, object, poseStack, RenderTypes.armorEntityGlint(), i, overlay, -1, null, outlineColor, crumblingOverlay); } + return false; } else { - original.call(instance, model, object, poseStack, renderType, i, overlay, outlineColor, crumblingOverlay); + return true; } } } \ No newline at end of file diff --git a/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java index 552d8a2c..63b26ec4 100644 --- a/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java +++ b/common/src/main/java/net/minecraftcapes/mixin/lunar/MixinPlayerEarsModel.java @@ -15,7 +15,7 @@ public class MixinPlayerEarsModel { /** - * I wouldn't usually recommend and overwrite but it stops Lunar complaining... + * I wouldn't usually recommend an overwrite but it stops Lunar complaining... * @return */ @Overwrite