Skip to content

Commit caff21e

Browse files
committed
Patch 2d items for now
1 parent 348cd00 commit caff21e

File tree

3 files changed

+105
-112
lines changed

3 files changed

+105
-112
lines changed

TODO.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@
33
- Random model offset? (i alr forgor what this is)
44
- Potion model offset? // TODO: mixces what was this again rahhh
55

6-
3.0 TODO:
7-
8-
- fix 2d item drops
9-
- fix 1.8 held item arm logic thingy whatever idk
10-
- accurate sharpness particles or whatever (jt mentioned)
11-
126
3.1 TODO:
137

8+
- fix 1.8 held item arm logic thingy whatever idk
9+
- fix 2d item drops
1410
- old villager outfits
1511
- fix old fall particle physics
1612
- finish post effect shaders

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

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,12 @@
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;
3028
import com.llamalad7.mixinextras.sugar.Local;
31-
import com.mojang.blaze3d.vertex.PoseStack;
32-
import com.mojang.blaze3d.vertex.VertexConsumer;
29+
import net.minecraft.client.renderer.RenderPipelines;
3330
import net.minecraft.client.renderer.RenderType;
3431
import net.minecraft.client.renderer.block.model.BakedQuad;
3532
import net.minecraft.client.renderer.entity.ItemRenderer;
33+
import net.minecraft.core.Direction;
3634
import net.minecraft.world.item.ItemDisplayContext;
3735
import org.spongepowered.asm.mixin.Mixin;
3836
import org.spongepowered.asm.mixin.Unique;
@@ -42,38 +40,44 @@
4240
import org.visuals.legacy.animatium.config.AnimatiumConfig;
4341

4442
import java.util.List;
43+
import java.util.stream.Collectors;
4544

