List of usage examples for net.minecraftforge.client ForgeHooksClient setRenderLayer
public static void setRenderLayer(RenderType layer)
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); }