Move itemstack rendering to submethod

This commit is contained in:
DBotThePony 2021-08-20 19:56:06 +07:00
parent 1b4226f0d5
commit 23e4733a22
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -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<T extends MatterySlot> 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<T extends MatterySlot> 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);
}
}