Example usage for org.lwjgl.opengl GL11 glPushAttrib

List of usage examples for org.lwjgl.opengl GL11 glPushAttrib

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL11 glPushAttrib.

Prototype

public static native void glPushAttrib(@NativeType("GLbitfield") int mask);

Source Link

Document

Takes a bitwise OR of symbolic constants indicating which groups of state variables to push onto the server attribute stack.

Usage

From source file:vazkii.botania.client.core.handler.BlockHighlightRenderHandler.java

License:Open Source License

@SubscribeEvent
public static void onWorldRenderLast(RenderWorldLastEvent event) {
    Minecraft mc = Minecraft.getMinecraft();
    RayTraceResult pos = mc.objectMouseOver;

    GlStateManager.pushMatrix();// w w  w  . j  av  a2 s.c  o  m
    GlStateManager.disableTexture2D();
    GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
    GlStateManager.disableLighting();
    GlStateManager.enableBlend();
    GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

    boundTile: {
        if (Botania.proxy.isClientPlayerWearingMonocle() && pos != null && pos.entityHit == null) {
            BlockPos bPos = pos.getBlockPos();

            ItemStack stackHeld = PlayerHelper.getFirstHeldItem(mc.thePlayer, ModItems.twigWand);
            if (stackHeld != null && ItemTwigWand.getBindMode(stackHeld)) {
                BlockPos coords = ItemTwigWand.getBoundTile(stackHeld);
                if (coords.getY() != -1)
                    bPos = coords;
            }

            TileEntity tile = mc.theWorld.getTileEntity(bPos);
            if (tile == null || !(tile instanceof ISubTileContainer))
                break boundTile;
            ISubTileContainer container = (ISubTileContainer) tile;
            SubTileEntity subtile = container.getSubTile();
            if (subtile == null)
                break boundTile;
            RadiusDescriptor descriptor = subtile.getRadius();
            if (descriptor == null)
                break boundTile;

            if (descriptor.isCircle())
                renderCircle(descriptor.getSubtileCoords(), descriptor.getCircleRadius());
            else
                renderRectangle(descriptor.getAABB(), true, null, (byte) 32);
        }
    }

    double offY = -1.0 / 16 + 0.005;
    for (Entity e : mc.theWorld.loadedEntityList)
        if (e instanceof EntityMagicLandmine) {
            BlockPos bpos = e.getPosition();
            AxisAlignedBB aabb = new AxisAlignedBB(bpos).offset(0, offY, 0).expand(2.5, 0, 2.5);

            float gs = (float) (Math.sin(ClientTickHandler.total / 20) + 1) * 0.2F + 0.6F;
            int r = (int) (105 * gs);
            int g = (int) (25 * gs);
            int b = (int) (145 * gs);
            Color color = new Color(r, g, b);

            int alpha = 32;
            if (e.ticksExisted < 8)
                alpha *= Math.min((e.ticksExisted + event.getPartialTicks()) / 8F, 1F);
            else if (e.ticksExisted > 47)
                alpha *= Math.min(1F - (e.ticksExisted - 47 + event.getPartialTicks()) / 8F, 1F);

            renderRectangle(aabb, false, color, (byte) alpha);
            offY += 0.001;
        }

    GlStateManager.enableTexture2D();
    GlStateManager.disableBlend();
    GL11.glPopAttrib();
    GlStateManager.popMatrix();
}

From source file:vazkii.botania.client.core.handler.BoundTileRenderer.java

License:Open Source License

