Example usage for org.lwjgl.opengl GL11 glDepthMask

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

Introduction

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

Prototype

public static void glDepthMask(@NativeType("GLboolean") boolean flag) 

Source Link

Document

Masks the writing of depth values to the depth buffer.

Usage

From source file:eplus.renders.TableEntityItemRenderer.java

License:LGPL

/**
 * Render the item's icon or block into the GUI, including the glint effect.
 *//*  ww  w.  j av a  2 s  .  c  om*/
public void renderItemAndEffectIntoGUI(FontRenderer par1FontRenderer, RenderEngine par2RenderEngine,
        ItemStack par3ItemStack, int par4, int par5) {
    if (par3ItemStack != null) {
        if (!ForgeHooksClient.renderInventoryItem(renderBlocks, par2RenderEngine, par3ItemStack,
                renderWithColor, zLevel, (float) par4, (float) par5)) {
            this.renderItemIntoGUI(par1FontRenderer, par2RenderEngine, par3ItemStack, par4, par5);
        }

        if (par3ItemStack.hasEffect()) {
            GL11.glDepthFunc(GL11.GL_GREATER);
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(false);
            par2RenderEngine.bindTexture("%blur%/misc/glint.png");
            this.zLevel -= 50.0F;
            GL11.glEnable(GL11.GL_BLEND);
            GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_DST_COLOR);
            GL11.glColor4f(0.5F, 0.25F, 0.8F, 1.0F);
            this.renderGlint(par4 * 431278612 + par5 * 32178161, par4 - 2, par5 - 2, 20, 20);
            GL11.glDisable(GL11.GL_BLEND);
            GL11.glDepthMask(true);
            this.zLevel += 50.0F;
            GL11.glEnable(GL11.GL_LIGHTING);
            GL11.glDepthFunc(GL11.GL_LEQUAL);
        }
    }
}

From source file:espresso3d.engine.renderer.E3DGeometryRenderer.java

License:Open Source License

public void initSolidAndLineRendering() {
    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables Depth Testing
    GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do
    GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST); // Set Perspective Calculations To Most Accurate

    disableAllTextureUnits();/*from w  ww  .ja v  a  2  s  .  c  om*/
    GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
}

From source file:espresso3d.engine.renderer.E3DGeometryRenderer.java

License:Open Source License

public void initTexturedRendering() {
    //       GL11.glDepthMask(true);
    //        GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables Depth Testing
    //      GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do

    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables Depth Testing
    GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do
    GL11.glDisable(GL11.GL_BLEND);//w w  w  .  j  av a 2s .c o  m

    ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
    GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);

}

From source file:espresso3d.engine.renderer.E3DGeometryRenderer.java

License:Open Source License

public void initBlendedRendering() {
    GL11.glDepthMask(false);
    GL11.glEnable(GL11.GL_DEPTH_TEST);//  w  w  w . j  ava  2  s.  c om
    GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do
    GL11.glEnable(GL11.GL_BLEND); // Enable Blending
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); // Type Of Blending To Perform
    //      GL11.glHint(GL11.GL_POINT_SMOOTH_HINT, GL11.GL_NICEST);               // Really Nice Point Smoothing       
}

From source file:espresso3d.engine.renderer.E3DGeometryRenderer.java

License:Open Source License

public void disableBlendedRendering() {
    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables Depth Testing
    GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do
    //        GL11.glHint (GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);         // Set Perspective Calculations To Most Accurate
    GL11.glDisable(GL11.GL_BLEND);/*from  ww w.  j a  v a 2 s.c o m*/
}

From source file:espresso3d.engine.window.viewport.E3DViewport.java

License:Open Source License

/**
 * This will automatically be called by the engine.  Users needn't worry about this.
 * Sets the perspective to the values stored in this viewport.  This keeps track of whether
 * the values have changed or not, so it will keep the GL calls to a minimum (only set the perspective
 * if something has actually changed).//  ww  w.j a va 2  s.c  om
 *
 */
