Skip to content

Commit 4f81ea0

Browse files
committed
Fixed item durability bar render order
Fixes #316
1 parent 64a8665 commit 4f81ea0

File tree

1 file changed

+30
-0
lines changed
  • common/src/main/java/net/raphimc/immediatelyfast/injection/mixins/hud_batching/compat

1 file changed

+30
-0
lines changed

common/src/main/java/net/raphimc/immediatelyfast/injection/mixins/hud_batching/compat/MixinDrawContext.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,18 @@
1717
*/
1818
package net.raphimc.immediatelyfast.injection.mixins.hud_batching.compat;
1919

20+
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
2021
import net.minecraft.client.gui.DrawContext;
22+
import net.minecraft.client.render.RenderLayer;
2123
import net.minecraft.client.render.VertexConsumerProvider;
24+
import net.minecraft.client.util.math.MatrixStack;
2225
import net.raphimc.immediatelyfast.feature.core.BatchableBufferSource;
26+
import org.spongepowered.asm.mixin.Final;
2327
import org.spongepowered.asm.mixin.Mixin;
2428
import org.spongepowered.asm.mixin.Shadow;
2529
import org.spongepowered.asm.mixin.injection.At;
2630
import org.spongepowered.asm.mixin.injection.Inject;
31+
import org.spongepowered.asm.mixin.injection.Redirect;
2732
import org.spongepowered.asm.mixin.injection.Slice;
2833
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2934

@@ -36,11 +41,36 @@ public abstract class MixinDrawContext {
3641
@Shadow
3742
public VertexConsumerProvider.Immediate vertexConsumers;
3843

44+
@Shadow
45+
@Final
46+
private MatrixStack matrices;
47+
3948
@Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/ItemCooldownManager;getCooldownProgress(Lnet/minecraft/item/Item;F)F")), at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;fill(Lnet/minecraft/client/render/RenderLayer;IIIII)V"))
4049
private void forceDraw(CallbackInfo ci) {
4150
if (this.vertexConsumers instanceof BatchableBufferSource) {
4251
this.draw();
4352
}
4453
}
4554

55+
@Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;push()V", shift = At.Shift.AFTER))
56+
private void translateZForAllItemOverlays(CallbackInfo ci) {
57+
if (this.vertexConsumers instanceof BatchableBufferSource) {
58+
this.matrices.translate(0F, 0F, 200F);
59+
}
60+
}
61+
62+
@WrapWithCondition(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;translate(FFF)V"))
63+
private boolean translateZEarlier(MatrixStack instance, float x, float y, float z) {
64+
return !(this.vertexConsumers instanceof BatchableBufferSource);
65+
}
66+
67+
@Redirect(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/RenderLayer;getGuiOverlay()Lnet/minecraft/client/render/RenderLayer;"))
68+
private RenderLayer useGuiRenderLayer() {
69+
if (this.vertexConsumers instanceof BatchableBufferSource) {
70+
return RenderLayer.getGui();
71+
} else {
72+
return RenderLayer.getGuiOverlay();
73+
}
74+
}
75+
4676
}

0 commit comments

Comments
 (0)