@SubscribeEvent
public static void onWorldRenderLast(RenderWorldLastEvent event) {
    GlStateManager.pushMatrix();//from   w  w w.j av  a 2 s  . c  om
    GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
    GlStateManager.disableDepth();
    GlStateManager.disableTexture2D();
    GlStateManager.enableBlend();

    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
    int color = Color.HSBtoRGB(ClientTickHandler.ticksInGame % 200 / 200F, 0.6F, 1F);

    if (player.getHeldItemMainhand() != null
            && player.getHeldItemMainhand().getItem() instanceof ICoordBoundItem) {
        BlockPos coords = ((ICoordBoundItem) player.getHeldItemMainhand().getItem())
                .getBinding(player.getHeldItemMainhand());
        if (coords != null)
            renderBlockOutlineAt(coords, color);
    }

    if (player.getHeldItemOffhand() != null
            && player.getHeldItemOffhand().getItem() instanceof ICoordBoundItem) {
        BlockPos coords = ((ICoordBoundItem) player.getHeldItemOffhand().getItem())
                .getBinding(player.getHeldItemOffhand());
        if (coords != null)
            renderBlockOutlineAt(coords, color);
    }

    IItemHandlerModifiable mainInv = (IItemHandlerModifiable) player
            .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP);
    IItemHandlerModifiable baublesInv = BotaniaAPI.internalHandler.getBaublesInventoryWrapped(player);
    IItemHandler joined = baublesInv != null ? new CombinedInvWrapper(mainInv, baublesInv) : mainInv;

    for (int i = 0; i < joined.getSlots(); i++) {
        ItemStack stackInSlot = joined.getStackInSlot(i);

        if (stackInSlot != null && stackInSlot.getItem() instanceof IWireframeCoordinateListProvider) {
            IWireframeCoordinateListProvider provider = (IWireframeCoordinateListProvider) stackInSlot
                    .getItem();
            List<BlockPos> coordsList = provider.getWireframesToDraw(player, stackInSlot);
            if (coordsList != null)
                for (BlockPos coords : coordsList)
                    renderBlockOutlineAt(coords, color);

            BlockPos coords = provider.getSourceWireframe(player, stackInSlot);
            if (coords != null && coords.getY() > -1)
                renderBlockOutlineAt(coords, color, 5F);
        }
    }

    GlStateManager.enableDepth();
    GlStateManager.enableTexture2D();
    GlStateManager.disableBlend();
    GL11.glPopAttrib();
    GlStateManager.popMatrix();
}

From source file:vazkii.botania.client.core.handler.MultiblockRenderHandler.java

License:Open Source License

private static void renderPlayerLook(EntityPlayer player, RayTraceResult src) {
    if (currentMultiblock != null && dimension == player.worldObj.provider.getDimension()) {
        BlockPos anchorPos = anchor != null ? anchor : src.getBlockPos();

        GlStateManager.pushMatrix();/*from w w w  . ja  v a 2  s.c o  m*/
        GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GlStateManager.disableLighting();
        rendering = true;
        Multiblock mb = anchor != null ? currentMultiblock.getForFacing(angle)
                : currentMultiblock.getForEntity(player);
        boolean didAny = false;

        blockAccess.update(player.worldObj, mb, anchorPos);

        ShaderHelper.useShader(ShaderHelper.alpha, shader -> {
            int alpha = ARBShaderObjects.glGetUniformLocationARB(shader, "alpha");
            ARBShaderObjects.glUniform1fARB(alpha, 0.4F);
        });

        for (MultiblockComponent comp : mb.getComponents()) {
            if (renderComponentInWorld(player.worldObj, mb, comp, anchorPos))
                didAny = true;
        }

        ShaderHelper.releaseShader();

        rendering = false;
        GL11.glPopAttrib();
        GlStateManager.popMatrix();

        if (!didAny) {
            setMultiblock(null);
            player.addChatComponentMessage(new TextComponentTranslation("botaniamisc.structureComplete")
                    .setStyle(new Style().setColor(TextFormatting.GREEN)));
        }
    }
}

From source file:vazkii.botania.client.core.handler.RedStringRenderer.java

License:Open Source License

