Move itemstack rendering to submethod
This commit is contained in:
parent
1b4226f0d5
commit
23e4733a22
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user