private void setPerspective() {
    if (perspectiveChanged) {
        GL11.glMatrixMode(GL11.GL_PROJECTION); // Select The Projection Matrix
        GL11.glLoadIdentity(); // Reset The Projection Matrix

        if (mode == VIEWPORT_MODE_PERSPECTIVE) {
            // Calculate The Aspect Ratio Of The Window
            GLU.gluPerspective((float) fovY, (float) ((float) width / (float) height), (float) nearClipPlane,
                    (float) farClipPlane);
        } else if (mode == VIEWPORT_MODE_ORTHOGRAPHIC)
            GL11.glOrtho(left * orthoZoom, right * orthoZoom, bottom * orthoZoom, top * orthoZoom,
                    nearClipPlane, farClipPlane); //todo: this needs to center around the camera.  Need to determin whether to use X/Y, Y/Z, or X/Z to center on

        recalcProjectionViewMatrix();

        perspectiveChanged = false;
    }

    GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select The Projection Matrix
    GL11.glLoadIdentity(); // Reset The Modelview Matrix

    GL11.glDepthMask(true); //Re-enable this.  IF particles turn this off, it has to be turned on to be able to clear the depth buffer
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer

    GLU.gluLookAt((float) cameraActor.getOrientation().getPosition().getX(),
            (float) cameraActor.getOrientation().getPosition().getY(),
            (float) cameraActor.getOrientation().getPosition().getZ(),
            ((float) (cameraActor.getOrientation().getPosition().getX()
                    + cameraActor.getOrientation().getForward().getX())),
            ((float) (cameraActor.getOrientation().getPosition().getY()
                    + cameraActor.getOrientation().getForward().getY())),
            ((float) (cameraActor.getOrientation().getPosition().getZ()
                    + cameraActor.getOrientation().getForward().getZ())),
            (float) cameraActor.getOrientation().getUp().getX(),
            (float) cameraActor.getOrientation().getUp().getY(),
            (float) cameraActor.getOrientation().getUp().getZ());

    //If something has changed camera wise, we need to recalculate the viewport matrix 
    // the next time something asks for a projection or unprojection
    if (!cameraActor.getOrientation().getPosition().equals(lastPosition)
            || !cameraActor.getOrientation().getForward().equals(lastForward)
            || !cameraActor.getOrientation().getUp().equals(lastUp)) {
        lastPosition.set(cameraActor.getOrientation().getPosition());
        lastForward.set(cameraActor.getOrientation().getForward());
        lastUp.set(cameraActor.getOrientation().getUp());
        needViewArrayRecalc = true;
    }
}

From source file:forestry.apiculture.render.EntityBeeFX.java

License:Open Source License

public void renderParticle(Tessellator tessellator, float f, float f1, float f2, float f3, float f4, float f5) {

    tessellator.draw();//  w ww  .j  av  a2s .c o  m
    GL11.glPushMatrix();

    GL11.glDepthMask(false);
    GL11.glEnable(3042);
    GL11.glBlendFunc(770, blendmode);

    Proxies.common.bindTexture(texture);

    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

    float f10 = 0.1F * particleScale;
    float f11 = (float) ((prevPosX + (posX - prevPosX) * f) - interpPosX);
    float f12 = (float) ((prevPosY + (posY - prevPosY) * f) - interpPosY);
    float f13 = (float) ((prevPosZ + (posZ - prevPosZ) * f) - interpPosZ);

    // GL11.glRotatef(this.rand.nextFloat(), 0.0F, 1.0F, 0.0F);
    tessellator.startDrawingQuads();
    tessellator.setBrightness(0x0000f0);

    tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, 1.0F);
    tessellator.addVertexWithUV(f11 - f1 * f10 - f4 * f10, f12 - f2 * f10, f13 - f3 * f10 - f5 * f10, 0, 1);
    tessellator.addVertexWithUV((f11 - f1 * f10) + f4 * f10, f12 + f2 * f10, (f13 - f3 * f10) + f5 * f10, 1, 1);
    tessellator.addVertexWithUV(f11 + f1 * f10 + f4 * f10, f12 + f2 * f10, f13 + f3 * f10 + f5 * f10, 1, 0);
    tessellator.addVertexWithUV((f11 + f1 * f10) - f4 * f10, f12 - f2 * f10, (f13 + f3 * f10) - f5 * f10, 0, 0);

    tessellator.draw();

    GL11.glDisable(3042);
    GL11.glDepthMask(true);

    GL11.glPopMatrix();
    GL11.glBindTexture(3553 /* GL_TEXTURE_2D *//* GL_TEXTURE_2D */,
            Proxies.common.getClientInstance().renderEngine.getTexture("/particles.png"));
    tessellator.startDrawingQuads();
}

From source file:forestry.apiculture.render.ParticleRenderer.java

License:Open Source License