public static void renderAll() {
    if (!redStringTiles.isEmpty()) {
        GlStateManager.pushMatrix();//w  w w.ja v  a2  s  .  c om
        GlStateManager.disableTexture2D();
        GlStateManager.enableBlend();
        GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
        GlStateManager.disableLighting();
        GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GlStateManager.color(1F, 0F, 0F, sizeAlpha);

        TileRedString tile;
        while ((tile = redStringTiles.poll()) != null)
            renderTile(tile);

        GlStateManager.enableTexture2D();
        GlStateManager.disableBlend();
        GL11.glPopAttrib();
        GlStateManager.popMatrix();

    }
}

From source file:vazkii.botania.client.core.handler.TooltipAdditionDisplayHandler.java

License:Open Source License

private static void drawTerraPick(ItemStack stack, int mouseX, int mouseY, int width, int height,
        FontRenderer font) {//from   w  w w.j  a  va  2s  .c  o  m
    int level = ItemTerraPick.getLevel(stack);
    int max = ItemTerraPick.LEVELS[Math.min(ItemTerraPick.LEVELS.length - 1, level + 1)];
    boolean ss = level >= ItemTerraPick.LEVELS.length - 1;
    int curr = ItemTerraPick.getMana_(stack);
    float percent = level == 0 ? 0F : (float) curr / (float) max;
    int rainbowWidth = Math.min(width - (ss ? 0 : 1), (int) (width * percent));
    float huePer = width == 0 ? 0F : 1F / width;
    float hueOff = (ClientTickHandler.ticksInGame + ClientTickHandler.partialTicks) * 0.01F;

    GlStateManager.disableDepth();
    Gui.drawRect(mouseX - 1, mouseY - height - 1, mouseX + width + 1, mouseY, 0xFF000000);
    for (int i = 0; i < rainbowWidth; i++)
        Gui.drawRect(mouseX + i, mouseY - height, mouseX + i + 1, mouseY,
                Color.HSBtoRGB(hueOff + huePer * i, 1F, 1F));
    Gui.drawRect(mouseX + rainbowWidth, mouseY - height, mouseX + width, mouseY, 0xFF555555);

    String rank = I18n.format("botania.rank" + level).replaceAll("&", "\u00a7");

    GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
    GlStateManager.disableLighting();
    font.drawStringWithShadow(rank, mouseX, mouseY - 12, 0xFFFFFF);
    if (!ss) {
        rank = I18n.format("botania.rank" + (level + 1)).replaceAll("&", "\u00a7");
        font.drawStringWithShadow(rank, mouseX + width - font.getStringWidth(rank), mouseY - 12, 0xFFFFFF);
    }
    GlStateManager.enableLighting();
    GlStateManager.enableDepth();
    GL11.glPopAttrib();
}

From source file:vazkii.botania.client.fx.ParticleRenderDispatcher.java

License:Creative Commons License

public static void dispatch() {
    Tessellator tessellator = Tessellator.getInstance();

    Profiler profiler = Minecraft.getMinecraft().mcProfiler;

    GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
    GlStateManager.depthMask(false);//from  w w w  .j a  v  a 2s  .  co m
    GlStateManager.enableBlend();
    GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
    GlStateManager.alphaFunc(GL11.GL_GREATER, 0.003921569F);
    GlStateManager.disableLighting();

    profiler.startSection("sparkle");
    FXSparkle.dispatchQueuedRenders(tessellator);
    profiler.endStartSection("wisp");
    FXWisp.dispatchQueuedRenders(tessellator);
    profiler.endSection();

    GlStateManager.alphaFunc(GL11.GL_GREATER, 0.1F);
    GlStateManager.disableBlend();
    GlStateManager.depthMask(true);
    GL11.glPopAttrib();
}

From source file:vazkii.botania.client.model.ModelHourglass.java

License:Open Source License

