ForgePatch/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.java.patch

74 lines
4.1 KiB
Diff

--- a/net/minecraft/client/renderer/chunk/RenderChunk.java
+++ b/net/minecraft/client/renderer/chunk/RenderChunk.java
@@ -36,7 +36,7 @@
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
-public class RenderChunk {
+public class RenderChunk implements net.minecraftforge.client.extensions.IForgeRenderChunk {
private volatile World field_178588_d;
private final WorldRenderer field_178589_e;
public static int field_178592_a;
@@ -125,7 +125,8 @@
p_178581_4_.func_178540_f().unlock();
}
- RenderChunkCache lvt_10_1_ = RenderChunkCache.func_212397_a(world, blockpos.func_177982_a(-1, -1, -1), blockpos.func_177982_a(16, 16, 16), 1);
+ RenderChunkCache lvt_10_1_ = createRegionRenderCache(world, blockpos.func_177982_a(-1, -1, -1), blockpos.func_177982_a(16, 16, 16), 1);
+ net.minecraftforge.client.MinecraftForgeClient.onRebuildChunk(this.field_178588_d, this.field_178586_f, lvt_10_1_);
VisGraph lvt_11_1_ = new VisGraph();
HashSet lvt_12_1_ = Sets.newHashSet();
if (lvt_10_1_ != null) {
@@ -142,22 +143,23 @@
lvt_11_1_.func_178606_a(blockpos$mutableblockpos);
}
- if (block.func_149716_u()) {
+ if (iblockstate.hasTileEntity()) {
TileEntity tileentity = lvt_10_1_.func_212399_a(blockpos$mutableblockpos, Chunk.EnumCreateEntityType.CHECK);
if (tileentity != null) {
TileEntityRenderer<TileEntity> tileentityrenderer = TileEntityRendererDispatcher.field_147556_a.func_147547_b(tileentity);
if (tileentityrenderer != null) {
- compiledchunk.func_178490_a(tileentity);
if (tileentityrenderer.func_188185_a(tileentity)) {
lvt_12_1_.add(tileentity);
}
+ else compiledchunk.func_178490_a(tileentity); // FORGE: Fix MC-112730
}
}
}
IFluidState ifluidstate = lvt_10_1_.func_204610_c(blockpos$mutableblockpos);
- if (!ifluidstate.func_206888_e()) {
- BlockRenderLayer blockrenderlayer1 = ifluidstate.func_180664_k();
+ for(BlockRenderLayer blockrenderlayer1 : BlockRenderLayer.values()) {
+ net.minecraftforge.client.ForgeHooksClient.setRenderLayer(blockrenderlayer1);
+ if (!ifluidstate.func_206888_e() && ifluidstate.canRenderInLayer(blockrenderlayer1)) {
int j = blockrenderlayer1.ordinal();
BufferBuilder bufferbuilder = p_178581_4_.func_178545_d().func_179039_a(j);
if (!compiledchunk.func_178492_d(blockrenderlayer1)) {
@@ -168,17 +170,18 @@
aboolean[j] |= blockrendererdispatcher.func_205318_a(blockpos$mutableblockpos, lvt_10_1_, bufferbuilder, ifluidstate);
}
- if (iblockstate.func_185901_i() != EnumBlockRenderType.INVISIBLE) {
- BlockRenderLayer blockrenderlayer2 = block.func_180664_k();
- int k = blockrenderlayer2.ordinal();
+ if (iblockstate.func_185901_i() != EnumBlockRenderType.INVISIBLE && iblockstate.canRenderInLayer(blockrenderlayer1)) {
+ int k = blockrenderlayer1.ordinal();
BufferBuilder bufferbuilder1 = p_178581_4_.func_178545_d().func_179039_a(k);
- if (!compiledchunk.func_178492_d(blockrenderlayer2)) {
- compiledchunk.func_178493_c(blockrenderlayer2);
+ if (!compiledchunk.func_178492_d(blockrenderlayer1)) {
+ compiledchunk.func_178493_c(blockrenderlayer1);
this.func_178573_a(bufferbuilder1, blockpos);
}
aboolean[k] |= blockrendererdispatcher.func_195475_a(iblockstate, blockpos$mutableblockpos, lvt_10_1_, bufferbuilder1, random);
}
+ }
+ net.minecraftforge.client.ForgeHooksClient.setRenderLayer(null);
}
for(BlockRenderLayer blockrenderlayer : BlockRenderLayer.values()) {