package li.cil.oc2.client.gui; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import li.cil.oc2.common.container.RobotInventoryContainer; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public final class RobotContainerScreen extends AbstractMachineInventoryScreen { private static final int SLOT_SIZE = 18; /////////////////////////////////////////////////////////////////// public static void renderSelection(final PoseStack stack, final int selectedSlot, final int x, final int y, final int columns) { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1, 1, 1, 1); final int slotX = (selectedSlot % columns) * SLOT_SIZE; final int slotY = (selectedSlot / columns) * SLOT_SIZE; final int offset = SLOT_SIZE * (int) (15 * (System.currentTimeMillis() % 1000) / 1000); Sprites.SLOT_SELECTION.draw(stack, x + slotX, y + slotY, 0, offset); } /////////////////////////////////////////////////////////////////// public RobotContainerScreen(final RobotInventoryContainer container, final Inventory playerInventory, final Component title) { super(container, playerInventory, title); imageWidth = Sprites.ROBOT_CONTAINER.width; imageHeight = Sprites.ROBOT_CONTAINER.height; inventoryLabelY = imageHeight - 94; } /////////////////////////////////////////////////////////////////// @Override protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) { super.renderBg(stack, partialTicks, mouseX, mouseY); Sprites.ROBOT_CONTAINER.draw(stack, leftPos, topPos); renderSelection(stack, menu.getRobot().getSelectedSlot(), leftPos + 115, topPos + 23, 3); } }