diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/GameRendererMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/GameRendererMixin.java new file mode 100644 index 00000000..ee3a0f9d --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/GameRendererMixin.java @@ -0,0 +1,21 @@ +package org.embeddedt.modernfix.common.mixin.perf.faster_item_rendering; + +import net.minecraft.client.renderer.GameRenderer; +import org.embeddedt.modernfix.render.RenderState; +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(GameRenderer.class) +public class GameRendererMixin { + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GameRenderer;renderLevel(FJLcom/mojang/blaze3d/vertex/PoseStack;)V", shift = At.Shift.BEFORE)) + private void markRenderingLevel(CallbackInfo ci) { + RenderState.IS_RENDERING_LEVEL = true; + } + + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GameRenderer;renderLevel(FJLcom/mojang/blaze3d/vertex/PoseStack;)V", shift = At.Shift.AFTER)) + private void markNotRenderingLevel(CallbackInfo ci) { + RenderState.IS_RENDERING_LEVEL = false; + } +} diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/ItemRendererMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/ItemRendererMixin.java index 630cef82..987f0235 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/ItemRendererMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_item_rendering/ItemRendererMixin.java @@ -12,6 +12,7 @@ import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.SimpleBakedModel; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; +import org.embeddedt.modernfix.render.RenderState; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -47,7 +48,7 @@ public abstract class ItemRendererMixin { */ @Inject(method = "renderModelLists", at = @At("HEAD"), cancellable = true) private void fasterItemRender(BakedModel model, ItemStack stack, int combinedLight, int combinedOverlay, PoseStack matrixStack, VertexConsumer buffer, CallbackInfo ci) { - if(!stack.isEmpty() && model.getClass() == SimpleBakedModel.class && transformType == ItemTransforms.TransformType.GUI && model.getTransforms().gui == ItemTransform.NO_TRANSFORM) { + if(!RenderState.IS_RENDERING_LEVEL && !stack.isEmpty() && model.getClass() == SimpleBakedModel.class && transformType == ItemTransforms.TransformType.GUI && model.getTransforms().gui == ItemTransform.NO_TRANSFORM) { ci.cancel(); PoseStack.Pose pose = matrixStack.last(); int[] combinedLights = new int[] {combinedLight, combinedLight, combinedLight, combinedLight}; diff --git a/common/src/main/java/org/embeddedt/modernfix/render/RenderState.java b/common/src/main/java/org/embeddedt/modernfix/render/RenderState.java new file mode 100644 index 00000000..e869e383 --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/render/RenderState.java @@ -0,0 +1,5 @@ +package org.embeddedt.modernfix.render; + +public class RenderState { + public static boolean IS_RENDERING_LEVEL = false; +}