use of net.minecraft.client.render.block.BlockRenderManager in project friends-and-foes by Faboslav.
the class MoobloomFlowerFeatureRenderer method render.
public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, T moobloomEntity, float f, float g, float h, float j, float k, float l) {
if (!moobloomEntity.isBaby() && !moobloomEntity.isInvisible()) {
BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager();
BlockState blockState = ModBlocks.BUTTERCUP.get().getDefaultState();
int overlay = LivingEntityRenderer.getOverlay(moobloomEntity, 0.0F);
MinecraftClient minecraftClient = MinecraftClient.getInstance();
boolean renderAsModel = minecraftClient.hasOutline(moobloomEntity) && moobloomEntity.isInvisible();
BakedModel bakedModel = blockRenderManager.getModel(blockState);
// Head
matrixStack.push();
this.getContextModel().getHead().rotate(matrixStack);
matrixStack.translate(0.09D, -0.6D, -0.185D);
matrixStack.scale(-0.8F, -0.8F, 0.8F);
matrixStack.translate(-0.5D, -0.5D, -0.5D);
this.renderFlower(matrixStack, vertexConsumerProvider, light, renderAsModel, blockRenderManager, blockState, overlay, bakedModel);
matrixStack.pop();
// Body
matrixStack.push();
matrixStack.translate(0.22D, -0.28D, -0.06D);
matrixStack.scale(-0.8F, -0.8F, 0.8F);
matrixStack.translate(-0.5D, -0.5D, -0.5D);
this.renderFlower(matrixStack, vertexConsumerProvider, light, renderAsModel, blockRenderManager, blockState, overlay, bakedModel);
matrixStack.pop();
matrixStack.push();
matrixStack.translate(-0.2D, -0.22D, 0.01D);
matrixStack.scale(-0.8F, -0.8F, 0.8F);
matrixStack.translate(-0.5D, -0.5D, -0.5D);
this.renderFlower(matrixStack, vertexConsumerProvider, light, renderAsModel, blockRenderManager, blockState, overlay, bakedModel);
matrixStack.pop();
matrixStack.push();
matrixStack.translate(0.03D, -0.28D, 0.47D);
matrixStack.scale(-0.8F, -0.8F, 0.8F);
matrixStack.translate(-0.5D, -0.5D, -0.5D);
this.renderFlower(matrixStack, vertexConsumerProvider, light, renderAsModel, blockRenderManager, blockState, overlay, bakedModel);
matrixStack.pop();
}
}
use of net.minecraft.client.render.block.BlockRenderManager in project DawnAPI by DawnTeamMC.
the class FlyingBlockEntityRenderer method render.
@Override
public void render(FlyingBlockEntity entity, float entityYaw, float partialTicks, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light) {
BlockState blockState = entity.getBlockState();
if (blockState.getRenderType() == BlockRenderType.MODEL) {
World world = entity.getWorldClient();
if (blockState != world.getBlockState(entity.getBlockPos()) && blockState.getRenderType() != BlockRenderType.INVISIBLE) {
matrixStack.push();
BlockPos blockPos = new BlockPos(entity.getX(), entity.getBoundingBox().maxY, entity.getZ());
matrixStack.translate(-0.5D, 0.0D, -0.5D);
BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager();
blockRenderManager.getModelRenderer().render(world, blockRenderManager.getModel(blockState), blockState, blockPos, matrixStack, vertexConsumerProvider.getBuffer(RenderLayers.getMovingBlockLayer(blockState)), false, new Random(), blockState.getRenderingSeed(entity.getFallingBlockPos()), OverlayTexture.DEFAULT_UV);
matrixStack.pop();
super.render(entity, entityYaw, partialTicks, matrixStack, vertexConsumerProvider, light);
}
}
}
use of net.minecraft.client.render.block.BlockRenderManager in project Illager-Expansion by OhDricky.
the class MagmaEntityRender method render.
@Override
public void render(MagmaEntity MagmaEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {
matrixStack.push();
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(MathHelper.lerp(g, MagmaEntity.prevYaw, MagmaEntity.getYaw())));
matrixStack.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(MathHelper.lerp(g, MagmaEntity.prevPitch, MagmaEntity.getPitch())));
BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager();
blockRenderManager.renderBlockAsEntity(Blocks.MAGMA_BLOCK.getDefaultState(), matrixStack, vertexConsumerProvider, i, OverlayTexture.DEFAULT_UV);
matrixStack.pop();
super.render(MagmaEntity, f, g, matrixStack, vertexConsumerProvider, i);
}
use of net.minecraft.client.render.block.BlockRenderManager in project sodium-fabric by CaffeineMC.
the class MixinRebuildTask method render.
/**
* @author JellySquid
*/
@Overwrite
private Set<BlockEntity> render(float cameraX, float cameraY, float cameraZ, ChunkBuilder.ChunkData data, BlockBufferBuilderStorage buffers) {
ExtendedChunkData edata = (ExtendedChunkData) data;
BlockPos from = this.parent.getOrigin().toImmutable();
BlockPos to = from.add(15, 15, 15);
ChunkOcclusionDataBuilder occlusion = new ChunkOcclusionDataBuilder();
Set<BlockEntity> set = Sets.newHashSet();
ChunkRendererRegion world = this.region;
Vector3f translation = new Vector3f();
if (world != null) {
BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager();
int minX = from.getX();
int minY = from.getY();
int minZ = from.getZ();
int maxX = to.getX();
int maxY = to.getY();
int maxZ = to.getZ();
BlockPos.Mutable pos = new BlockPos.Mutable();
for (int z = minZ; z <= maxZ; z++) {
for (int y = minY; y <= maxY; y++) {
for (int x = minX; x <= maxX; x++) {
pos.set(x, y, z);
BlockState blockState = world.getBlockState(pos);
FluidState fluidState = blockState.getFluidState();
Block block = blockState.getBlock();
if (blockState.isFullOpaque(world, pos)) {
occlusion.markClosed(pos);
}
if (block.hasBlockEntity()) {
BlockEntity entity = world.getBlockEntity(pos, WorldChunk.CreationType.CHECK);
if (entity != null) {
this.addBlockEntity(data, set, entity);
}
}
if (!fluidState.isEmpty()) {
RenderLayer layer = RenderLayers.getFluidLayer(fluidState);
BufferBuilder builder = buffers.get(layer);
if (!builder.isBuilding()) {
builder.begin(GL11.GL_QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL);
edata.getInitializedLayers().add(layer);
}
blockRenderManager.renderFluid(pos, world, builder, fluidState);
}
if (blockState.getRenderType() != BlockRenderType.INVISIBLE) {
RenderLayer layer = RenderLayers.getBlockLayer(blockState);
BufferBuilder builder = buffers.get(layer);
if (!builder.isBuilding()) {
builder.begin(GL11.GL_QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL);
edata.getInitializedLayers().add(layer);
}
translation.set(pos.getX() & 15, pos.getY() & 15, pos.getZ() & 15);
this.pipeline.renderBlock(blockState, pos, world, translation, builder, true);
}
}
}
}
for (RenderLayer layer : edata.getInitializedLayers()) {
BufferBuilder builder = buffers.get(layer);
if (layer == RenderLayer.getTranslucent()) {
builder.sortQuads(cameraX - (float) from.getX(), cameraY - (float) from.getY(), cameraZ - (float) from.getZ());
edata.setTranslucentBufferState(builder.popState());
}
builder.end();
if (((ChunkMeshBuilder) builder).isEmpty()) {
continue;
}
edata.getNonEmptyLayers().add(layer);
}
if (edata.getNonEmptyLayers().size() > 0) {
edata.markNonEmpty();
}
}
edata.setOcclusionData(occlusion.build());
this.region = null;
this.pipeline = null;
return set;
}
use of net.minecraft.client.render.block.BlockRenderManager in project KiwiClient by TangyKiwi.
the class ChunkRebuildTaskMixin method newRender2.
private Set<BlockEntity> newRender2(float cameraX, float cameraY, float cameraZ, ChunkData data, BlockBufferBuilderStorage buffers) {
BlockPos blockPos = field_20839.getOrigin().toImmutable();
BlockPos blockPos2 = blockPos.add(15, 15, 15);
ChunkOcclusionDataBuilder chunkOcclusionDataBuilder = new ChunkOcclusionDataBuilder();
Set<BlockEntity> set = new HashSet<>();
ChunkRendererRegion chunkRendererRegion = this.region;
this.region = null;
MatrixStack matrixStack = new MatrixStack();
if (chunkRendererRegion != null) {
BlockModelRenderer.enableBrightnessCache();
Random random = new Random();
BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager();
for (BlockPos blockPos3 : BlockPos.iterate(blockPos, blockPos2)) {
BlockState blockState = chunkRendererRegion.getBlockState(blockPos3);
if (blockState.isOpaqueFullCube(chunkRendererRegion, blockPos3)) {
chunkOcclusionDataBuilder.markClosed(blockPos3);
}
if (blockState.hasBlockEntity()) {
BlockEntity blockEntityx = chunkRendererRegion.getBlockEntity(blockPos3);
if (blockEntityx != null) {
this.addBlockEntity(data, set, blockEntityx);
}
}
FluidState fluid = chunkRendererRegion.getFluidState(blockPos3);
if (!fluid.isEmpty()) {
RenderLayer renderLayer = RenderLayers.getFluidLayer(fluid);
BufferBuilder bufferBuilder = buffers.get(renderLayer);
if (data.initializedLayers.add(renderLayer)) {
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL);
}
RenderFluidEvent event = new RenderFluidEvent(fluid, blockPos3, bufferBuilder);
KiwiClient.eventBus.post(event);
if (event.isCancelled())
continue;
if (blockRenderManager.renderFluid(blockPos3, chunkRendererRegion, bufferBuilder, blockState, fluid)) {
data.empty = false;
data.nonEmptyLayers.add(renderLayer);
}
}
if (blockState.getRenderType() != BlockRenderType.INVISIBLE) {
RenderLayer renderLayer = RenderLayers.getBlockLayer(blockState);
BufferBuilder bufferBuilder = buffers.get(renderLayer);
if (data.initializedLayers.add(renderLayer)) {
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL);
}
RenderBlockEvent.Tesselate event = new RenderBlockEvent.Tesselate(blockState, blockPos3, matrixStack, bufferBuilder);
KiwiClient.eventBus.post(event);
if (event.isCancelled())
continue;
matrixStack.push();
matrixStack.translate(blockPos3.getX() & 15, blockPos3.getY() & 15, blockPos3.getZ() & 15);
if (blockRenderManager.renderBlock(blockState, blockPos3, chunkRendererRegion, matrixStack, bufferBuilder, true, random)) {
data.empty = false;
data.nonEmptyLayers.add(renderLayer);
}
bufferBuilder.unfixColor();
matrixStack.pop();
}
}
if (data.nonEmptyLayers.contains(RenderLayer.getTranslucent())) {
BufferBuilder bufferBuilder2 = buffers.get(RenderLayer.getTranslucent());
bufferBuilder2.sortFrom(cameraX - (float) blockPos.getX(), cameraY - (float) blockPos.getY(), cameraZ - (float) blockPos.getZ());
data.bufferState = bufferBuilder2.popState();
}
Stream<RenderLayer> var10000 = data.initializedLayers.stream();
Objects.requireNonNull(buffers);
var10000.map(buffers::get).forEach(BufferBuilder::end);
BlockModelRenderer.disableBrightnessCache();
}
data.occlusionGraph = chunkOcclusionDataBuilder.build();
return set;
}
Aggregations