4645
// TODO/FIX
4746
@Mixin(ItemRenderer.class)
4847
public abstract class MixinItemRenderer {
49-
@Unique
50-
private static ItemDisplayContext animatium$displayContext = null;
48+
/*@Unique
49+
private static ItemDisplayContext animatium$displayContext = null;*/
5150

52-
@ModifyArg(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/ItemRenderer;renderQuadList(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Ljava/util/List;[III)V"), index = 2)
53-
private static List<BakedQuad> animatium$itemDrops2D(List<BakedQuad> quads, @Local(argsOnly = true) ItemDisplayContext displayContext, @Local(argsOnly = true) RenderType renderType) {
54-
animatium$displayContext = displayContext;
55-
// if (AnimatiumClient.ENABLED && animatium$isTransformationModeValid(displayContext) /* && !blocksLight */) {
56-
// return quads.stream().filter(baked -> baked.direction() == Direction.SOUTH).collect(Collectors.toList());
57-
// } else {
58-
return quads;
59-
// }
60-
}
51+
@Unique
52+
private static boolean animatium$blocksLight = false;
6153

62-
// TODO: this is only half of the battle + framed item 2d colors are disabled
63-
@WrapOperation(method = "renderQuadList", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/VertexConsumer;putBulkData(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lnet/minecraft/client/renderer/block/model/BakedQuad;FFFFII)V"))
64-
private static void animatium$itemColors2D(VertexConsumer instance, PoseStack.Pose pose, BakedQuad bakedQuad, float f, float g, float h, float i, int j, int k, Operation<Void> original) {
65-
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.itemColors2D && animatium$displayContext == ItemDisplayContext.GROUND /* && !blocksLight */) {
66-
// TODO/Modify: bakedQuad.direction().getUnitVec3f();
67-
// return new Vector3f(vector3fc.x(), vector3fc.z(), vector3fc.y());
68-
}
54+
@ModifyArg(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/ItemRenderer;renderQuadList(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Ljava/util/List;[III)V"), index = 2)
55+
private static List<BakedQuad> animatium$itemDrops2D(List<BakedQuad> quads, @Local(argsOnly = true) ItemDisplayContext displayContext, @Local(argsOnly = true) RenderType renderType) {
56+
// animatium$displayContext = displayContext;
57+
animatium$blocksLight = renderType.pipeline() == RenderPipelines.ENTITY_CUTOUT; // TODO: not entirely accurate
58+
if (Animatium.isEnabled() && animatium$isTransformationModeValid(displayContext) && !animatium$blocksLight) {
59+
return quads.stream().filter(baked -> baked.direction() == Direction.SOUTH).collect(Collectors.toList());
60+
} else {
61+
return quads;
62+
}
63+
}
6964

70-
original.call(instance, pose, bakedQuad, f, g, h, i, j, k);
71-
}
65+
// TODO/FIX
66+
// TODO: this is only half of the battle + framed item 2d colors are disabled
67+
/*@WrapOperation(method = "renderQuadList", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/VertexConsumer;putBulkData(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lnet/minecraft/client/renderer/block/model/BakedQuad;FFFFII)V"))
68+
private static void animatium$itemColors2D(VertexConsumer instance, PoseStack.Pose pose, BakedQuad bakedQuad, float f, float g, float h, float i, int j, int k, Operation<Void> original) {
69+
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.itemColors2D && animatium$displayContext == ItemDisplayContext.GROUND && !animatium$blocksLight) {
70+
// TODO/Modify: bakedQuad.direction().getUnitVec3f();
71+
// return new Vector3f(vector3fc.x(), vector3fc.z(), vector3fc.y());
72+
}
7273
73-
@Unique
74-
private static boolean animatium$isTransformationModeValid(ItemDisplayContext displayContext) {
75-
final boolean itemDrops2D = AnimatiumConfig.instance().items.itemDrops2D;
76-
final boolean itemFramed2D = AnimatiumConfig.instance().items.itemFramed2D;
77-
return (itemDrops2D && displayContext == ItemDisplayContext.GROUND) || (itemFramed2D && displayContext == ItemDisplayContext.FIXED);
78-
}
74+
original.call(instance, pose, bakedQuad, f, g, h, i, j, k);
75+
}*/
76+
77+
@Unique
78+
private static boolean animatium$isTransformationModeValid(ItemDisplayContext displayContext) {
79+
final boolean itemDrops2D = AnimatiumConfig.instance().items.itemDrops2D;
80+
final boolean itemFramed2D = AnimatiumConfig.instance().items.itemFramed2D;
81+
return (itemDrops2D && displayContext == ItemDisplayContext.GROUND) || (itemFramed2D && displayContext == ItemDisplayContext.FIXED);
82+
}
7983
}

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

Lines changed: 69 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -49,88 +49,81 @@
4949

5050
@Mixin(ItemStackRenderState.LayerRenderState.class)
5151
public abstract class MixinItemStackRenderLayerState {
52-
@Shadow
53-
ItemTransform transform;
52+
@Shadow
53+
ItemTransform transform;
5454

55-
@Shadow
56-
@Final
57-
ItemStackRenderState field_55345; // ItemStackRenderState.this
55+
@Shadow(aliases = "field_55345") // ItemStackRenderState.this
56+
@Final
57+
ItemStackRenderState itemStackRenderState;
5858

59-
@ModifyArg(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitItem(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/world/item/ItemDisplayContext;III[ILjava/util/List;Lnet/minecraft/client/renderer/RenderType;Lnet/minecraft/client/renderer/item/ItemStackRenderState$FoilType;)V"), index = 8)
60-
private ItemStackRenderState.FoilType animatium$disableGlintOn2DItems(ItemStackRenderState.FoilType glint) {
61-
final boolean glintDropped = !AnimatiumConfig.instance().items.glintOnItemDrops2D;
62-
final boolean glintFramed = !AnimatiumConfig.instance().items.glintOnItemFramed2D;
63-
if (Animatium.isEnabled() &&
64-
(glintDropped && field_55345.displayContext == ItemDisplayContext.GROUND) ||
65-
(glintFramed && field_55345.displayContext == ItemDisplayContext.FIXED)) {
66-
return ItemStackRenderState.FoilType.NONE;
67-
} else {
68-
return glint;
69-
}
70-
}
59+
@ModifyArg(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitItem(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/world/item/ItemDisplayContext;III[ILjava/util/List;Lnet/minecraft/client/renderer/RenderType;Lnet/minecraft/client/renderer/item/ItemStackRenderState$FoilType;)V"), index = 8)
60+
private ItemStackRenderState.FoilType animatium$disableGlintOn2DItems(ItemStackRenderState.FoilType glint) {
61+
final boolean glintDropped = !AnimatiumConfig.instance().items.glintOnItemDrops2D;
62+
final boolean glintFramed = !AnimatiumConfig.instance().items.glintOnItemFramed2D;
63+
if (Animatium.isEnabled() &&
64+
(glintDropped && itemStackRenderState.displayContext == ItemDisplayContext.GROUND) ||
65+
(glintFramed && itemStackRenderState.displayContext == ItemDisplayContext.FIXED)) {
66+
return ItemStackRenderState.FoilType.NONE;
67+
} else {
68+
return glint;
69+
}
70+
}
7171

72-
// TODO/MOVE
73-
@Inject(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/model/ItemTransform;apply(ZLcom/mojang/blaze3d/vertex/PoseStack$Pose;)V"))
74-
private void animatium$itemPositions(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int light, int overlay, int k, CallbackInfo ci) {
75-
if (Animatium.isEnabled()) {
76-
final ItemStack stack = ((ItemUtilityRenderState) field_55345).animatium$getItemStack();
77-
if (!stack.isEmpty()) {
78-
final ItemDisplayContext itemDisplayContext = this.field_55345.displayContext;
79-
boolean isGui = itemDisplayContext == ItemDisplayContext.GUI;
80-
boolean isFirstPerson = itemDisplayContext == ItemDisplayContext.FIRST_PERSON_LEFT_HAND || itemDisplayContext == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND;
81-
boolean isThirdPerson = itemDisplayContext == ItemDisplayContext.THIRD_PERSON_LEFT_HAND || itemDisplayContext == ItemDisplayContext.THIRD_PERSON_RIGHT_HAND;
72+
// TODO/MOVE
73+
@Inject(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/model/ItemTransform;apply(ZLcom/mojang/blaze3d/vertex/PoseStack$Pose;)V"))
74+
private void animatium$itemPositions(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int light, int overlay, int k, CallbackInfo ci) {
75+
if (Animatium.isEnabled()) {
76+
final ItemStack stack = ((ItemUtilityRenderState) itemStackRenderState).animatium$getItemStack();
77+
if (!stack.isEmpty()) {
78+
final ItemDisplayContext itemDisplayContext = this.itemStackRenderState.displayContext;
79+
final boolean isGui = itemDisplayContext == ItemDisplayContext.GUI;
80+
final boolean isFirstPerson = itemDisplayContext == ItemDisplayContext.FIRST_PERSON_LEFT_HAND || itemDisplayContext == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND;
81+
final boolean isThirdPerson = itemDisplayContext == ItemDisplayContext.THIRD_PERSON_LEFT_HAND || itemDisplayContext == ItemDisplayContext.THIRD_PERSON_RIGHT_HAND;
82+
float x = this.transform.translation().x();
83+
float y = this.transform.translation().y();
84+
float z = this.transform.translation().z();
85+
if (AnimatiumConfig.instance().items.fishingRodVersion != FishingRodVersion.VANILLA && ItemUtils.isFishingRodItem(stack) && isFirstPerson) {
86+
final int ordinal = AnimatiumConfig.instance().items.fishingRodVersion.ordinal();
87+
if (ordinal <= FishingRodVersion.V1_8.ordinal()) {
88+
poseStack.translate(0.070625, 0.1, 0.020625);
89+
}
8290

83-
float x = this.transform.translation().x();
84-
float y = this.transform.translation().y();
85-
float z = this.transform.translation().z();
86-
float rotX = this.transform.rotation().x();
87-
float rotY = this.transform.rotation().y();
88-
float rotZ = this.transform.rotation().z();
89-
float scaleX = this.transform.scale().x();
90-
float scaleY = this.transform.scale().y();
91-
float scaleZ = this.transform.scale().z();
92-
if (AnimatiumConfig.instance().items.fishingRodVersion != FishingRodVersion.VANILLA && ItemUtils.isFishingRodItem(stack) && isFirstPerson) {
93-
final int ordinal = AnimatiumConfig.instance().items.fishingRodVersion.ordinal();
94-
if (ordinal <= FishingRodVersion.V1_8.ordinal()) {
95-
poseStack.translate(0.070625, 0.1, 0.020625);
96-
}
91+
poseStack.translate(x, y, z);
92+
if (ordinal == FishingRodVersion.V1_7.ordinal()) {
93+
poseStack.mulPose(Axis.YP.rotationDegrees(180));
94+
}
9795

98-
poseStack.translate(x, y, z);
99-
if (ordinal == FishingRodVersion.V1_7.ordinal()) {
100-
poseStack.mulPose(Axis.YP.rotationDegrees(180));
101-
}
96+
poseStack.translate(-x, -y, -z);
97+
}
10298

103-
poseStack.translate(-x, -y, -z);
104-
}
99+
if (AnimatiumConfig.instance().items.thinBlockPositions && ItemUtils.isThinBlockItem(stack)) {
100+
if (isFirstPerson) {
101+
poseStack.translate(0, -4.2 * 0.0625, 0);
102+
} else if (isThirdPerson) {
103+
poseStack.translate(0, 0, -2 * 0.0625);
104+
}
105+
}
105106

106-
if (AnimatiumConfig.instance().items.thinBlockPositions && ItemUtils.isThinBlockItem(stack)) {
107-
if (isFirstPerson) {
108-
poseStack.translate(0, -4.2 * 0.0625, 0);
109-
} else if (isThirdPerson) {
110-
poseStack.translate(0, 0, -2 * 0.0625);
111-
}
112-
}
107+
// TODO/NEED TO FIX
108+
if (AnimatiumConfig.instance().items.skullPosition && ItemUtils.isSkullBlock(stack) && isGui && !AnimatiumConfig.instance().items.mobHeadIcons) {
109+
poseStack.translate(x, y, z);
110+
poseStack.mulPose(Axis.XP.rotationDegrees(Utils.toRadians(this.transform.rotation().x())));
111+
poseStack.mulPose(Axis.YP.rotationDegrees(Utils.toRadians(this.transform.rotation().y())));
112+
poseStack.mulPose(Axis.ZP.rotationDegrees(Utils.toRadians(this.transform.rotation().x())));
113+
poseStack.scale(0.9F, 0.9F, 0.9F);
114+
poseStack.scale(this.transform.scale().x(), this.transform.scale().y(), this.transform.scale().z());
115+
animatium$doInverseTransformations(poseStack);
116+
}
117+
}
118+
}
119+
}
113120

114-
// TODO/NEED TO FIX
115-
if (AnimatiumConfig.instance().items.skullPosition && ItemUtils.isSkullBlock(stack) && isGui && !AnimatiumConfig.instance().items.mobHeadIcons) {
116-
poseStack.translate(x, y, z);
117-
poseStack.mulPose(Axis.XP.rotationDegrees(Utils.toRadians(rotZ)));
118-
poseStack.mulPose(Axis.YP.rotationDegrees(Utils.toRadians(rotY)));
119-
poseStack.mulPose(Axis.ZP.rotationDegrees(Utils.toRadians(rotX)));
120-
poseStack.scale(0.9F, 0.9F, 0.9F);
121-
poseStack.scale(scaleX, scaleY, scaleZ);
122-
animatium$doInverseTransformations(poseStack);
123-
}
124-
}
125-
}
126-
}
127-
128-
@Unique
129-
private void animatium$doInverseTransformations(PoseStack poseStack) {
130-
poseStack.scale(1 / this.transform.scale().x(), 1 / this.transform.scale().y(), 1 / this.transform.scale().z());
131-
poseStack.mulPose(Axis.ZP.rotationDegrees(-Utils.toRadians(this.transform.rotation().x())));
132-
poseStack.mulPose(Axis.YP.rotationDegrees(-Utils.toRadians(this.transform.rotation().y())));
133-
poseStack.mulPose(Axis.XP.rotationDegrees(-Utils.toRadians(this.transform.rotation().z())));
134-
poseStack.translate(-this.transform.translation().x(), -this.transform.translation().y(), -this.transform.translation().z());
135-
}
121+
@Unique
122+
private void animatium$doInverseTransformations(final PoseStack poseStack) {
123+
poseStack.scale(1 / this.transform.scale().x(), 1 / this.transform.scale().y(), 1 / this.transform.scale().z());
124+
poseStack.mulPose(Axis.ZP.rotationDegrees(-Utils.toRadians(this.transform.rotation().x())));
125+
poseStack.mulPose(Axis.YP.rotationDegrees(-Utils.toRadians(this.transform.rotation().y())));
126+
poseStack.mulPose(Axis.XP.rotationDegrees(-Utils.toRadians(this.transform.rotation().z())));
127+
poseStack.translate(-this.transform.translation().x(), -this.transform.translation().y(), -this.transform.translation().z());
128+
}
136129
}

0 commit comments

Comments
 (0)