BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer();
BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer();
return Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getMissingModel().getQuads(state, side, rand); BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if(layer == null) {
@Override public @Nonnull List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { return quads.getQuads(side, MinecraftForgeClient.getRenderLayer()); }
@Nonnull @Override public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) { final BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if (layer == null) { return side == null? quads : ImmutableList.<BakedQuad> of(); } final IBakedModel model = models.get(layer); return MoreObjects.firstNonNull(model, missing).getQuads(state, side, rand); } }
@Override @SideOnly(Side.CLIENT) @Nonnull public List<BakedQuad> getQuads(@Nullable IBlockState blockstate, @Nullable EnumFacing side, long rand) { List<BakedQuad> result = Collections.emptyList(); BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if(layer == BlockRenderLayer.CUTOUT || layer == null || blockstate == null) { result = getLPQuads(blockstate, side); } return addOtherQuads(result, blockstate, side, rand); }
@Override protected boolean shouldRenderParts() { return MinecraftForgeClient.getRenderLayer() == BlockRenderLayer.CUTOUT && BlockHelpers.getSafeBlockStateProperty(getState(), BlockCable.PARTCONTAINER, null) != null; }
@Override public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); List<BakedQuad> quads = new ArrayList<>(); if (layer == BlockRenderLayer.TRANSLUCENT) { quads.addAll(fluid.getQuads(state, side, rand)); } else { IBakedModel model = emptyTank; boolean below = state.getValue(BlockCertusTank.TANK_BELOW); boolean above = state.getValue(BlockCertusTank.TANK_ABOVE); if (above && !below) { model = emptyTankAbove; } else if (!above && below) { model = emptyTankBelow; } else if (above && below) { model = emptyTankMiddle; } quads.addAll(model.getQuads(state, side, rand)); } return quads; }
@Override public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) { List<PartInfo.ClientInfo> info = ((IExtendedBlockState) state).getValue(BlockMultipartContainer.PROPERTY_INFO); BlockRendererDispatcher brd = Minecraft.getMinecraft().getBlockRendererDispatcher(); if (info != null) { BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); return info// .stream()// .filter(i -> i.canRenderInLayer(layer)) // Make sure it can render in this layer .flatMap(i -> brd.getModelForState(i.getActualState()) // Get model .getQuads(i.getExtendedState(), side, rand).stream() // Stream quads .map(q -> tint(i, q))) // Tint quads .collect(Collectors.toList()); } return Collections.emptyList(); }
@Override public List<BakedQuad> getGeneralQuads() { BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); List<BakedQuad> quads; try { if(layer == null || innerBlockState.getBlock().canRenderInLayer(innerBlockState, layer)) { // Yes, we do want to run this if layer is null. If we don't, we don't get block breaking textures quads = Lists.newArrayList(baseModel.getQuads(innerBlockState, getRenderingSide(), rand)); } else { quads = Lists.newArrayList(); } } catch (Exception e) { quads = Lists.newArrayList(); // It's better to render a bit stranger, than to crash all together. } if((facing == EnumFacing.UP || facing == null) && layer == BlockRenderLayer.CUTOUT_MIPPED) { addBakedQuad(quads, 0, 1, 0, 1, 1.01F, overlayIcon, EnumFacing.UP); } return quads; }
@Override public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) { IExtendedBlockState extendedBlockState = (IExtendedBlockState) state; FacadeBlockId facadeId = extendedBlockState.getValue(GenericCableBlock.FACADEID); if (facadeId == null) { return Collections.emptyList(); } IBlockState facadeState = facadeId.getBlockState(); BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if (layer != null && !facadeState.getBlock().canRenderInLayer(facadeState, layer)) { // always render in the null layer or the block-breaking textures don't show up return Collections.emptyList(); } IBakedModel model = getModel(facadeState); try { return model.getQuads(state, side, rand); } catch (Exception e) { return Collections.emptyList(); } }
/** * Adds a baked model that is expected to behave to the quad lists for the given block layer. The block layer will be set when the model is asked for its * quads. */ public void addFriendlybakedModel(BlockRenderLayer pass, IBakedModel model, @Nullable IBlockState state, long rand) { if (model != null) { BlockRenderLayer oldRenderLayer = MinecraftForgeClient.getRenderLayer(); ForgeHooksClient.setRenderLayer(pass); List<BakedQuad> generalQuads = model.getQuads(state, null, rand); if (!generalQuads.isEmpty()) { addQuads(null, pass, generalQuads); } for (EnumFacing face : EnumFacing.values()) { List<BakedQuad> faceQuads = model.getQuads(state, face, rand); if (!faceQuads.isEmpty()) { addQuads(face, pass, faceQuads); } } ForgeHooksClient.setRenderLayer(oldRenderLayer); } }
@Override public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { IExtendedBlockState extendedBlockState = (IExtendedBlockState) state; if (extendedBlockState == null) return Collections.emptyList(); //ConstructionID facadeId = extendedBlockState.getValue(ConstructionBlock.FACADEID); IBlockState facadeState = extendedBlockState.getValue(ConstructionBlock.FACADE_ID); IBlockState extFacadeState = extendedBlockState.getValue(ConstructionBlock.FACADE_EXT_STATE); IBakedModel model; if (facadeState == null) { return blankConstructionModel.getQuads(state, side, rand); } //IBlockState facadeState = facadeId.getBlockState(); BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if (layer != null && !facadeState.getBlock().canRenderInLayer(facadeState, layer)) { // always render in the null layer or the block-breaking textures don't show up return Collections.emptyList(); } model = getModel(facadeState); try { return model.getQuads(extFacadeState, side, rand); } catch (Exception e) { e.printStackTrace(); return model.getQuads(facadeState, side, rand); } }
public static ModelQuadLayer[] getCachedFace( final int stateID, final long weight, final EnumFacing face, final BlockRenderLayer layer ) { if ( layer == null ) { return null; } final int cacheVal = stateID << 6 | layer.ordinal() << 4 | face.ordinal(); final ModelQuadLayer[] mpc = cache.get( cacheVal ); if ( mpc != null ) { return mpc; } final BlockRenderLayer original = net.minecraftforge.client.MinecraftForgeClient.getRenderLayer(); try { ForgeHooksClient.setRenderLayer( layer ); return getInnerCachedFace( cacheVal, stateID, weight, face, layer ); } finally { // restore previous layer. ForgeHooksClient.setRenderLayer( original ); } }
@Override public void bakeModel() { long start = Profiler.instance.start(); @Nonnull QuadCollector paintQuads = new QuadCollector(); boolean hasPaintRendered = false; String cacheResult; if (block instanceof IBlockPaintableBlock && (!(block instanceof IWrenchHideablePaint) || !getYetaDisplayMode().isHideFacades())) { hasPaintRendered = PaintWrangler.wrangleBakedModel(world, pos, ((IBlockPaintableBlock) block).getPaintSource(state, world, pos), paintQuads); } if (!hasPaintRendered) { if (MinecraftForgeClient.getRenderLayer() == null || MinecraftForgeClient.getRenderLayer() == block.getBlockLayer()) { model = null; cacheResult = "relaying"; } else { model = NULL; cacheResult = "none"; } } else { model = new CollectedQuadBakedBlockModel(paintQuads); cacheResult = "paint only"; } Profiler.instance.stop(start, state.getBlock().getLocalizedName() + " (bake, cache=" + cacheResult + ")"); }
public static void renderBlockModel(@Nonnull final World world, @Nonnull final BlockPos pos, boolean translateToOrigin) { final BlockRenderLayer oldRenderLayer = MinecraftForgeClient.getRenderLayer(); final IBlockState state = world.getBlockState(pos); final BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); final IBakedModel ibakedmodel = blockrendererdispatcher.getModelForState(state); final Tessellator tesselator = Tessellator.getInstance(); final BufferBuilder wr = tesselator.getBuffer(); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); if (translateToOrigin) { wr.setTranslation(-pos.getX(), -pos.getY(), -pos.getZ()); } NNList.RENDER_LAYER.apply(new Callback<BlockRenderLayer>() { @Override public void apply(@Nonnull BlockRenderLayer layer) { ForgeHooksClient.setRenderLayer(layer); // TODO: Need to setup GL state correctly for each layer blockrendererdispatcher.getBlockModelRenderer().renderModel(world, ibakedmodel, state, pos, wr, false); } }); if (translateToOrigin) { wr.setTranslation(0, 0, 0); } tesselator.draw(); ForgeHooksClient.setRenderLayer(oldRenderLayer); }
@SideOnly(Side.CLIENT) public boolean renderStatic(Vector3 pos, BlockRenderLayer layer, CCRenderState ccrs) { if (MinecraftForgeClient.getRenderLayer() == BlockRenderLayer.CUTOUT) { TileMultipart tileMultipart = tile(); ccrs.setBrightness(tileMultipart.getWorld(), tileMultipart.getPos()); FluidPipeRenderer.INSTANCE.renderPipeBlock(getPipeMaterial(), getPipeType(), getInsulationColor(), ccrs, new IVertexOperation[]{new Translation(pos)}, activeConnections & ~getBlockedConnections()); getCoverableImplementation().renderCovers(ccrs, new Matrix4().translate(pos), new IVertexOperation[0]); return true; } return false; }
@SideOnly(Side.CLIENT) public boolean renderStatic(Vector3 pos, BlockRenderLayer layer, CCRenderState ccrs) { if (MinecraftForgeClient.getRenderLayer() == BlockRenderLayer.CUTOUT) { TileMultipart tileMultipart = tile(); ccrs.setBrightness(tileMultipart.getWorld(), tileMultipart.getPos()); CableRenderer.INSTANCE.renderCableBlock(getPipeMaterial(), getPipeType(), getInsulationColor(), ccrs, new IVertexOperation[]{new Translation(pos)}, activeConnections & ~getBlockedConnections()); getCoverableImplementation().renderCovers(ccrs, new Matrix4().translate(pos), new IVertexOperation[0]); return true; } return false; } }
private void renderScene() { GlStateManager.enableCull(); GlStateManager.enableRescaleNormal(); RenderHelper.disableStandardItemLighting(); mc.entityRenderer.disableLightmap(); RenderUtil.bindBlockTexture(); GlStateManager.disableLighting(); GlStateManager.enableTexture2D(); GlStateManager.enableAlpha(); final LayerRenderer layerRenderer = new LayerRenderer(new Vector3d((-origin.x) + eye.x, (-origin.y) + eye.y, (-origin.z) + eye.z)); BlockRenderLayer oldRenderLayer = MinecraftForgeClient.getRenderLayer(); try { NNList.of(BlockRenderLayer.class).apply(layerRenderer); } finally { ForgeHooksClient.setRenderLayer(oldRenderLayer); GlStateManager.depthMask(true); } }
private void renderElements(Multiblock mb, Iterable<? extends BlockPos> blocks, Vector4f eye) { GlStateManager.pushMatrix(); GlStateManager.color(1F, 1F, 1F, 1F); GlStateManager.translate(0, 0, -1); TileEntityRendererDispatcher.instance.entityX = eye.x; TileEntityRendererDispatcher.instance.entityY = eye.y; TileEntityRendererDispatcher.instance.entityZ = eye.z; TileEntityRendererDispatcher.staticPlayerX = eye.x; TileEntityRendererDispatcher.staticPlayerY = eye.y; TileEntityRendererDispatcher.staticPlayerZ = eye.z; BlockRenderLayer oldRenderLayer = MinecraftForgeClient.getRenderLayer(); for (BlockRenderLayer layer : BlockRenderLayer.values()) { if (layer == BlockRenderLayer.TRANSLUCENT) { doTileEntityRenderPass(mb, blocks, 0); } doWorldRenderPass(mb, blocks, layer, eye); if (layer == BlockRenderLayer.TRANSLUCENT) { doTileEntityRenderPass(mb, blocks, 1); } } ForgeHooksClient.setRenderLayer(oldRenderLayer); ForgeHooksClient.setRenderPass(-1); setGlStateForPass(0); mc.getTextureManager().getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).restoreLastBlurMipmap(); GlStateManager.popMatrix(); }