private synchronized void render(float partialTicks) {
    Minecraft.getMinecraft().mcProfiler.startSection(name + "-render");

    float rotationX = ActiveRenderInfo.rotationX;
    float rotationZ = ActiveRenderInfo.rotationZ;
    float rotationYZ = ActiveRenderInfo.rotationYZ;
    float rotationXY = ActiveRenderInfo.rotationXY;
    float rotationXZ = ActiveRenderInfo.rotationXZ;

    EntityLivingBase player = Minecraft.getMinecraft().renderViewEntity;
    EntityFX.interpPosX = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks;
    EntityFX.interpPosY = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks;
    EntityFX.interpPosZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks;

    // bind the texture
    Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);

    // save the old gl state
    GL11.glPushAttrib(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

    // gl states/settings for drawing
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    GL11.glDepthMask(false);
    GL11.glEnable(GL11.GL_BLEND);//from   www.  jav a2s.  c om
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F);

    Tessellator tessellator = Tessellator.instance;
    tessellator.startDrawingQuads();

    for (EntityFX particle : particles) {
        tessellator.setBrightness(particle.getBrightnessForRender(partialTicks));

        particle.renderParticle(tessellator, partialTicks, rotationX, rotationXZ, rotationZ, rotationYZ,
                rotationXY);
    }

    tessellator.draw();

    // restore previous gl state
    GL11.glPopAttrib();

    Minecraft.getMinecraft().mcProfiler.endSection();
}

From source file:forestry.core.render.EntitySnowFX.java

License:Open Source License

public void renderParticle(Tessellator tessellator, float f, float f1, float f2, float f3, float f4, float f5) {

    tessellator.draw();//from  ww w. j  a  va 2  s. c o  m
    GL11.glPushMatrix();

    GL11.glDepthMask(false);
    GL11.glEnable(3042);
    GL11.glBlendFunc(770, blendmode);

    Proxies.common.bindTexture(texture);

    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

    float f10 = 0.1F * particleScale;
    float f11 = (float) ((prevPosX + (posX - prevPosX) * f) - interpPosX);
    float f12 = (float) ((prevPosY + (posY - prevPosY) * f) - interpPosY);
    float f13 = (float) ((prevPosZ + (posZ - prevPosZ) * f) - interpPosZ);

    GL11.glRotatef((float) motionY, 0.0F, 1.0F, 0.0F);
    tessellator.startDrawingQuads();
    tessellator.setBrightness(0x0000f0);

    tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, 1.0F);
    tessellator.addVertexWithUV(f11 - f1 * f10 - f4 * f10, f12 - f2 * f10, f13 - f3 * f10 - f5 * f10, 0, 1);
    tessellator.addVertexWithUV((f11 - f1 * f10) + f4 * f10, f12 + f2 * f10, (f13 - f3 * f10) + f5 * f10, 1, 1);
    tessellator.addVertexWithUV(f11 + f1 * f10 + f4 * f10, f12 + f2 * f10, f13 + f3 * f10 + f5 * f10, 1, 0);
    tessellator.addVertexWithUV((f11 + f1 * f10) - f4 * f10, f12 - f2 * f10, (f13 + f3 * f10) - f5 * f10, 0, 0);

    tessellator.draw();

    GL11.glDisable(3042);
    GL11.glDepthMask(true);

    GL11.glPopMatrix();
    GL11.glBindTexture(3553 /* GL_TEXTURE_2D *//* GL_TEXTURE_2D */,
            Proxies.common.getClientInstance().renderEngine.getTexture("/particles.png"));
    tessellator.startDrawingQuads();
}

From source file:fr.blaze_empire.phenix246.projector_mod.client.TileEntitySpotlightRender.java

License:Creative Commons License

