private void reloadChunks(Vec3i chunkPos){
if(mc.renderGlobal.viewFrustum!=null) {
storedChunks.clear();
BlockPos.PooledMutableBlockPos pos = BlockPos.PooledMutableBlockPos.retain();
for (int z = -SHADOW_RENDER_DIST; z <= SHADOW_RENDER_DIST; z++) {
for (int y = 0; y < 16; y++) {
for (int x = -SHADOW_RENDER_DIST; x <= SHADOW_RENDER_DIST; x++) {
if (Math.sqrt((x * x) + (z * z)) <= 8 && chunkPos.getY() - y <= 2) {
pos.setPos(((chunkPos.getX() + x) << 4)+8, (y << 4)+8, ((chunkPos.getZ() + z) << 4)+8);
RenderChunk rc = mc.renderGlobal.viewFrustum.getRenderChunk(pos);
if (rc != null) {
storedChunks.add(rc);
}
}
}
}
}
pos.release();
}
}
public void renderChunks(BlockRenderLayer layer){
if(renderContainer!=null && mc.renderViewEntity != null){
Vec3i chunkPos = new Vec3i(mc.renderViewEntity.chunkCoordX, mc.renderViewEntity.chunkCoordY, mc.renderViewEntity.chunkCoordZ);
if (prevChunkPos == null || !prevChunkPos.equals(chunkPos)) {
prevChunkPos = chunkPos;
reloadChunks(chunkPos);
}
for (RenderChunk rc:storedChunks) {
renderContainer.addRenderChunk(rc, layer);
}
mc.entityRenderer.enableLightmap();
if (OpenGlHelper.useVbo())
{
GlStateManager.glEnableClientState(32884);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
GlStateManager.glEnableClientState(32888);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
GlStateManager.glEnableClientState(32888);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
GlStateManager.glEnableClientState(32886);
}
renderContainer.renderChunkLayer(layer);
if (OpenGlHelper.useVbo())
{
for (VertexFormatElement vertexformatelement : DefaultVertexFormats.BLOCK.getElements())
{
VertexFormatElement.EnumUsage vertexformatelement$enumusage = vertexformatelement.getUsage();
int k1 = vertexformatelement.getIndex();
switch (vertexformatelement$enumusage)
{
case POSITION:
GlStateManager.glDisableClientState(32884);
break;
case UV:
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + k1);
GlStateManager.glDisableClientState(32888);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
break;
case COLOR:
GlStateManager.glDisableClientState(32886);
GlStateManager.resetColor();
}
}
}
mc.entityRenderer.disableLightmap();
}
}