ForgeHooksClient.setRenderLayer(null); ForgeHooksClient.setRenderLayer(layer);
@Override public void apply(@Nonnull BlockRenderLayer layer) { ForgeHooksClient.setRenderLayer(layer); setGlStateForPass(layer, false); doWorldRenderPass(trans, configurables, layer); } });
@Override public void apply(@Nonnull BlockRenderLayer layer) { ForgeHooksClient.setRenderLayer(layer); setGlStateForPass(layer, true); doWorldRenderPass(trans, neighbours, layer); } });
ForgeHooksClient.setRenderLayer( forcedLayer ); modelQuads.addAll( gatherQuads( model, blockState, rand ) ); ForgeHooksClient.setRenderLayer( layer );
@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); } });
public void renderLayer(BlockRendererDispatcher blockrendererdispatcher, BufferBuilder buffer, BlockRenderLayer renderLayer, List<BlockPos> toRender) { for (BlockPos pos : toRender) { IBlockState state = recipe.getStateAtBlockPos(pos); if (!state.getBlock().canRenderInLayer(state, renderLayer)) { continue; } ForgeHooksClient.setRenderLayer(renderLayer); try { blockrendererdispatcher.renderBlock(state, pos, blockAccess, buffer); } catch (Exception e) { e.printStackTrace(); } ForgeHooksClient.setRenderLayer(null); } } }
public void renderLayer(BlockRendererDispatcher blockrendererdispatcher, BufferBuilder buffer, BlockRenderLayer renderLayer) { for (BlockPos pos : toRender) { IBlockState state = proxyWorld.getBlockState(pos); if (!state.getBlock().canRenderInLayer(state, renderLayer)) { continue; } ForgeHooksClient.setRenderLayer(renderLayer); try { blockrendererdispatcher.renderBlock(state, pos, blockAccess, buffer); } catch (Exception e) { e.printStackTrace(); } ForgeHooksClient.setRenderLayer(null); } } }
/** * 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); } }
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 ); } }
public void renderLayer(BlockRendererDispatcher blockrendererdispatcher, BufferBuilder buffer, BlockRenderLayer renderLayer, List<BlockPos> toRender) { IBlockAccess blockAccess = ChunkUtils.getBlockAccessFromChunk(GuiMachineData.chunk); for (BlockPos pos : toRender) { IBlockState state = blockAccess.getBlockState(pos); if (!state.getBlock().canRenderInLayer(state, renderLayer)) { continue; } try { state = state.getActualState(blockAccess, pos); } catch (Exception e) { Logz.debug("Could not determine actual state of block: %s", state.getBlock()); } ForgeHooksClient.setRenderLayer(renderLayer); try { blockrendererdispatcher.renderBlock(state, pos, blockAccess, buffer); } catch (Exception e) { e.printStackTrace(); } ForgeHooksClient.setRenderLayer(null); } }
@Override public void apply(@Nonnull BlockRenderLayer layer) { ForgeHooksClient.setRenderLayer(layer); setGlStateForPass(layer); BufferBuilder wr = Tessellator.getInstance().getBuffer(); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); wr.setTranslation(translation.x, translation.y, translation.z); blocks.apply(new BlockRenderer(layer)); Tessellator.getInstance().draw(); wr.setTranslation(0, 0, 0); } }
private void drawBlock() { final Tessellator tessellator = Tessellator.getInstance(); final BufferBuilder wr = tessellator.getBuffer(); final BlockRendererDispatcher dispatcher = parent.getMinecraft().getBlockRendererDispatcher(); for (BlockRenderLayer layer : BlockRenderLayer.values()) { if (blockState.getBlock().canRenderInLayer(blockState, layer)) { net.minecraftforge.client.ForgeHooksClient.setRenderLayer(layer); wr.setTranslation(-0.5, -0.5, -0.5); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); dispatcher.renderBlock(blockState, FakeBlockAccess.ORIGIN, access, wr); tessellator.draw(); } } wr.setTranslation(0.0D, 0.0D, 0.0D); net.minecraftforge.client.ForgeHooksClient.setRenderLayer(null); }
public void render(float partialTicks) { GlStateManager.callList(this.glListId); ForgeHooksClient.setRenderLayer(BlockRenderLayer.SOLID); TileEntityRendererDispatcher renderer = TileEntityRendererDispatcher.instance; renderer.renderEngine = Minecraft.getMinecraft().renderEngine; for (BlockPos pos : toRender) { TileEntity renderTe = proxyWorld.getTileEntity(pos); if(renderTe != null) { renderTe.setWorld(proxyWorld); renderTe.setPos(pos); if(renderTe instanceof ITickable) { ((ITickable) renderTe).update(); } GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); try { //renderer.preDrawBatch(); renderer.render(renderTe, pos.getX(), pos.getY(), pos.getZ(), 0.0f); //renderer.drawBatch(0); } catch(Exception e) { Logz.info("Could not render tile entity '%s': %s", renderTe.getClass().getSimpleName(), e.getMessage()); } GlStateManager.popAttrib(); GlStateManager.popMatrix(); } } ForgeHooksClient.setRenderLayer(null); }
@SuppressWarnings("null") public static void renderBlockModel(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState state, boolean translateToOrigin, boolean relight) { BufferBuilder wr = Tessellator.getInstance().getBuffer(); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); if (translateToOrigin) { wr.setTranslation(-pos.getX(), -pos.getY(), -pos.getZ()); } BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); BlockModelShapes modelShapes = blockrendererdispatcher.getBlockModelShapes(); IBakedModel ibakedmodel = modelShapes.getModelForState(state); final IBlockAccess worldWrapper = relight ? new WorldWrapper(world, pos) : world; for (BlockRenderLayer layer : BlockRenderLayer.values()) { if (state.getBlock().canRenderInLayer(state, layer)) { ForgeHooksClient.setRenderLayer(layer); blockrendererdispatcher.getBlockModelRenderer().renderModel(worldWrapper, ibakedmodel, state, pos, wr, false); } } ForgeHooksClient.setRenderLayer(null); if (translateToOrigin) { wr.setTranslation(0, 0, 0); } Tessellator.getInstance().draw(); }
ForgeHooksClient.setRenderLayer(layer); List<BakedQuad> generalQuads = model.getQuads(state, null, 0); if (!generalQuads.isEmpty()) { ForgeHooksClient.setRenderLayer(oldRenderLayer);
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); }
private void doWorldRenderPass(Multiblock mb, Iterable<? extends BlockPos> blocks, final @Nonnull BlockRenderLayer layer, Vector4f eye) { mc.renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); mc.getTextureManager().getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).setBlurMipmap(false, false); ForgeHooksClient.setRenderLayer(layer); setGlStateForPass(layer); BufferBuilder wr = Tessellator.getInstance().getBuffer(); wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); for (BlockPos pos : blocks) { IBlockState bs = mb.getBlockState(pos); Block block = bs.getBlock(); bs = bs.getActualState(mb, pos); if (block.canRenderInLayer(bs, layer)) { renderBlock(bs, pos, mb, Tessellator.getInstance().getBuffer()); } } if (layer == BlockRenderLayer.TRANSLUCENT) { wr.sortVertexData(eye.x, eye.y, eye.z); } Tessellator.getInstance().draw(); }
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); } }
public void renderBlock(@Nonnull BlockPos pos, IBlockAccess blockAccess, double globalScale, boolean highlight) { BufferBuilder tes = Tessellator.getInstance().getBuffer(); BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); GlStateManager.pushMatrix(); GlStateManager.translate(0.5f, 0.5f, 0.5f); GlStateManager.scale(globalScale, globalScale, globalScale); GlStateManager.translate(-0.5f, -0.5f, -0.5f); IBlockState state = blockAccess.getBlockState(pos).getActualState(blockAccess, pos); IBakedModel ibakedmodel = blockrendererdispatcher.getModelForState(state); state = state.getBlock().getExtendedState(state, blockAccess, pos); tes.setTranslation(-pos.getX(), -pos.getY(), -pos.getZ()); Vector4f color = highlight ? selectedBlockBlend : blockBlend; GlStateManager.color(1, 1, 1, 1); GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_CONSTANT_COLOR, GlStateManager.SourceFactor.ONE.factor, GlStateManager.DestFactor.ZERO.factor); GL14.glBlendColor(color.x, color.y, color.z, color.w); tes.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); for (BlockRenderLayer layer : BlockRenderLayer.values()) { if (state.getBlock().canRenderInLayer(state, NullHelper.notnullJ(layer, "BlockRenderLayer value was null!"))) { ForgeHooksClient.setRenderLayer(layer); blockrendererdispatcher.getBlockModelRenderer().renderModel(blockAccess, ibakedmodel, state, pos, tes, false); } } ForgeHooksClient.setRenderLayer(null); Tessellator.getInstance().draw(); GL14.glBlendColor(1, 1, 1, 1); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); tes.setTranslation(0, 0, 0); GlStateManager.popMatrix(); }
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(); }