Example usage for net.minecraftforge.client ForgeHooksClient setRenderLayer

List of usage examples for net.minecraftforge.client ForgeHooksClient setRenderLayer

Introduction

In this page you can find the example usage for net.minecraftforge.client ForgeHooksClient setRenderLayer.

Prototype

public static void setRenderLayer(RenderType layer) 

Source Link

Usage

From source file:appeng.client.render.cablebus.FacadeBuilder.java

License:Open Source License

public static TextureAtlasAndTint getSprite(IBakedModel blockModel, IBlockState state, EnumFacing facing,
        long rand) {

    TextureAtlasAndTint firstFound = null;
    BlockRenderLayer orgLayer = MinecraftForgeClient.getRenderLayer();

    try {/*from   w w  w  .  ja  v a2  s.  c  o m*/
        // Some other mods also distinguish between layers, so we're doing this in a loop from most likely to least likely
        for (BlockRenderLayer layer : BlockRenderLayer.values()) {

            ForgeHooksClient.setRenderLayer(layer);

            for (BakedQuad bakedQuad : blockModel.getQuads(state, facing, rand)) {
                return new TextureAtlasAndTint(bakedQuad);
            }

            for (BakedQuad bakedQuad : blockModel.getQuads(state, null, rand)) {
                if (firstFound == null) {
                    firstFound = new TextureAtlasAndTint(bakedQuad);
                }
                if (bakedQuad.getFace() == facing) {
                    return new TextureAtlasAndTint(bakedQuad);
                }
            }
        }
    } catch (Exception e) {
        if (warnedFor.add(state.getBlock().getRegistryName())) {
            AELog.warn(
                    "Unable to get facade sprite for blockstate %s. Supressing further warnings for this block.",
                    state);
            AELog.debug(e);
        }
    } finally {
        ForgeHooksClient.setRenderLayer(orgLayer);
    }

    // Fall back to the particle texture, if we havent found anything else so far.
    if (firstFound == null) {
        try {
            return new TextureAtlasAndTint(blockModel.getParticleTexture(), -1);
        } catch (Exception e) {
            if (warnedFor.add(state.getBlock().getRegistryName())) {
                AELog.warn(
                        "Unable to get facade sprite particle texture fallback for blockstate %s. Supressing further warnings for this block.",
                        state);
                AELog.debug(e);
            }
        }
    }

    return firstFound;
}

From source file:blusunrize.immersiveengineering.common.blocks.metal.TileEntityFluidPipe.java

@Override
@SideOnly(Side.CLIENT)/*from   w  w w  . j av  a2 s.c  om*/
public List<BakedQuad> modifyQuads(IBlockState object, List<BakedQuad> quads) {
    if (!pipeCover.isEmpty()) {
        Block b = Block.getBlockFromItem(pipeCover.getItem());
        IBlockState state = b != null ? b.getStateFromMeta(pipeCover.getMetadata())
                : Blocks.STONE.getDefaultState();
        IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes()
                .getModelForState(state);
        BlockRenderLayer curL = MinecraftForgeClient.getRenderLayer();
        if (model != null)
            for (BlockRenderLayer layer : BlockRenderLayer.values()) {
                ForgeHooksClient.setRenderLayer(layer);
                for (EnumFacing facing : EnumFacing.VALUES)
                    quads.addAll(model.getQuads(state, facing, 0));
                quads.addAll(model.getQuads(state, null, 0));
            }
        ForgeHooksClient.setRenderLayer(curL);
    }
    return quads;
}

From source file:net.malisis.blocks.renderer.VanishingBlockRenderer.java

License:Open Source License