public void renderLaser(TileEntityEmitter tileentity, double x, double y, double z, float tick) {
    block1 = ProjectorMod.emitter;/*ww w .j  ava2s .  co  m*/
    block2 = ProjectorMod.transmitter;
    xCoord = tileentity.xCoord;
    yCoord = tileentity.yCoord;
    zCoord = tileentity.zCoord;
    world = tileentity.getWorldObj();
    direction = tileentity.getDirection();

    f0 = 0.0F;
    f1 = 1.0F;
    d0 = 0.0D;
    d1 = 1.0D;

    distanceT = MathsHelper.getMaxLengh(world, xCoord, yCoord, zCoord);
    distance = (MathsHelper.getMaxLengh(world, xCoord, yCoord, zCoord) + 0.5F);
    recepter = MathsHelper.getRecepeterBlock(world, xCoord, yCoord, zCoord);

    if (world.getBlock(xCoord, yCoord, zCoord) == block1)
        isActive = world.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
    if (world.getBlock(xCoord, yCoord, zCoord) == block2) // instance
    {
        TileEntityTransmitter tile = (TileEntityTransmitter) tileentity;
        isActive = tile.isActive();
    }

    // ///////////////////////////////////////////////////////////////

    // Render

    GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);

    if (isActive) {

        Tessellator tessellator = Tessellator.instance;
        this.bindTexture(texture);

        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_CULL_FACE);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDepthMask(true);
        OpenGlHelper.glBlendFunc(770, 1, 1, 0);

        time = (float) world.getTotalWorldTime() + tick;
        f3 = -time * 0.2F - (float) MathHelper.floor_float(-time * 0.1F);
        b0 = 1;
        d3 = (double) time * 0.025D * (d1 - (double) (b0 & 1) * 2.5D);

        // ///////////////////////////////////////////////////////////////

        // determine the coordinates

        d5 = (double) b0 * 0.2D;
        d7 = 0.5D + Math.cos(d3 + 2.356194490192345D) * d5;
        d9 = 0.5D + Math.sin(d3 + 2.356194490192345D) * d5;
        d11 = 0.5D + Math.cos(d3 + (Math.PI / 4D)) * d5;
        d13 = 0.5D + Math.sin(d3 + (Math.PI / 4D)) * d5;
        d15 = 0.5D + Math.cos(d3 + 3.9269908169872414D) * d5;
        d17 = 0.5D + Math.sin(d3 + 3.9269908169872414D) * d5;
        d19 = 0.5D + Math.cos(d3 + 5.497787143782138D) * d5;
        d21 = 0.5D + Math.sin(d3 + 5.497787143782138D) * d5;
        d25 = 0.0D;
        d27 = 1.0D;
        d28 = (double) (-f1 + f3);

        d4 = 0.2D;
        d6 = 0.8D;
        d8 = 0.2D;
        d10 = 0.2D;
        d12 = 0.8D;
        d14 = 0.8D;
        d16 = 0.8D;
        d20 = 0.0D;
        d22 = 1.0D;
        d24 = (double) (-f1 + f3);
        d30 = 0.2D;

        // ///////////////////////////////////////////////////////////////

        // determine the colors
        short[] rgb = { 255, 255, 255 };
        rgb[0] = tileentity.getRed();
        rgb[1] = tileentity.getGreen();
        rgb[2] = tileentity.getBlue();

        // = MathsHelper.getRGB(world, xCoord, yCoord, zCoord, tileentity);
        // // Send colors (RBG)
        // MathsHelper.sendRGB(world, xCoord, yCoord, zCoord, rgb[0],
        // rgb[1], rgb[2]);

        // ///////////////////////////////////////////////////////////////

        tessellator.startDrawingQuads();
        tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

        if (direction == 0) // bottom /** -Y */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            y = y + 0.5D;

            tessellator.addVertexWithUV(x + d7, y - d23, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d11, y - d23, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d19, y - d23, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d15, y - d23, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d11, y - d23, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d19, y - d23, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d15, y - d23, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d7, y - d23, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y - d18, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d6, y - d18, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d14, y - d18, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d10, y - d18, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d6, y - d18, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d14, y - d18, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d10, y - d18, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d30, y - d18, z + d4, d20, d26);
        }
        if (direction == 1) // Top /** +Y */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            y = y + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d20, d26);
        }

        if (direction == 2) // South /** +Z */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            z = z + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d9, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d21, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d13, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d17, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d23, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d4, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d16, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d8, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d12, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d18, d20, d26);
        }
        if (direction == 4) // North /** -Z */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            z = z + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d9, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d21, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d13, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d17, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d23, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d4, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d16, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d8, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d12, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d18, d20, d26);
        }
        if (direction == 3) // West /** -X */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            x = x + 0.5D;

            tessellator.addVertexWithUV(x - d23, y + d7, z + d9, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d7, z + d9, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d11, z + d13, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d11, z + d13, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d19, z + d21, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d19, z + d21, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d15, z + d17, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d15, z + d17, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d11, z + d13, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d11, z + d13, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d19, z + d21, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d19, z + d21, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d15, z + d17, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d15, z + d17, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d7, z + d9, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d7, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x - d18, y + d30, z + d4, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d30, z + d4, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d6, z + d8, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d6, z + d8, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d14, z + d16, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d14, z + d16, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d10, z + d12, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d10, z + d12, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d6, z + d8, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d6, z + d8, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d14, z + d16, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d14, z + d16, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d10, z + d12, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d10, z + d12, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d30, z + d4, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d30, z + d4, d20, d26);
        }
        if (direction == 5) // East /** +X */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            x = x + 0.5D;

            tessellator.addVertexWithUV(x + d23, y + d7, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d7, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d11, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d11, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d19, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d19, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d15, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d15, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d11, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d11, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d19, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d19, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d15, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d15, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d7, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d7, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d18, y + d30, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d30, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d6, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d6, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d14, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d14, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d10, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d10, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d6, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d6, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d14, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d14, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d10, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d10, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d30, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d30, z + d4, d20, d26);
        }
        tessellator.draw();

        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glDepthMask(true);
    }
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.5F);
}