IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState( this.getDefaultState() );
IBakedModel model = dispatcher.getModelForState( blockState ); try
IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState( this.getDefaultState() );
/** * Gets a baked model for the passed state. This model is pulled from the baked model * store. * * @param state The state to get the model for. * @return The model for that state. */ public static IBakedModel getModelForState (IBlockState state) { return Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(state); }
@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(); }
public static void renderBlockAt(Minecraft mc, IBlockState state, IBlockAccess world, BlockPos pos, BufferBuilder renderer, @Nullable IBakedModel modelOverride) { BlockRendererDispatcher dispatcher = mc.getBlockRendererDispatcher(); try { EnumBlockRenderType renderType = state.getRenderType(); if (renderType == EnumBlockRenderType.MODEL) { if (modelOverride == null) { modelOverride = dispatcher.getModelForState(state); } dispatcher.getBlockModelRenderer().renderModel(world, modelOverride, state, pos, renderer, false); } } catch (Throwable ignored) { } }
public void renderBlock(@Nonnull IBlockState state, @Nonnull BlockPos pos, @Nonnull IBlockAccess blockAccess, @Nonnull BufferBuilder worldRendererIn) { try { BlockRendererDispatcher blockrendererdispatcher = mc.getBlockRendererDispatcher(); EnumBlockRenderType type = state.getRenderType(); if (type != EnumBlockRenderType.MODEL) { blockrendererdispatcher.renderBlock(state, pos, blockAccess, worldRendererIn); return; } // We only want to change one param here, the check sides IBakedModel ibakedmodel = blockrendererdispatcher.getModelForState(state); state = state.getBlock().getExtendedState(state, world, pos); blockrendererdispatcher.getBlockModelRenderer().renderModel(blockAccess, ibakedmodel, state, pos, worldRendererIn, false); } catch (Throwable throwable) { // Just bury a render issue here, it is only the IO screen } }
public void renderBlock(@Nonnull IBlockState state, @Nonnull BlockPos pos, @Nonnull Multiblock mb, @Nonnull BufferBuilder worldRendererIn) { try { BlockRendererDispatcher blockrendererdispatcher = mc.getBlockRendererDispatcher(); EnumBlockRenderType type = state.getRenderType(); if (type != EnumBlockRenderType.MODEL) { blockrendererdispatcher.renderBlock(state, pos, mb, worldRendererIn); return; } // We only want to change one param here, the check sides IBakedModel ibakedmodel = blockrendererdispatcher.getModelForState(state); state = state.getBlock().getExtendedState(state, mb, pos); blockrendererdispatcher.getBlockModelRenderer().renderModel(mb, ibakedmodel, state, pos, worldRendererIn, false); } catch (Exception e) { throw new RuntimeException(e); } }
IBakedModel model = dispatcher.getModelForState( blockState );
public static void addMapToBuffer(String UUID) { // long time = System.nanoTime(); List<BlockMap> blockMapList = GadgetCopyPaste.getBlockMapList(tagMap.get(UUID)); BlockRendererDispatcher dispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); ToolDireBuffer bufferBuilder = new ToolDireBuffer(2097152); bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); for (BlockMap blockMap : blockMapList) { IBlockState renderBlockState = blockMap.state; if (!(renderBlockState.equals(Blocks.AIR.getDefaultState()))) { IBakedModel model = dispatcher.getModelForState(renderBlockState); dispatcher.getBlockModelRenderer().renderModelFlat(Minecraft.getMinecraft().world, model, renderBlockState, new BlockPos(blockMap.xOffset, blockMap.yOffset, blockMap.zOffset), bufferBuilder, false, 0L); } } bufferBuilder.finishDrawing(); bufferMap.put(UUID, bufferBuilder); //System.out.printf("Created %d Vertexes for %d blocks in %.2f ms%n", bufferBuilder.getVertexCount(), blockMapList.size(), (System.nanoTime() - time) * 1e-6); }
private static void generateRenderDataFor(BufferBuilder BufferBuilder, Tessellator tessellator, World world, IBlockState state) { GL11.glPushMatrix(); BufferBuilder.begin(7, DefaultVertexFormats.BLOCK); BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); blockrendererdispatcher.getBlockModelRenderer().renderModel(world, blockrendererdispatcher.getModelForState(state), state, BlockPos.ORIGIN, BufferBuilder, false, 0); BufferBuilder.State toReturn = BufferBuilder.getVertexState(); tessellator.draw(); GL11.glPopMatrix(); blockstateToVertexData.put(state, toReturn); }
public void renderBlock(IBlockState state, BlockPos pos, IBlockAccess blockAccess, BufferBuilder worldRendererIn) { try { BlockRendererDispatcher blockrendererdispatcher = mc.getBlockRendererDispatcher(); EnumBlockRenderType type = state.getRenderType(); if (type != EnumBlockRenderType.MODEL) { blockrendererdispatcher.renderBlock(state, pos, blockAccess, worldRendererIn); return; } IBakedModel ibakedmodel = blockrendererdispatcher.getModelForState(state); state = state.getBlock().getExtendedState(state, world, pos); blockrendererdispatcher.getBlockModelRenderer().renderModel(blockAccess, ibakedmodel, state, pos, worldRendererIn, false); } catch (Throwable throwable) { } } private void setGlStateForPass(BlockRenderLayer layer, boolean isNeighbour) {
protected static void addCover(List<BakedQuad> quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, @Nullable IExtendedBlockState state, boolean handle) { if (cover == null) { return; } IBlockState coverState = CoverManager.getBlockState(cover.getStack()); if (coverState == null) { return; } boolean hasUp = false, hasDown = false, hasEast = false, hasWest = false; if (state != null) { hasUp = state.getValue(BlockCable.COVER_UP) != null; hasDown = state.getValue(BlockCable.COVER_DOWN) != null; hasEast = state.getValue(BlockCable.COVER_EAST) != null; hasWest = state.getValue(BlockCable.COVER_WEST) != null; } TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand); switch (cover.getType()) { case NORMAL: addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle); break; case HOLLOW: addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide)); break; } }
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 static void renderStateInWorld(IBlockState state, IBlockAccess world, BlockPos pos, float brightness){ Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(state); GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F); int i = Minecraft.getMinecraft().getBlockColors().colorMultiplier(state, world, pos, 0); float r = (float) (i >> 16 & 255) / 255F; float g = (float) (i >> 8 & 255) / 255F; float b = (float) (i & 255) / 255F; Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModelBrightnessColor(state, model, brightness, r, g, b); }
@SuppressWarnings("null") public void spawnCompletionFX(EntityPlayer player, ItemStack chisel, IBlockState source) { SoundUtil.playSound(player, getPos(), SoundUtil.getSound(player, chisel, source)); if (chisel.isEmpty()) { getWorld().playSound(player, pos, SoundEvents.ENTITY_ITEM_BREAK, SoundCategory.BLOCKS, 0.8F, 0.8F + this.world.rand.nextFloat() * 0.4F); } int i = 3; float mid = i / 2f; for (int j = 0; j < i; ++j) { for (int k = 0; k < i; ++k) { for (int l = 0; l < i; ++l) { double vx = (mid - j) * 0.05; double vz = (mid - l) * 0.05; ((ParticleDigging) Minecraft.getMinecraft().effectRenderer.spawnEffectParticle( EnumParticleTypes.BLOCK_CRACK.getParticleID(), pos.getX() + 0.5, pos.getY() + 10/16D, pos.getZ() + 0.5, vx, 0, vz, Block.getIdFromBlock(source.getBlock()))) .setBlockPos(pos).setParticleTexture(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(source).getParticleTexture()); } } } } }
public static void addDestroyEffects(World world, BlockPos pos, IBlockState state) { state = state.getActualState(world, pos); int i = 4; TextureAtlasSprite texture = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(state).getParticleTexture(); for (int j = 0; j < i; ++j) { for (int k = 0; k < i; ++k) { for (int l = 0; l < i; ++l) { double d0 = (double) pos.getX() + ((double) j + 0.5D) / (double) i; double d1 = (double) pos.getY() + ((double) k + 0.5D) / (double) i; double d2 = (double) pos.getZ() + ((double) l + 0.5D) / (double) i; ((ParticleDigging) Minecraft.getMinecraft().effectRenderer.spawnEffectParticle(EnumParticleTypes.BLOCK_CRACK.getParticleID(), d0, d1, d2, d0 - pos.getX() - 0.5D, d1 - pos.getY() - 0.5D, d2 - pos.getZ() - 0.5D, Block.getIdFromBlock(state.getBlock()))).setBlockPos(pos).setParticleTexture(texture); } } } }
private void renderHandles(PedestalTileEntity te) { GlStateManager.pushMatrix(); GlStateManager.translate(.5, 0, .5); long angle = (System.currentTimeMillis() / 10) % 360; GlStateManager.rotate(angle, 0, 1, 0); RenderHelper.disableStandardItemLighting(); this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); if (Minecraft.isAmbientOcclusionEnabled()) { GlStateManager.shadeModel(GL11.GL_SMOOTH); } else { GlStateManager.shadeModel(GL11.GL_FLAT); } World world = te.getWorld(); // Translate back to local view coordinates so that we can do the acual rendering here GlStateManager.translate(-te.getPos().getX(), -te.getPos().getY(), -te.getPos().getZ()); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferBuilder = tessellator.getBuffer(); bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); IBlockState state = ModBlocks.pedestalBlock.getDefaultState().withProperty(PedestalBlock.IS_HANDLES, true); BlockRendererDispatcher dispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); IBakedModel model = dispatcher.getModelForState(state); dispatcher.getBlockModelRenderer().renderModel(world, model, state, te.getPos(), bufferBuilder, true); tessellator.draw(); RenderHelper.enableStandardItemLighting(); GlStateManager.popMatrix(); }
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(); }
@SubscribeEvent public static void preDrawHud(RenderGameOverlayEvent.Pre event) { if (event.getType() == ElementType.CROSSHAIRS) { if (transmutationResult != null) { if (FluidRegistry.lookupFluidForBlock(transmutationResult.getBlock()) != null) { TextureAtlasSprite sprite = mc.getTextureMapBlocks().getAtlasSprite(FluidRegistry.lookupFluidForBlock(transmutationResult.getBlock()).getFlowing().toString()); mc.renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); BufferBuilder wr = Tessellator.getInstance().getBuffer(); wr.begin(7, DefaultVertexFormats.POSITION_TEX); wr.pos(0, 0, 0).tex(sprite.getMinU(), sprite.getMinV()).endVertex(); wr.pos(0, 16, 0).tex(sprite.getMinU(), sprite.getMaxV()).endVertex(); wr.pos(16, 16, 0).tex(sprite.getMaxU(), sprite.getMaxV()).endVertex(); wr.pos(16, 0, 0).tex(sprite.getMaxU(), sprite.getMinV()).endVertex(); Tessellator.getInstance().draw(); } else { RenderHelper.enableStandardItemLighting(); IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(transmutationResult); Minecraft.getMinecraft().getRenderItem().renderItemModelIntoGUI(ItemHelper.stateToDroppedStack(transmutationResult, 1), 0, 0, model); RenderHelper.disableStandardItemLighting(); } } } }