Skip to content

Commit 2d3e452

Browse files
committed
Rework 2 things for 26.1
1 parent e221d31 commit 2d3e452

2 files changed

Lines changed: 43 additions & 33 deletions

File tree

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/items/flat/MixinItemFeatureRenderer.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,22 @@
2525

2626
package org.visuals.legacy.animatium.mixins.v1.rendering.items.flat;
2727

28+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
29+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
30+
import net.minecraft.client.renderer.SubmitNodeStorage;
2831
import net.minecraft.client.renderer.feature.ItemFeatureRenderer;
32+
import net.minecraft.client.resources.model.geometry.BakedQuad;
33+
import net.minecraft.core.Direction;
2934
import net.minecraft.world.item.ItemDisplayContext;
3035
import org.spongepowered.asm.mixin.Mixin;
3136
import org.spongepowered.asm.mixin.Unique;
37+
import org.spongepowered.asm.mixin.injection.At;
38+
import org.visuals.legacy.animatium.Animatium;
3239
import org.visuals.legacy.animatium.config.AnimatiumConfig;
3340

41+
import java.util.List;
42+
import java.util.stream.Collectors;
43+
3444
// TODO/FIX
3545
@Mixin(ItemFeatureRenderer.class)
3646
public abstract class MixinItemFeatureRenderer {
@@ -40,17 +50,17 @@ public abstract class MixinItemFeatureRenderer {
4050
@Unique
4151
private static boolean animatium$blocksLight = false;
4252

43-
// TODO 26.1
44-
/*@ModifyArg(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeStorage$ItemSubmit;quads()Ljava/util/List;"), index = 2)
45-
private static List<BakedQuad> animatium$itemDrops2D(List<BakedQuad> quads) {
46-
// animatium$displayContext = displayContext;
47-
animatium$blocksLight = renderType.pipeline() == RenderPipelines.ENTITY_CUTOUT; // TODO: not entirely accurate
48-
if (Animatium.isEnabled() && animatium$isTransformationModeValid(displayContext) && !animatium$blocksLight) {
49-
return quads.stream().filter(baked -> baked.direction() == Direction.SOUTH).collect(Collectors.toList());
50-
} else {
51-
return quads;
52-
}
53-
}*/
53+
@WrapOperation(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeStorage$ItemSubmit;quads()Ljava/util/List;"))
54+
private static List<BakedQuad> animatium$itemDrops2D(final SubmitNodeStorage.ItemSubmit instance, final Operation<List<BakedQuad>> original) {
55+
// animatium$displayContext = displayContext;
56+
// TODO 26.1: animatium$blocksLight = renderType.pipeline() == RenderPipelines.ENTITY_CUTOUT; // TODO: not entirely accurate
57+
final List<BakedQuad> quads = original.call(instance);
58+
if (Animatium.isEnabled() && animatium$isTransformationModeValid(instance.displayContext()) && !animatium$blocksLight) {
59+
return quads.stream().filter(baked -> baked.direction() == Direction.SOUTH).collect(Collectors.toList());
60+
} else {
61+
return quads;
62+
}
63+
}
5464

5565
// TODO/FIX
5666
// TODO: this is only half of the battle + framed item 2d colors are disabled

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/items/flat/MixinItemStackRenderLayerState.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727

2828
import com.mojang.blaze3d.vertex.PoseStack;
2929
import com.mojang.math.Axis;
30-
import net.minecraft.client.renderer.SubmitNodeCollector;
3130
import net.minecraft.client.renderer.item.ItemStackRenderState;
3231
import net.minecraft.client.resources.model.cuboid.ItemTransform;
3332
import net.minecraft.world.item.ItemDisplayContext;
3433
import net.minecraft.world.item.ItemStack;
34+
import org.joml.Matrix4f;
3535
import org.spongepowered.asm.mixin.Final;
3636
import org.spongepowered.asm.mixin.Mixin;
3737
import org.spongepowered.asm.mixin.Shadow;
@@ -69,8 +69,8 @@ public abstract class MixinItemStackRenderLayerState {
6969
}
7070

7171
// TODO/MOVE
72-
@Inject(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/item/ItemStackRenderState$LayerRenderState;applyTransform(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;)V"))
73-
private void animatium$itemPositions(final PoseStack poseStack, final SubmitNodeCollector nodeCollector, final int packedLight, final int packedOverlay, final int outlineColor, final CallbackInfo ci) {
72+
@Inject(method = "applyTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/cuboid/ItemTransform;apply(ZLcom/mojang/blaze3d/vertex/PoseStack$Pose;)V"))
73+
private void animatium$itemPositions(final PoseStack.Pose localPose, final CallbackInfo ci) {
7474
if (Animatium.isEnabled()) {
7575
final ItemStack stack = itemStackRenderState.animatium$getItemStack();
7676
if (!stack.isEmpty()) {
@@ -84,45 +84,45 @@ public abstract class MixinItemStackRenderLayerState {
8484
if (AnimatiumConfig.instance().items.fishingRodVersion != FishingRodVersion.VANILLA && ItemUtils.isFishingRodItem(stack) && isFirstPerson) {
8585
final int ordinal = AnimatiumConfig.instance().items.fishingRodVersion.ordinal();
8686
if (ordinal <= FishingRodVersion.V1_8.ordinal()) {
87-
poseStack.translate(0.070625, 0.1, 0.020625);
87+
localPose.translate(0.070625F, 0.1F, 0.020625F);
8888
}
8989

90-
poseStack.translate(x, y, z);
90+
localPose.translate(x, y, z);
9191
if (ordinal == FishingRodVersion.V1_7.ordinal()) {
92-
poseStack.mulPose(Axis.YP.rotationDegrees(180));
92+
localPose.mulPose(Axis.YP.rotationDegrees(180).get(new Matrix4f()));
9393
}
9494

95-
poseStack.translate(-x, -y, -z);
95+
localPose.translate(-x, -y, -z);
9696
}
9797

9898
if (AnimatiumConfig.instance().items.thinBlockPositions && ItemUtils.isThinBlockItem(stack)) {
9999
if (isFirstPerson) {
100-
poseStack.translate(0, -4.2 * 0.0625, 0);
100+
localPose.translate(0.0F, -4.2F * 0.0625F, 0.0F);
101101
} else if (isThirdPerson) {
102-
poseStack.translate(0, 0, -2 * 0.0625);
102+
localPose.translate(0.0F, 0.0F, -2.0F * 0.0625F);
103103
}
104104
}
105105

106106
// TODO/NEED TO FIX
107107
if (AnimatiumConfig.instance().items.skullPosition && ItemUtils.isSkullBlock(stack) && isGui && !AnimatiumConfig.instance().items.mobHeadIcons) {
108-
poseStack.translate(x, y, z);
109-
poseStack.mulPose(Axis.XP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().x())));
110-
poseStack.mulPose(Axis.YP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().y())));
111-
poseStack.mulPose(Axis.ZP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().x())));
112-
poseStack.scale(0.9F, 0.9F, 0.9F);
113-
poseStack.scale(this.itemTransform.scale().x(), this.itemTransform.scale().y(), this.itemTransform.scale().z());
114-
animatium$doInverseTransformations(poseStack);
108+
localPose.translate(x, y, z);
109+
localPose.mulPose(Axis.XP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().x())).get(new Matrix4f()));
110+
localPose.mulPose(Axis.YP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().y())).get(new Matrix4f()));
111+
localPose.mulPose(Axis.ZP.rotationDegrees(Utils.toRadians(this.itemTransform.rotation().x())).get(new Matrix4f()));
112+
localPose.scale(0.9F, 0.9F, 0.9F);
113+
localPose.scale(this.itemTransform.scale().x(), this.itemTransform.scale().y(), this.itemTransform.scale().z());
114+
animatium$doInverseTransformations(localPose);
115115
}
116116
}
117117
}
118118
}
119119