public void render(float fract1, float fract2, boolean flip, int color) {
    if (flip) {//  ww  w  . j  ava2 s . co m
        float fract3 = fract1;
        fract1 = fract2;
        fract2 = fract3;
    }

    float f = 1F / 16F;
    ring.render(f);
    base1.render(f);
    base2.render(f);
    Color c = new Color(color);
    GL11.glColor3ub((byte) c.getRed(), (byte) c.getGreen(), (byte) c.getBlue());

    GL11.glPushAttrib(GL11.GL_TRANSFORM_BIT);
    GlStateManager.disableRescaleNormal();
    GlStateManager.enableNormalize();

    if (fract1 > 0) {
        GlStateManager.pushMatrix();
        if (flip)
            GlStateManager.translate(-2.5F * f, 1.0F * f, -2.5F * f);
        else {
            GlStateManager.rotate(180F, 0F, 0F, 1F);
            GlStateManager.translate(-2.5F * f, -6.0F * f, -2.5F * f);
        }

        GlStateManager.scale(1F, fract1, 1F);
        sand1.render(f);
        GlStateManager.popMatrix();
    }

    if (fract2 > 0) {
        GlStateManager.pushMatrix();
        if (flip)
            GlStateManager.translate(-2.5F * f, -6.0F * f, -2.5F * f);
        else {
            GlStateManager.rotate(180F, 0F, 0F, 1F);
            GlStateManager.translate(-2.5F * f, 1.0F * f, -2.5F * f);
        }

        GlStateManager.scale(1F, fract2, 1F);

        sand2.render(f);
        GlStateManager.popMatrix();
    }

    GL11.glPopAttrib();

    GL11.glColor3ub((byte) 255, (byte) 255, (byte) 255);
    glass1.render(f);
    glass2.render(f);
}

From source file:zeldaswordskills.client.gui.GuiBuffBar.java

License:Open Source License

@SubscribeEvent
public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) {
    if (!shouldDisplay || event.type != ElementType.EXPERIENCE) {
        return;//from   w ww  .j a va 2 s  . co  m
    }

    int xPos = Config.isBuffBarLeft() ? 2 : event.resolution.getScaledWidth() - (ICON_SPACING + 2);
    int yPos = 2;
    int offset = 0;
    int increment = Config.isBuffBarHorizontal() && !Config.isBuffBarLeft() ? -ICON_SPACING : ICON_SPACING;
    Collection<BuffBase> collection = ZSSEntityInfo.get(mc.thePlayer).getActiveBuffsMap().values();
    if (!collection.isEmpty()) {
        GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        // alpha test and blend needed due to vanilla or Forge rendering bug
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(textures);
        for (Iterator<BuffBase> iterator = ZSSEntityInfo.get(mc.thePlayer).getActiveBuffsMap().values()
                .iterator(); iterator.hasNext(); offset = increment) {
            BuffBase buff = iterator.next();
            int index = buff.getIconIndex();
            xPos += (Config.isBuffBarHorizontal() ? offset : 0);
            yPos += (Config.isBuffBarHorizontal() ? 0 : offset);
            drawTexturedModalRect(xPos, yPos, index % ICONS_PER_ROW * ICON_SIZE,
                    index / ICONS_PER_ROW * ICON_SIZE, ICON_SIZE, ICON_SIZE);
            if (buff.displayArrow()) {
                drawTexturedModalRect(xPos, yPos, buff.isDebuff() ? ICON_SIZE : 0, 0, ICON_SIZE, ICON_SIZE);
            }
        }
        GL11.glPopAttrib();
    }
}

From source file:zeldaswordskills.client.gui.GuiMusicBase.java

License:Open Source License