private void renderVanishingTileEntity() {
    tileEntity = TileEntityUtils.getTileEntity(VanishingTileEntity.class, world, pos);
    if (tileEntity == null)
        return;/*from  w w  w. jav  a  2  s  . com*/

    //      if (!tileEntity.blockDrawn/* || (!tileEntity.isInTransition() && !tileEntity.isVibrating())*/)
    //      {
    //         if (!tileEntity.isPowered() && tileEntity.getCopiedTileEntity() != null)
    //         {
    //            clean();
    //            TileEntityRendererDispatcher.instance.renderTileEntity(tileEntity.getCopiedTileEntity(), partialTick, 0);
    //         }
    //         if (tileEntity.blockDrawn)
    //            return;
    //      }

    enableBlending();

    float fx = 0.0F;
    float fy = 0.0F;
    float fz = 0.0F;
    float scale = (float) (tileEntity.getDuration() - tileEntity.getTransitionTimer())
            / tileEntity.getDuration();
    boolean rendered = tileEntity.getCopiedState() != null;

    RenderParameters rp = new RenderParameters();
    rp.useBlockBounds.set(false);
    rp.interpolateUV.set(false);

    // randomize position for vibrations
    if (tileEntity.isVibrating()) {
        rp.alpha.set(200);
        fx = rand.nextFloat() * 0.05F;
        fy = rand.nextFloat() * 0.05F;
        fz = rand.nextFloat() * 0.05F;
        if (rand.nextBoolean())
            GL11.glTranslated(fx, fy, fz);
        else
            GL11.glRotatef(rand.nextInt(5), 1, 1, 1);
    } else if (tileEntity.isInTransition()) {
        int alpha = tileEntity.getCopiedState() != null ? 255 - (int) (scale * 255) : (int) (scale * 255);
        rp.alpha.set(alpha);
        cube.scale(scale - 0.001F);
    } else if (tileEntity.blockDrawn)
        return;

    if (tileEntity.getCopiedState() != null) {
        BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
        wr.setVertexFormat(DefaultVertexFormats.BLOCK);
        try {
            boolean smbr = MalisisBlocksSettings.simpleMixedBlockRendering.get();
            MalisisBlocksSettings.simpleMixedBlockRendering.set(true);

            BlockPos translate = BlockPosUtils.chunkPosition(pos);
            //GlStateManager.pushMatrix();
            GlStateManager.translate(0.5F, 0.5F, 0.5F);
            GlStateManager.scale(scale, scale, scale);
            if (tileEntity.getCopiedState().getBlock().getRenderType() == MalisisCore.malisisRenderType)
                GlStateManager.translate(-translate.getX(), -translate.getY(), -translate.getZ());
            else
                GlStateManager.translate(-pos.getX(), -pos.getY(), -pos.getZ());
            GlStateManager.translate(-0.5F, -0.5F, -0.5F);

            GL11.glBlendFunc(GL11.GL_CONSTANT_ALPHA, GL11.GL_ONE_MINUS_CONSTANT_ALPHA);
            //            GL11.glAlphaFunc(GL11.GL_GREATER, 1F);
            //GL14.glBlendColor(0, 0, 0, 1 - scale);
            //TODO: render underlying model with vanishing block texture
            //            renderBlocks.overrideBlockTexture = block.getIcon(blockMetadata, 0);
            //            rendered = renderBlocks.renderBlockByRenderType(tileEntity.copiedBlock, x, y, z);
            //            renderBlocks.overrideBlockTexture = null;
            //            next();

            GL14.glBlendColor(0, 0, 0, scale);
            for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
                if (!tileEntity.getCopiedState().getBlock().canRenderInLayer(layer))
                    continue;

                ForgeHooksClient.setRenderLayer(layer);
                if (layer == EnumWorldBlockLayer.TRANSLUCENT)
                    GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA,
                            GL11.GL_ONE, GL11.GL_ZERO);
                if (tileEntity.getCopiedState().getBlock().getRenderType() == MalisisCore.malisisRenderType)
                    blockRenderer.renderBlock(tileEntity.getCopiedState(), pos, ProxyAccess.get(world), wr);
                else {
                    IBakedModel model = blockRenderer.getModelFromBlockState(tileEntity.getCopiedState(),
                            ProxyAccess.get(world), pos);
                    rendered |= blockRenderer.getBlockModelRenderer().renderModel(ProxyAccess.get(world), model,
                            tileEntity.getCopiedState(), pos, wr, false);
                }

                next();
            }

            if (!rendered)
                drawShape(cube, rp);

            //GlStateManager.popMatrix();

            if (tileEntity.getCopiedTileEntity() != null) {
                clean();
                TileEntityRendererDispatcher.instance.renderTileEntity(tileEntity.getCopiedTileEntity(),
                        partialTick, 0);
            }

            MalisisBlocksSettings.simpleMixedBlockRendering.set(smbr);

        } catch (Exception e) {
            drawShape(cube, rp);
        }

    } else
        drawShape(cube, rp);
}