From 23e4733a220ff80ede725d40036aa6cb4b986c1b Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 20 Aug 2021 19:56:06 +0700 Subject: [PATCH] Move itemstack rendering to submethod --- .../mc/otm/screen/panels/SlotPanel.java | 69 ++++++++++--------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/screen/panels/SlotPanel.java b/src/main/java/ru/dbotthepony/mc/otm/screen/panels/SlotPanel.java index 41e2923a9..ed0beaae1 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/screen/panels/SlotPanel.java +++ b/src/main/java/ru/dbotthepony/mc/otm/screen/panels/SlotPanel.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.item.ItemStack; import ru.dbotthepony.mc.otm.OverdriveThatMatters; import ru.dbotthepony.mc.otm.menu.slot.MatterySlot; import ru.dbotthepony.mc.otm.screen.MatteryScreen; @@ -55,6 +56,41 @@ public class SlotPanel extends EditablePanel { RenderHelper.drawRegularSlot(stack, 0, 0); } + protected void renderRegular(PoseStack stack, ItemStack itemstack, String count_override) { + if (!itemstack.isEmpty()) { + RenderSystem.enableDepthTest(); + + var system_stack = RenderSystem.getModelViewStack(); + + system_stack.pushPose(); + system_stack.translate(parent_x + 1, parent_y + 1, 0); + RenderSystem.applyModelViewMatrix(); + + // Thanks Mojang + // Very cool + // (for int x, int y, which are then cast into doubles anyway) + screen.getItemRenderer().blitOffset = accumulated_depth - 100; // force item to draw only 50 units "above" background + screen.getItemRenderer().renderAndDecorateItem(Minecraft.getInstance().player, itemstack, 0, 0, (int) (parent_x + parent_y * 1000) /* some kind of indexing ? */); + screen.getItemRenderer().renderGuiItemDecorations(screen.getFont(), itemstack, 0, 0, count_override); + + // too big accumulations can lead to Z near clipping issues + accumulate3DHeight(100); + + system_stack.popPose(); + RenderSystem.applyModelViewMatrix(); + } + + if (is_hovered) { + screen.hoveredSlot = slot; + + stack.pushPose(); + stack.translate(0, 0, 101); + RenderHelper.setDrawColor(SLOT_HIGHLIGHT); + RenderHelper.drawRect(stack, 1, 1, getWidth() - 1, getHeight() - 1); + stack.popPose(); + } + } + @Override protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) { renderSlotBackground(stack, mouse_x, mouse_y, flag); @@ -93,37 +129,6 @@ public class SlotPanel extends EditablePanel { RenderHelper.drawRect(stack, 1, 1, getWidth() - 1, getHeight() - 1); } - if (!itemstack.isEmpty()) { - RenderSystem.enableDepthTest(); - - var system_stack = RenderSystem.getModelViewStack(); - - system_stack.pushPose(); - system_stack.translate(parent_x + 1, parent_y + 1, 0); - RenderSystem.applyModelViewMatrix(); - - // Thanks Mojang - // Very cool - // (for int x, int y, which are then cast into doubles anyway) - screen.getItemRenderer().blitOffset = accumulated_depth - 100; // force item to draw only 50 units "above" background - screen.getItemRenderer().renderAndDecorateItem(Minecraft.getInstance().player, itemstack, 0, 0, (int) (parent_x + parent_y * 1000) /* some kind of indexing ? */); - screen.getItemRenderer().renderGuiItemDecorations(screen.getFont(), itemstack, 0, 0, count_override); - - // too big accumulations can lead to Z near clipping issues - accumulate3DHeight(100); - - system_stack.popPose(); - RenderSystem.applyModelViewMatrix(); - } - - if (is_hovered) { - screen.hoveredSlot = slot; - - stack.pushPose(); - stack.translate(0, 0, 101); - RenderHelper.setDrawColor(SLOT_HIGHLIGHT); - RenderHelper.drawRect(stack, 1, 1, getWidth() - 1, getHeight() - 1); - stack.popPose(); - } + renderRegular(stack, itemstack, count_override); } }