@Override
public void drawScreen(int mouseX, int mouseY, float f) {
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    mc.getTextureManager().bindTexture(getTexture());
    GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
    GL11.glDisable(GL11.GL_LIGHTING);//from w  w  w .jav  a 2s .  c o m
    GL11.glEnable(GL11.GL_ALPHA_TEST);
    GL11.glEnable(GL11.GL_BLEND);
    RenderHelperQ.drawTexturedRect(guiLeft, guiTop, 0, 0, xSize, ySize, fullX, fullY);
    GL11.glPopAttrib();
    int i1 = (melody.size() > MAX_NOTES ? ((melody.size() - 1) / MAX_NOTES) * MAX_NOTES : 0);
    for (int i = 0; (i + i1) < melody.size(); ++i) {
        SongNote note = melody.get(i + i1);
        // j is factor of how far down the screen note should be drawn
        int j = SongNote.Note.values().length - (note.note.ordinal() + 1)
                + (SongNote.Note.values().length * (2 - note.getOctave()));
        int dy = 6 + (INT_Y * j);
        int dx = 46 + (NOTE_SIZE + 8) * i;
        // draw supplementary line(s) under staff and behind note
        if (j > 10) { // j goes from 0-13, not 1-14
            int dy2 = (10 + INT_Y * 11);
            // given the control scheme, this loop is not really necessary as it's not possible to reach the low A note
            for (int n = 0; n < ((j - 9) / 2); ++n) {
                // each line segment is 16x5 pixels, using first line in .png file at 8,15
                RenderHelperQ.drawTexturedRect(guiLeft + (dx - 2), guiTop + dy2 + (n * 2 * INT_Y), 8, 15, 16, 5,
                        fullX, fullY);
            }
        }
        RenderHelperQ.drawTexturedRect(guiLeft + dx, guiTop + dy, xSize,
                PlayableNote.getOrdinalFromNote(note) * NOTE_SIZE, NOTE_SIZE, NOTE_SIZE, fullX, fullY);
        // draw additional sharp / flat if applicable
        if (note.isSharp() || note.isFlat()) {
            RenderHelperQ.drawTexturedRect(guiLeft + dx + NOTE_SIZE - 2, guiTop + dy, xSize + NOTE_SIZE,
                    (note.isSharp() ? 0 : 5), 5, 5, fullX, fullY);
        }
    }
    if (song != null) {
        String s = song.getDisplayName();
        fontRendererObj.drawString(s, guiLeft + (xSize / 2) - (fontRendererObj.getStringWidth(s) / 2),
                guiTop + 3, 0xFFFFFF);
    }
    super.drawScreen(mouseX, mouseY, f);
}

From source file:zeldaswordskills.client.gui.GuiSkills.java

License:Open Source License

@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
    if (needsScrollBar()) {
        GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
        GL11.glEnable(GL11.GL_BLEND);/*from www.  j  av a2s . c  o m*/
        mc.renderEngine.bindTexture(texture);
        RenderHelperQ.drawTexturedRect(259, 55, 282, 0, 3, 5, 285, 180);
        RenderHelperQ.drawTexturedRect(259, 150, 282, 5, 3, 5, 285, 180);
        RenderHelperQ.drawTexturedRect(260, 61, 283, 17, 1, 88, 285, 180);
        RenderHelperQ.drawTexturedRect(259, 61 + (int) (scrollY * 81), 282, 10, 3, 7, 285, 180);
        GL11.glPopAttrib();
    }
    String s = (currentSkill != null ? currentSkill.getDisplayName().toUpperCase()
            : StatCollector.translateToLocal("skill.zss.gui.description"));
    isUnicode = fontRendererObj.getUnicodeFlag();
    fontRendererObj.setUnicodeFlag(true);
    fontRendererObj.drawString(s, 158, 38, 4210752);
    if (currentSkill != null) {
        s = currentSkill.getLevelDisplay(false);
        fontRendererObj.drawString(s, 262 - fontRendererObj.getStringWidth(s), 38, 4210752);
    }
    refreshDescription();
    textY = 38 + (fontRendererObj.FONT_HEIGHT * 2);
    int start = (needsScrollBar() ? (int) (scrollY * (numLines - MAX_LINES)) : 0);
    for (int i = start; i < desc.size() && i < (MAX_LINES + start); ++i) {
        fontRendererObj.drawString(desc.get(i), 158, textY, 4210752);
        textY += fontRendererObj.FONT_HEIGHT;
    }
    fontRendererObj.setUnicodeFlag(isUnicode);
}