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.client.renderer.GameRenderer;
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
import net.minecraft.world.inventory.ClickType;
|
import net.minecraft.world.inventory.ClickType;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||||
import ru.dbotthepony.mc.otm.menu.slot.MatterySlot;
|
import ru.dbotthepony.mc.otm.menu.slot.MatterySlot;
|
||||||
import ru.dbotthepony.mc.otm.screen.MatteryScreen;
|
import ru.dbotthepony.mc.otm.screen.MatteryScreen;
|
||||||
@ -55,6 +56,41 @@ public class SlotPanel<T extends MatterySlot> extends EditablePanel {
|
|||||||
RenderHelper.drawRegularSlot(stack, 0, 0);
|
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
|
@Override
|
||||||
protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) {
|
protected void innerRender(PoseStack stack, float mouse_x, float mouse_y, float flag) {
|
||||||
renderSlotBackground(stack, mouse_x, mouse_y, 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);
|
RenderHelper.drawRect(stack, 1, 1, getWidth() - 1, getHeight() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!itemstack.isEmpty()) {
|
renderRegular(stack, itemstack, count_override);
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user