120120
@Unique
121-
private void animatium$doInverseTransformations(final PoseStack poseStack) {
122-
poseStack.scale(1 / this.itemTransform.scale().x(), 1 / this.itemTransform.scale().y(), 1 / this.itemTransform.scale().z());
123-
poseStack.mulPose(Axis.ZP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().x())));
124-
poseStack.mulPose(Axis.YP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().y())));
125-
poseStack.mulPose(Axis.XP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().z())));
126-
poseStack.translate(-this.itemTransform.translation().x(), -this.itemTransform.translation().y(), -this.itemTransform.translation().z());
121+
private void animatium$doInverseTransformations(final PoseStack.Pose localPose) {
122+
localPose.scale(1 / this.itemTransform.scale().x(), 1 / this.itemTransform.scale().y(), 1 / this.itemTransform.scale().z());
123+
localPose.mulPose(Axis.ZP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().x())).get(new Matrix4f()));
124+
localPose.mulPose(Axis.YP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().y())).get(new Matrix4f()));
125+
localPose.mulPose(Axis.XP.rotationDegrees(-Utils.toRadians(this.itemTransform.rotation().z())).get(new Matrix4f()));
126+
localPose.translate(-this.itemTransform.translation().x(), -this.itemTransform.translation().y(), -this.itemTransform.translation().z());
127127
}
128128
}

0 commit comments

Comments
 (0)