Skip to content

Commit 020b1cf

Browse files
committed
Fix Mixin crash on older versions, add tests. Fix #282
1 parent be40de7 commit 020b1cf

File tree

3 files changed

+84
-17
lines changed

3 files changed

+84
-17
lines changed

src/main/java/dev/tr7zw/skinlayers/mixin/EMFModelPartMixin.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ public void render(PoseStack poseStack, VertexConsumer vertexConsumer, int light
3434
}
3535
}
3636
//? } else {
37-
38-
// @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;IIFFFF)V", at = @At(value = "HEAD"), cancellable = true)
39-
// public void render(PoseStack poseStack, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha,
40-
// CallbackInfo ci) {
41-
// if (isVisible() && getInjectedMesh() != null) {
42-
// poseStack.pushPose();
43-
// prepareTranslateAndRotate(poseStack);
44-
// getOffsetProvider().applyOffset(poseStack, getInjectedMesh());
45-
// getInjectedMesh().render((ModelPart)(Object)this, poseStack, vertexConsumer, light, overlay, red, green, blue, alpha);
46-
// poseStack.popPose();
47-
// ci.cancel();
48-
// }
49-
// }
50-
//
51-
//? }
37+
/*
38+
@Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;IIFFFF)V", at = @At(value = "HEAD"), cancellable = true)
39+
public void render(PoseStack poseStack, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha,
40+
CallbackInfo ci) {
41+
if (isVisible() && getInjectedMesh() != null) {
42+
poseStack.pushPose();
43+
prepareTranslateAndRotate(poseStack);
44+
getOffsetProvider().applyOffset(poseStack, getInjectedMesh());
45+
getInjectedMesh().render((ModelPart)(Object)this, poseStack, vertexConsumer, light, overlay, red, green, blue, alpha);
46+
poseStack.popPose();
47+
ci.cancel();
48+
}
49+
}
50+
51+
*///? }
5252

5353
}
5454
//? } else {

src/main/java/dev/tr7zw/skinlayers/mixin/SkullBlockEntityRendererMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,9 @@ private static SkullModelBase.State submitSkull(SkullModelBase.State state) {
134134
@Inject(method = "render", at = @At("HEAD"))
135135
public void render(SkullBlockEntity skullBlockEntity, float f, PoseStack poseStack,
136136
MultiBufferSource multiBufferSource, int i, int j,
137-
//#if MC >= 12105
137+
//?if >= 1.21.5 {
138138
Vec3 vec3,
139-
//#endif
139+
//? }
140140
CallbackInfo info) {
141141
Vec3 camera = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition();
142142
if (!SkinLayersModBase.config.enableSkulls)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
//? if >= 1.18.0 {
2+
3+
package dev.tr7zw.tests;
4+
5+
import com.mojang.blaze3d.platform.*;
6+
import net.minecraft.*;
7+
import net.minecraft.client.model.*;
8+
import net.minecraft.client.model.geom.*;
9+
//? if >= 1.21.11 {
10+
11+
import net.minecraft.client.model.object.skull.*;
12+
import net.minecraft.client.model.player.*;
13+
//? } else {
14+
/*
15+
import net.minecraft.client.model.*;
16+
*///? }
17+
import net.minecraft.client.renderer.*;
18+
import net.minecraft.client.renderer.blockentity.*;
19+
import net.minecraft.client.renderer.entity.*;
20+
import net.minecraft.client.renderer.entity.layers.*;
21+
import net.minecraft.server.*;
22+
import net.minecraft.world.level.block.entity.*;
23+
import org.junit.jupiter.api.*;
24+
import org.objenesis.*;
25+
26+
import static org.junit.jupiter.api.Assertions.*;
27+
28+
public class MixinTests {
29+
30+
@BeforeAll
31+
public static void setup() {
32+
SharedConstants.tryDetectVersion();
33+
Bootstrap.bootStrap();
34+
}
35+
36+
@Test
37+
void testMixins() {
38+
Objenesis objenesis = new ObjenesisStd();
39+
//? if >= 1.21.6 {
40+
41+
objenesis.newInstance(net.minecraft.client.renderer.special.PlayerHeadSpecialRenderer.class);
42+
//? } else if >= 1.21.4 {
43+
/*
44+
objenesis.newInstance(net.minecraft.client.renderer.special.SkullSpecialRenderer.class);
45+
*///? } else {
46+
/*
47+
objenesis.newInstance(net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer.class);
48+
*///? }
49+
objenesis.newInstance(CustomHeadLayer.class);
50+
objenesis.newInstance(Deadmau5EarsLayer.class);
51+
objenesis.newInstance(ModelPart.class);
52+
objenesis.newInstance(NativeImage.class);
53+
objenesis.newInstance(PlayerModel.class);
54+
objenesis.newInstance(SkullBlockEntity.class);
55+
objenesis.newInstance(SkullBlockRenderer.class);
56+
objenesis.newInstance(SkullModel.class);
57+
//? if >= 1.21.9 {
58+
59+
objenesis.newInstance(net.minecraft.client.renderer.entity.player.AvatarRenderer.class);
60+
//? } else {
61+
/*
62+
objenesis.newInstance(net.minecraft.client.renderer.entity.player.PlayerRenderer.class);
63+
*///? }
64+
}
65+
66+
}
67+
//? }

0 commit comments

Comments
 (0)