Guest User

RenderHelper

a guest
Jun 14th, 2016
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 120.39 KB | None | 0 0
  1.     public static boolean renderStandardBlock(RenderBlocks renderBlocks, Block p_147784_1_, int p_147784_2_, int p_147784_3_, int p_147784_4_)
  2.     {
  3.         int l = p_147784_1_.colorMultiplier(renderBlocks.blockAccess, p_147784_2_, p_147784_3_, p_147784_4_);
  4.         float f = (float)(l >> 16 & 255) / 255.0F;
  5.         float f1 = (float)(l >> 8 & 255) / 255.0F;
  6.         float f2 = (float)(l & 255) / 255.0F;
  7.  
  8.         if (EntityRenderer.anaglyphEnable)
  9.         {
  10.             float f3 = (f * 30.0F + f1 * 59.0F + f2 * 11.0F) / 100.0F;
  11.             float f4 = (f * 30.0F + f1 * 70.0F) / 100.0F;
  12.             float f5 = (f * 30.0F + f2 * 70.0F) / 100.0F;
  13.             f = f3;
  14.             f1 = f4;
  15.             f2 = f5;
  16.         }
  17.  
  18.         return Minecraft.isAmbientOcclusionEnabled() && p_147784_1_.getLightValue() == 0 ? (renderBlocks.partialRenderBounds ? renderStandardBlockWithAmbientOcclusionPartial(renderBlocks, p_147784_1_, p_147784_2_, p_147784_3_, p_147784_4_, f, f1, f2) : renderStandardBlockWithAmbientOcclusion(renderBlocks, p_147784_1_, p_147784_2_, p_147784_3_, p_147784_4_, f, f1, f2)) : renderBlocks.renderStandardBlockWithColorMultiplier(p_147784_1_, p_147784_2_, p_147784_3_, p_147784_4_, f, f1, f2);
  19.     }
  20.    
  21.     public static boolean renderStandardBlockWithAmbientOcclusion(RenderBlocks renderBlocks, Block p_147751_1_, int p_147751_2_, int p_147751_3_, int p_147751_4_, float p_147751_5_, float p_147751_6_, float p_147751_7_)
  22.     {
  23.         renderBlocks.enableAO = true;
  24.         boolean flag = false;
  25.         float f3 = 0.0F;
  26.         float f4 = 0.0F;
  27.         float f5 = 0.0F;
  28.         float f6 = 0.0F;
  29.         boolean flag1 = true;
  30.         int l = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_);
  31.         Tessellator tessellator = Tessellator.instance;
  32.         tessellator.setBrightness(983055);
  33.  
  34.         if (renderBlocks.getBlockIcon(p_147751_1_).getIconName().equals("grass_top"))
  35.         {
  36.             flag1 = false;
  37.         }
  38.         else if (renderBlocks.hasOverrideBlockTexture())
  39.         {
  40.             flag1 = false;
  41.         }
  42.  
  43.         boolean flag2;
  44.         boolean flag3;
  45.         boolean flag4;
  46.         boolean flag5;
  47.         int i1;
  48.         float f7;
  49.  
  50.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_, 0))
  51.         {
  52.             if (renderBlocks.renderMinY <= 0.0D)
  53.             {
  54.                 --p_147751_3_;
  55.             }
  56.  
  57.             renderBlocks.aoBrightnessXYNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_);
  58.             renderBlocks.aoBrightnessYZNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1);
  59.             renderBlocks.aoBrightnessYZNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1);
  60.             renderBlocks.aoBrightnessXYPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_);
  61.             renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  62.             renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  63.             renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  64.             renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  65.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_).getCanBlockGrass();
  66.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_).getCanBlockGrass();
  67.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1).getCanBlockGrass();
  68.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1).getCanBlockGrass();
  69.  
  70.             if (!flag5 && !flag3)
  71.             {
  72.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXYNN;
  73.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXYNN;
  74.             }
  75.             else
  76.             {
  77.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  78.                 renderBlocks.aoBrightnessXYZNNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1);
  79.             }
  80.  
  81.             if (!flag4 && !flag3)
  82.             {
  83.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXYNN;
  84.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXYNN;
  85.             }
  86.             else
  87.             {
  88.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  89.                 renderBlocks.aoBrightnessXYZNNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1);
  90.             }
  91.  
  92.             if (!flag5 && !flag2)
  93.             {
  94.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXYPN;
  95.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXYPN;
  96.             }
  97.             else
  98.             {
  99.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  100.                 renderBlocks.aoBrightnessXYZPNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1);
  101.             }
  102.  
  103.             if (!flag4 && !flag2)
  104.             {
  105.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXYPN;
  106.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXYPN;
  107.             }
  108.             else
  109.             {
  110.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  111.                 renderBlocks.aoBrightnessXYZPNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1);
  112.             }
  113.  
  114.             if (renderBlocks.renderMinY <= 0.0D)
  115.             {
  116.                 ++p_147751_3_;
  117.             }
  118.  
  119.             i1 = l;
  120.  
  121.             if (renderBlocks.renderMinY <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).isOpaqueCube())
  122.             {
  123.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_);
  124.             }
  125.  
  126.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  127.             f3 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchYZNP + f7) / 4.0F;
  128.             f6 = (renderBlocks.aoLightValueScratchYZNP + f7 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXYPN) / 4.0F;
  129.             f5 = (f7 + renderBlocks.aoLightValueScratchYZNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNN) / 4.0F;
  130.             f4 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNN + f7 + renderBlocks.aoLightValueScratchYZNN) / 4.0F;
  131.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessYZNP, i1);
  132.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNP, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXYPN, i1);
  133.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNN, renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXYZPNN, i1);
  134.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessYZNN, i1);
  135.  
  136.             if (flag1)
  137.             {
  138.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_ * 0.5F;
  139.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_ * 0.5F;
  140.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_ * 0.5F;
  141.             }
  142.             else
  143.             {
  144.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.5F;
  145.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.5F;
  146.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.5F;
  147.             }
  148.  
  149.             renderBlocks.colorRedTopLeft *= f3;
  150.             renderBlocks.colorGreenTopLeft *= f3;
  151.             renderBlocks.colorBlueTopLeft *= f3;
  152.             renderBlocks.colorRedBottomLeft *= f4;
  153.             renderBlocks.colorGreenBottomLeft *= f4;
  154.             renderBlocks.colorBlueBottomLeft *= f4;
  155.             renderBlocks.colorRedBottomRight *= f5;
  156.             renderBlocks.colorGreenBottomRight *= f5;
  157.             renderBlocks.colorBlueBottomRight *= f5;
  158.             renderBlocks.colorRedTopRight *= f6;
  159.             renderBlocks.colorGreenTopRight *= f6;
  160.             renderBlocks.colorBlueTopRight *= f6;
  161.             renderBlocks.renderFaceYNeg(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 0));
  162.             flag = true;
  163.         }
  164.  
  165.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_, 1))
  166.         {
  167.             if (renderBlocks.renderMaxY >= 1.0D)
  168.             {
  169.                 ++p_147751_3_;
  170.             }
  171.  
  172.             renderBlocks.aoBrightnessXYNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_);
  173.             renderBlocks.aoBrightnessXYPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_);
  174.             renderBlocks.aoBrightnessYZPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1);
  175.             renderBlocks.aoBrightnessYZPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1);
  176.             renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  177.             renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  178.             renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  179.             renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  180.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_).getCanBlockGrass();
  181.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_).getCanBlockGrass();
  182.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1).getCanBlockGrass();
  183.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1).getCanBlockGrass();
  184.  
  185.             if (!flag5 && !flag3)
  186.             {
  187.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXYNP;
  188.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXYNP;
  189.             }
  190.             else
  191.             {
  192.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  193.                 renderBlocks.aoBrightnessXYZNPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1);
  194.             }
  195.  
  196.             if (!flag5 && !flag2)
  197.             {
  198.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXYPP;
  199.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXYPP;
  200.             }
  201.             else
  202.             {
  203.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  204.                 renderBlocks.aoBrightnessXYZPPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1);
  205.             }
  206.  
  207.             if (!flag4 && !flag3)
  208.             {
  209.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXYNP;
  210.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXYNP;
  211.             }
  212.             else
  213.             {
  214.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  215.                 renderBlocks.aoBrightnessXYZNPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1);
  216.             }
  217.  
  218.             if (!flag4 && !flag2)
  219.             {
  220.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXYPP;
  221.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXYPP;
  222.             }
  223.             else
  224.             {
  225.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  226.                 renderBlocks.aoBrightnessXYZPPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1);
  227.             }
  228.  
  229.             if (renderBlocks.renderMaxY >= 1.0D)
  230.             {
  231.                 --p_147751_3_;
  232.             }
  233.  
  234.             i1 = l;
  235.  
  236.             if (renderBlocks.renderMaxY >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).isOpaqueCube())
  237.             {
  238.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_);
  239.             }
  240.  
  241.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  242.             f6 = (renderBlocks.aoLightValueScratchXYZNPP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchYZPP + f7) / 4.0F;
  243.             f3 = (renderBlocks.aoLightValueScratchYZPP + f7 + renderBlocks.aoLightValueScratchXYZPPP + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
  244.             f4 = (f7 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
  245.             f5 = (renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPN + f7 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
  246.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNPP, renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessYZPP, i1);
  247.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPP, renderBlocks.aoBrightnessXYZPPP, renderBlocks.aoBrightnessXYPP, i1);
  248.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPN, renderBlocks.aoBrightnessXYPP, renderBlocks.aoBrightnessXYZPPN, i1);
  249.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessYZPN, i1);
  250.             renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_;
  251.             renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_;
  252.             renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_;
  253.             renderBlocks.colorRedTopLeft *= f3;
  254.             renderBlocks.colorGreenTopLeft *= f3;
  255.             renderBlocks.colorBlueTopLeft *= f3;
  256.             renderBlocks.colorRedBottomLeft *= f4;
  257.             renderBlocks.colorGreenBottomLeft *= f4;
  258.             renderBlocks.colorBlueBottomLeft *= f4;
  259.             renderBlocks.colorRedBottomRight *= f5;
  260.             renderBlocks.colorGreenBottomRight *= f5;
  261.             renderBlocks.colorBlueBottomRight *= f5;
  262.             renderBlocks.colorRedTopRight *= f6;
  263.             renderBlocks.colorGreenTopRight *= f6;
  264.             renderBlocks.colorBlueTopRight *= f6;
  265.             renderBlocks.renderFaceYPos(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 1));
  266.             flag = true;
  267.         }
  268.  
  269.         IIcon iicon;
  270.  
  271.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1, 2))
  272.         {
  273.             if (renderBlocks.renderMinZ <= 0.0D)
  274.             {
  275.                 --p_147751_4_;
  276.             }
  277.  
  278.             renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  279.             renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  280.             renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  281.             renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  282.             renderBlocks.aoBrightnessXZNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_);
  283.             renderBlocks.aoBrightnessYZNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_);
  284.             renderBlocks.aoBrightnessYZPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_);
  285.             renderBlocks.aoBrightnessXZPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_);
  286.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1).getCanBlockGrass();
  287.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1).getCanBlockGrass();
  288.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1).getCanBlockGrass();
  289.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1).getCanBlockGrass();
  290.  
  291.             if (!flag3 && !flag5)
  292.             {
  293.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
  294.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
  295.             }
  296.             else
  297.             {
  298.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  299.                 renderBlocks.aoBrightnessXYZNNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_);
  300.             }
  301.  
  302.             if (!flag3 && !flag4)
  303.             {
  304.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
  305.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
  306.             }
  307.             else
  308.             {
  309.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  310.                 renderBlocks.aoBrightnessXYZNPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_);
  311.             }
  312.  
  313.             if (!flag2 && !flag5)
  314.             {
  315.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
  316.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
  317.             }
  318.             else
  319.             {
  320.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  321.                 renderBlocks.aoBrightnessXYZPNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_);
  322.             }
  323.  
  324.             if (!flag2 && !flag4)
  325.             {
  326.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
  327.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
  328.             }
  329.             else
  330.             {
  331.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  332.                 renderBlocks.aoBrightnessXYZPPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_);
  333.             }
  334.  
  335.             if (renderBlocks.renderMinZ <= 0.0D)
  336.             {
  337.                 ++p_147751_4_;
  338.             }
  339.  
  340.             i1 = l;
  341.  
  342.             if (renderBlocks.renderMinZ <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).isOpaqueCube())
  343.             {
  344.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1);
  345.             }
  346.  
  347.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  348.             f3 = (renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchXYZNPN + f7 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
  349.             f4 = (f7 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXZPN + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
  350.             f5 = (renderBlocks.aoLightValueScratchYZNN + f7 + renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXZPN) / 4.0F;
  351.             f6 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchYZNN + f7) / 4.0F;
  352.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessYZPN, i1);
  353.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPN, renderBlocks.aoBrightnessXZPN, renderBlocks.aoBrightnessXYZPPN, i1);
  354.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNN, renderBlocks.aoBrightnessXYZPNN, renderBlocks.aoBrightnessXZPN, i1);
  355.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessYZNN, i1);
  356.  
  357.             if (flag1)
  358.             {
  359.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_ * 0.8F;
  360.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_ * 0.8F;
  361.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_ * 0.8F;
  362.             }
  363.             else
  364.             {
  365.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.8F;
  366.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.8F;
  367.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.8F;
  368.             }
  369.  
  370.             renderBlocks.colorRedTopLeft *= f3;
  371.             renderBlocks.colorGreenTopLeft *= f3;
  372.             renderBlocks.colorBlueTopLeft *= f3;
  373.             renderBlocks.colorRedBottomLeft *= f4;
  374.             renderBlocks.colorGreenBottomLeft *= f4;
  375.             renderBlocks.colorBlueBottomLeft *= f4;
  376.             renderBlocks.colorRedBottomRight *= f5;
  377.             renderBlocks.colorGreenBottomRight *= f5;
  378.             renderBlocks.colorBlueBottomRight *= f5;
  379.             renderBlocks.colorRedTopRight *= f6;
  380.             renderBlocks.colorGreenTopRight *= f6;
  381.             renderBlocks.colorBlueTopRight *= f6;
  382.             iicon = renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 2);
  383.             renderFaceZNeg(renderBlocks, p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, iicon);
  384.  
  385.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  386.             {
  387.                 renderBlocks.colorRedTopLeft *= p_147751_5_;
  388.                 renderBlocks.colorRedBottomLeft *= p_147751_5_;
  389.                 renderBlocks.colorRedBottomRight *= p_147751_5_;
  390.                 renderBlocks.colorRedTopRight *= p_147751_5_;
  391.                 renderBlocks.colorGreenTopLeft *= p_147751_6_;
  392.                 renderBlocks.colorGreenBottomLeft *= p_147751_6_;
  393.                 renderBlocks.colorGreenBottomRight *= p_147751_6_;
  394.                 renderBlocks.colorGreenTopRight *= p_147751_6_;
  395.                 renderBlocks.colorBlueTopLeft *= p_147751_7_;
  396.                 renderBlocks.colorBlueBottomLeft *= p_147751_7_;
  397.                 renderBlocks.colorBlueBottomRight *= p_147751_7_;
  398.                 renderBlocks.colorBlueTopRight *= p_147751_7_;
  399.                 renderFaceZNeg(renderBlocks, p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, BlockGrass.getIconSideOverlay());
  400.             }
  401.  
  402.             flag = true;
  403.         }
  404.  
  405.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1, 3))
  406.         {
  407.             if (renderBlocks.renderMaxZ >= 1.0D)
  408.             {
  409.                 ++p_147751_4_;
  410.             }
  411.  
  412.             renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  413.             renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  414.             renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  415.             renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  416.             renderBlocks.aoBrightnessXZNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_);
  417.             renderBlocks.aoBrightnessXZPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_);
  418.             renderBlocks.aoBrightnessYZNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_);
  419.             renderBlocks.aoBrightnessYZPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_);
  420.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1).getCanBlockGrass();
  421.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1).getCanBlockGrass();
  422.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1).getCanBlockGrass();
  423.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1).getCanBlockGrass();
  424.  
  425.             if (!flag3 && !flag5)
  426.             {
  427.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
  428.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
  429.             }
  430.             else
  431.             {
  432.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  433.                 renderBlocks.aoBrightnessXYZNNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_);
  434.             }
  435.  
  436.             if (!flag3 && !flag4)
  437.             {
  438.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
  439.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
  440.             }
  441.             else
  442.             {
  443.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  444.                 renderBlocks.aoBrightnessXYZNPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_);
  445.             }
  446.  
  447.             if (!flag2 && !flag5)
  448.             {
  449.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
  450.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
  451.             }
  452.             else
  453.             {
  454.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  455.                 renderBlocks.aoBrightnessXYZPNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_);
  456.             }
  457.  
  458.             if (!flag2 && !flag4)
  459.             {
  460.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
  461.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
  462.             }
  463.             else
  464.             {
  465.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  466.                 renderBlocks.aoBrightnessXYZPPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_);
  467.             }
  468.  
  469.             if (renderBlocks.renderMaxZ >= 1.0D)
  470.             {
  471.                 --p_147751_4_;
  472.             }
  473.  
  474.             i1 = l;
  475.  
  476.             if (renderBlocks.renderMaxZ >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).isOpaqueCube())
  477.             {
  478.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1);
  479.             }
  480.  
  481.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  482.             f3 = (renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYZNPP + f7 + renderBlocks.aoLightValueScratchYZPP) / 4.0F;
  483.             f6 = (f7 + renderBlocks.aoLightValueScratchYZPP + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
  484.             f5 = (renderBlocks.aoLightValueScratchYZNP + f7 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
  485.             f4 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchYZNP + f7) / 4.0F;
  486.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessXYZNPP, renderBlocks.aoBrightnessYZPP, i1);
  487.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPP, renderBlocks.aoBrightnessXZPP, renderBlocks.aoBrightnessXYZPPP, i1);
  488.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNP, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXZPP, i1);
  489.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessYZNP, i1);
  490.  
  491.             if (flag1)
  492.             {
  493.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_ * 0.8F;
  494.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_ * 0.8F;
  495.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_ * 0.8F;
  496.             }
  497.             else
  498.             {
  499.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.8F;
  500.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.8F;
  501.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.8F;
  502.             }
  503.  
  504.             renderBlocks.colorRedTopLeft *= f3;
  505.             renderBlocks.colorGreenTopLeft *= f3;
  506.             renderBlocks.colorBlueTopLeft *= f3;
  507.             renderBlocks.colorRedBottomLeft *= f4;
  508.             renderBlocks.colorGreenBottomLeft *= f4;
  509.             renderBlocks.colorBlueBottomLeft *= f4;
  510.             renderBlocks.colorRedBottomRight *= f5;
  511.             renderBlocks.colorGreenBottomRight *= f5;
  512.             renderBlocks.colorBlueBottomRight *= f5;
  513.             renderBlocks.colorRedTopRight *= f6;
  514.             renderBlocks.colorGreenTopRight *= f6;
  515.             renderBlocks.colorBlueTopRight *= f6;
  516.             iicon = renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 3);
  517.             renderBlocks.renderFaceZPos(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 3));
  518.  
  519.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  520.             {
  521.                 renderBlocks.colorRedTopLeft *= p_147751_5_;
  522.                 renderBlocks.colorRedBottomLeft *= p_147751_5_;
  523.                 renderBlocks.colorRedBottomRight *= p_147751_5_;
  524.                 renderBlocks.colorRedTopRight *= p_147751_5_;
  525.                 renderBlocks.colorGreenTopLeft *= p_147751_6_;
  526.                 renderBlocks.colorGreenBottomLeft *= p_147751_6_;
  527.                 renderBlocks.colorGreenBottomRight *= p_147751_6_;
  528.                 renderBlocks.colorGreenTopRight *= p_147751_6_;
  529.                 renderBlocks.colorBlueTopLeft *= p_147751_7_;
  530.                 renderBlocks.colorBlueBottomLeft *= p_147751_7_;
  531.                 renderBlocks.colorBlueBottomRight *= p_147751_7_;
  532.                 renderBlocks.colorBlueTopRight *= p_147751_7_;
  533.                 renderBlocks.renderFaceZPos(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, BlockGrass.getIconSideOverlay());
  534.             }
  535.  
  536.             flag = true;
  537.         }
  538.  
  539.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_, 4))
  540.         {
  541.             if (renderBlocks.renderMinX <= 0.0D)
  542.             {
  543.                 --p_147751_2_;
  544.             }
  545.  
  546.             renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  547.             renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  548.             renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  549.             renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  550.             renderBlocks.aoBrightnessXYNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_);
  551.             renderBlocks.aoBrightnessXZNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1);
  552.             renderBlocks.aoBrightnessXZNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1);
  553.             renderBlocks.aoBrightnessXYNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_);
  554.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ + 1, p_147751_4_).getCanBlockGrass();
  555.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_ - 1, p_147751_4_).getCanBlockGrass();
  556.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ - 1).getCanBlockGrass();
  557.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_ + 1).getCanBlockGrass();
  558.  
  559.             if (!flag4 && !flag3)
  560.             {
  561.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
  562.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
  563.             }
  564.             else
  565.             {
  566.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  567.                 renderBlocks.aoBrightnessXYZNNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1);
  568.             }
  569.  
  570.             if (!flag5 && !flag3)
  571.             {
  572.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
  573.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
  574.             }
  575.             else
  576.             {
  577.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  578.                 renderBlocks.aoBrightnessXYZNNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1);
  579.             }
  580.  
  581.             if (!flag4 && !flag2)
  582.             {
  583.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
  584.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
  585.             }
  586.             else
  587.             {
  588.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  589.                 renderBlocks.aoBrightnessXYZNPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1);
  590.             }
  591.  
  592.             if (!flag5 && !flag2)
  593.             {
  594.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
  595.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
  596.             }
  597.             else
  598.             {
  599.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  600.                 renderBlocks.aoBrightnessXYZNPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1);
  601.             }
  602.  
  603.             if (renderBlocks.renderMinX <= 0.0D)
  604.             {
  605.                 ++p_147751_2_;
  606.             }
  607.  
  608.             i1 = l;
  609.  
  610.             if (renderBlocks.renderMinX <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).isOpaqueCube())
  611.             {
  612.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ - 1, p_147751_3_, p_147751_4_);
  613.             }
  614.  
  615.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_ - 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  616.             f6 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNP + f7 + renderBlocks.aoLightValueScratchXZNP) / 4.0F;
  617.             f3 = (f7 + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPP) / 4.0F;
  618.             f4 = (renderBlocks.aoLightValueScratchXZNN + f7 + renderBlocks.aoLightValueScratchXYZNPN + renderBlocks.aoLightValueScratchXYNP) / 4.0F;
  619.             f5 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXZNN + f7) / 4.0F;
  620.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXZNP, i1);
  621.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessXYZNPP, i1);
  622.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessXYNP, i1);
  623.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXZNN, i1);
  624.  
  625.             if (flag1)
  626.             {
  627.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_ * 0.6F;
  628.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_ * 0.6F;
  629.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_ * 0.6F;
  630.             }
  631.             else
  632.             {
  633.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.6F;
  634.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.6F;
  635.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.6F;
  636.             }
  637.  
  638.             renderBlocks.colorRedTopLeft *= f3;
  639.             renderBlocks.colorGreenTopLeft *= f3;
  640.             renderBlocks.colorBlueTopLeft *= f3;
  641.             renderBlocks.colorRedBottomLeft *= f4;
  642.             renderBlocks.colorGreenBottomLeft *= f4;
  643.             renderBlocks.colorBlueBottomLeft *= f4;
  644.             renderBlocks.colorRedBottomRight *= f5;
  645.             renderBlocks.colorGreenBottomRight *= f5;
  646.             renderBlocks.colorBlueBottomRight *= f5;
  647.             renderBlocks.colorRedTopRight *= f6;
  648.             renderBlocks.colorGreenTopRight *= f6;
  649.             renderBlocks.colorBlueTopRight *= f6;
  650.             iicon = renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 4);
  651.             renderBlocks.renderFaceXNeg(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, iicon);
  652.  
  653.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  654.             {
  655.                 renderBlocks.colorRedTopLeft *= p_147751_5_;
  656.                 renderBlocks.colorRedBottomLeft *= p_147751_5_;
  657.                 renderBlocks.colorRedBottomRight *= p_147751_5_;
  658.                 renderBlocks.colorRedTopRight *= p_147751_5_;
  659.                 renderBlocks.colorGreenTopLeft *= p_147751_6_;
  660.                 renderBlocks.colorGreenBottomLeft *= p_147751_6_;
  661.                 renderBlocks.colorGreenBottomRight *= p_147751_6_;
  662.                 renderBlocks.colorGreenTopRight *= p_147751_6_;
  663.                 renderBlocks.colorBlueTopLeft *= p_147751_7_;
  664.                 renderBlocks.colorBlueBottomLeft *= p_147751_7_;
  665.                 renderBlocks.colorBlueBottomRight *= p_147751_7_;
  666.                 renderBlocks.colorBlueTopRight *= p_147751_7_;
  667.                 renderBlocks.renderFaceXNeg(p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, BlockGrass.getIconSideOverlay());
  668.             }
  669.  
  670.             flag = true;
  671.         }
  672.  
  673.         if (renderBlocks.renderAllFaces || p_147751_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_, 5))
  674.         {
  675.             if (renderBlocks.renderMaxX >= 1.0D)
  676.             {
  677.                 ++p_147751_2_;
  678.             }
  679.  
  680.             renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_).getAmbientOcclusionLightValue();
  681.             renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  682.             renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  683.             renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_).getAmbientOcclusionLightValue();
  684.             renderBlocks.aoBrightnessXYPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_);
  685.             renderBlocks.aoBrightnessXZPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ - 1);
  686.             renderBlocks.aoBrightnessXZPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_ + 1);
  687.             renderBlocks.aoBrightnessXYPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_);
  688.             flag2 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ + 1, p_147751_4_).getCanBlockGrass();
  689.             flag3 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_ - 1, p_147751_4_).getCanBlockGrass();
  690.             flag4 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ + 1).getCanBlockGrass();
  691.             flag5 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_ - 1).getCanBlockGrass();
  692.  
  693.             if (!flag3 && !flag5)
  694.             {
  695.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
  696.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
  697.             }
  698.             else
  699.             {
  700.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  701.                 renderBlocks.aoBrightnessXYZPNN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_ - 1);
  702.             }
  703.  
  704.             if (!flag3 && !flag4)
  705.             {
  706.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
  707.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
  708.             }
  709.             else
  710.             {
  711.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  712.                 renderBlocks.aoBrightnessXYZPNP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ - 1, p_147751_4_ + 1);
  713.             }
  714.  
  715.             if (!flag2 && !flag5)
  716.             {
  717.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
  718.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
  719.             }
  720.             else
  721.             {
  722.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1).getAmbientOcclusionLightValue();
  723.                 renderBlocks.aoBrightnessXYZPPN = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_ - 1);
  724.             }
  725.  
  726.             if (!flag2 && !flag4)
  727.             {
  728.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
  729.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
  730.             }
  731.             else
  732.             {
  733.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1).getAmbientOcclusionLightValue();
  734.                 renderBlocks.aoBrightnessXYZPPP = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_, p_147751_3_ + 1, p_147751_4_ + 1);
  735.             }
  736.  
  737.             if (renderBlocks.renderMaxX >= 1.0D)
  738.             {
  739.                 --p_147751_2_;
  740.             }
  741.  
  742.             i1 = l;
  743.  
  744.             if (renderBlocks.renderMaxX >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).isOpaqueCube())
  745.             {
  746.                 i1 = p_147751_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147751_2_ + 1, p_147751_3_, p_147751_4_);
  747.             }
  748.  
  749.             f7 = renderBlocks.blockAccess.getBlock(p_147751_2_ + 1, p_147751_3_, p_147751_4_).getAmbientOcclusionLightValue();
  750.             f3 = (renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNP + f7 + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
  751.             f4 = (renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXZPN + f7) / 4.0F;
  752.             f5 = (renderBlocks.aoLightValueScratchXZPN + f7 + renderBlocks.aoLightValueScratchXYZPPN + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
  753.             f6 = (f7 + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
  754.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXZPP, i1);
  755.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZPP, renderBlocks.aoBrightnessXYPP, renderBlocks.aoBrightnessXYZPPP, i1);
  756.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZPN, renderBlocks.aoBrightnessXYZPPN, renderBlocks.aoBrightnessXYPP, i1);
  757.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZPNN, renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXZPN, i1);
  758.  
  759.             if (flag1)
  760.             {
  761.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147751_5_ * 0.6F;
  762.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147751_6_ * 0.6F;
  763.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147751_7_ * 0.6F;
  764.             }
  765.             else
  766.             {
  767.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.6F;
  768.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.6F;
  769.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.6F;
  770.             }
  771.  
  772.             renderBlocks.colorRedTopLeft *= f3;
  773.             renderBlocks.colorGreenTopLeft *= f3;
  774.             renderBlocks.colorBlueTopLeft *= f3;
  775.             renderBlocks.colorRedBottomLeft *= f4;
  776.             renderBlocks.colorGreenBottomLeft *= f4;
  777.             renderBlocks.colorBlueBottomLeft *= f4;
  778.             renderBlocks.colorRedBottomRight *= f5;
  779.             renderBlocks.colorGreenBottomRight *= f5;
  780.             renderBlocks.colorBlueBottomRight *= f5;
  781.             renderBlocks.colorRedTopRight *= f6;
  782.             renderBlocks.colorGreenTopRight *= f6;
  783.             renderBlocks.colorBlueTopRight *= f6;
  784.             iicon = renderBlocks.getBlockIcon(p_147751_1_, renderBlocks.blockAccess, p_147751_2_, p_147751_3_, p_147751_4_, 5);
  785.             renderFaceXPos(renderBlocks, p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, iicon);
  786.  
  787.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  788.             {
  789.                 renderBlocks.colorRedTopLeft *= p_147751_5_;
  790.                 renderBlocks.colorRedBottomLeft *= p_147751_5_;
  791.                 renderBlocks.colorRedBottomRight *= p_147751_5_;
  792.                 renderBlocks.colorRedTopRight *= p_147751_5_;
  793.                 renderBlocks.colorGreenTopLeft *= p_147751_6_;
  794.                 renderBlocks.colorGreenBottomLeft *= p_147751_6_;
  795.                 renderBlocks.colorGreenBottomRight *= p_147751_6_;
  796.                 renderBlocks.colorGreenTopRight *= p_147751_6_;
  797.                 renderBlocks.colorBlueTopLeft *= p_147751_7_;
  798.                 renderBlocks.colorBlueBottomLeft *= p_147751_7_;
  799.                 renderBlocks.colorBlueBottomRight *= p_147751_7_;
  800.                 renderBlocks.colorBlueTopRight *= p_147751_7_;
  801.                 renderFaceXPos(renderBlocks, p_147751_1_, (double)p_147751_2_, (double)p_147751_3_, (double)p_147751_4_, BlockGrass.getIconSideOverlay());
  802.             }
  803.  
  804.             flag = true;
  805.         }
  806.  
  807.         renderBlocks.enableAO = false;
  808.         return flag;
  809.     }
  810.    
  811.     public static boolean renderStandardBlockWithAmbientOcclusionPartial(RenderBlocks renderBlocks, Block p_147808_1_, int p_147808_2_, int p_147808_3_, int p_147808_4_, float p_147808_5_, float p_147808_6_, float p_147808_7_)
  812.     {
  813.         renderBlocks.enableAO = true;
  814.         boolean flag = false;
  815.         float f3 = 0.0F;
  816.         float f4 = 0.0F;
  817.         float f5 = 0.0F;
  818.         float f6 = 0.0F;
  819.         boolean flag1 = true;
  820.         int l = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_);
  821.         Tessellator tessellator = Tessellator.instance;
  822.         tessellator.setBrightness(983055);
  823.  
  824.         if (renderBlocks.getBlockIcon(p_147808_1_).getIconName().equals("grass_top"))
  825.         {
  826.             flag1 = false;
  827.         }
  828.         else if (renderBlocks.hasOverrideBlockTexture())
  829.         {
  830.             flag1 = false;
  831.         }
  832.  
  833.         boolean flag2;
  834.         boolean flag3;
  835.         boolean flag4;
  836.         boolean flag5;
  837.         int i1;
  838.         float f7;
  839.  
  840.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_, 0))
  841.         {
  842.             if (renderBlocks.renderMinY <= 0.0D)
  843.             {
  844.                 --p_147808_3_;
  845.             }
  846.  
  847.             renderBlocks.aoBrightnessXYNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_);
  848.             renderBlocks.aoBrightnessYZNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1);
  849.             renderBlocks.aoBrightnessYZNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1);
  850.             renderBlocks.aoBrightnessXYPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_);
  851.             renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  852.             renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  853.             renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  854.             renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  855.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_).getCanBlockGrass();
  856.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_).getCanBlockGrass();
  857.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1).getCanBlockGrass();
  858.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1).getCanBlockGrass();
  859.  
  860.             if (!flag5 && !flag3)
  861.             {
  862.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXYNN;
  863.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXYNN;
  864.             }
  865.             else
  866.             {
  867.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  868.                 renderBlocks.aoBrightnessXYZNNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1);
  869.             }
  870.  
  871.             if (!flag4 && !flag3)
  872.             {
  873.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXYNN;
  874.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXYNN;
  875.             }
  876.             else
  877.             {
  878.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  879.                 renderBlocks.aoBrightnessXYZNNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1);
  880.             }
  881.  
  882.             if (!flag5 && !flag2)
  883.             {
  884.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXYPN;
  885.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXYPN;
  886.             }
  887.             else
  888.             {
  889.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  890.                 renderBlocks.aoBrightnessXYZPNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1);
  891.             }
  892.  
  893.             if (!flag4 && !flag2)
  894.             {
  895.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXYPN;
  896.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXYPN;
  897.             }
  898.             else
  899.             {
  900.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  901.                 renderBlocks.aoBrightnessXYZPNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1);
  902.             }
  903.  
  904.             if (renderBlocks.renderMinY <= 0.0D)
  905.             {
  906.                 ++p_147808_3_;
  907.             }
  908.  
  909.             i1 = l;
  910.  
  911.             if (renderBlocks.renderMinY <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).isOpaqueCube())
  912.             {
  913.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_);
  914.             }
  915.  
  916.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  917.             f3 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchYZNP + f7) / 4.0F;
  918.             f6 = (renderBlocks.aoLightValueScratchYZNP + f7 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXYPN) / 4.0F;
  919.             f5 = (f7 + renderBlocks.aoLightValueScratchYZNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNN) / 4.0F;
  920.             f4 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNN + f7 + renderBlocks.aoLightValueScratchYZNN) / 4.0F;
  921.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessYZNP, i1);
  922.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNP, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXYPN, i1);
  923.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNN, renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXYZPNN, i1);
  924.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessYZNN, i1);
  925.  
  926.             if (flag1)
  927.             {
  928.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_ * 0.5F;
  929.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_ * 0.5F;
  930.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_ * 0.5F;
  931.             }
  932.             else
  933.             {
  934.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.5F;
  935.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.5F;
  936.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.5F;
  937.             }
  938.  
  939.             renderBlocks.colorRedTopLeft *= f3;
  940.             renderBlocks.colorGreenTopLeft *= f3;
  941.             renderBlocks.colorBlueTopLeft *= f3;
  942.             renderBlocks.colorRedBottomLeft *= f4;
  943.             renderBlocks.colorGreenBottomLeft *= f4;
  944.             renderBlocks.colorBlueBottomLeft *= f4;
  945.             renderBlocks.colorRedBottomRight *= f5;
  946.             renderBlocks.colorGreenBottomRight *= f5;
  947.             renderBlocks.colorBlueBottomRight *= f5;
  948.             renderBlocks.colorRedTopRight *= f6;
  949.             renderBlocks.colorGreenTopRight *= f6;
  950.             renderBlocks.colorBlueTopRight *= f6;
  951.             renderBlocks.renderFaceYNeg(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 0));
  952.             flag = true;
  953.         }
  954.  
  955.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_, 1))
  956.         {
  957.             if (renderBlocks.renderMaxY >= 1.0D)
  958.             {
  959.                 ++p_147808_3_;
  960.             }
  961.  
  962.             renderBlocks.aoBrightnessXYNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_);
  963.             renderBlocks.aoBrightnessXYPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_);
  964.             renderBlocks.aoBrightnessYZPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1);
  965.             renderBlocks.aoBrightnessYZPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1);
  966.             renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  967.             renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  968.             renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  969.             renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  970.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_).getCanBlockGrass();
  971.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_).getCanBlockGrass();
  972.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1).getCanBlockGrass();
  973.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1).getCanBlockGrass();
  974.  
  975.             if (!flag5 && !flag3)
  976.             {
  977.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXYNP;
  978.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXYNP;
  979.             }
  980.             else
  981.             {
  982.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  983.                 renderBlocks.aoBrightnessXYZNPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1);
  984.             }
  985.  
  986.             if (!flag5 && !flag2)
  987.             {
  988.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXYPP;
  989.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXYPP;
  990.             }
  991.             else
  992.             {
  993.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  994.                 renderBlocks.aoBrightnessXYZPPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1);
  995.             }
  996.  
  997.             if (!flag4 && !flag3)
  998.             {
  999.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXYNP;
  1000.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXYNP;
  1001.             }
  1002.             else
  1003.             {
  1004.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1005.                 renderBlocks.aoBrightnessXYZNPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1);
  1006.             }
  1007.  
  1008.             if (!flag4 && !flag2)
  1009.             {
  1010.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXYPP;
  1011.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXYPP;
  1012.             }
  1013.             else
  1014.             {
  1015.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1016.                 renderBlocks.aoBrightnessXYZPPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1);
  1017.             }
  1018.  
  1019.             if (renderBlocks.renderMaxY >= 1.0D)
  1020.             {
  1021.                 --p_147808_3_;
  1022.             }
  1023.  
  1024.             i1 = l;
  1025.  
  1026.             if (renderBlocks.renderMaxY >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).isOpaqueCube())
  1027.             {
  1028.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_);
  1029.             }
  1030.  
  1031.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1032.             f6 = (renderBlocks.aoLightValueScratchXYZNPP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchYZPP + f7) / 4.0F;
  1033.             f3 = (renderBlocks.aoLightValueScratchYZPP + f7 + renderBlocks.aoLightValueScratchXYZPPP + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
  1034.             f4 = (f7 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
  1035.             f5 = (renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPN + f7 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
  1036.             renderBlocks.brightnessTopRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNPP, renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessYZPP, i1);
  1037.             renderBlocks.brightnessTopLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPP, renderBlocks.aoBrightnessXYZPPP, renderBlocks.aoBrightnessXYPP, i1);
  1038.             renderBlocks.brightnessBottomLeft = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPN, renderBlocks.aoBrightnessXYPP, renderBlocks.aoBrightnessXYZPPN, i1);
  1039.             renderBlocks.brightnessBottomRight = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessYZPN, i1);
  1040.             renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_;
  1041.             renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_;
  1042.             renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_;
  1043.             renderBlocks.colorRedTopLeft *= f3;
  1044.             renderBlocks.colorGreenTopLeft *= f3;
  1045.             renderBlocks.colorBlueTopLeft *= f3;
  1046.             renderBlocks.colorRedBottomLeft *= f4;
  1047.             renderBlocks.colorGreenBottomLeft *= f4;
  1048.             renderBlocks.colorBlueBottomLeft *= f4;
  1049.             renderBlocks.colorRedBottomRight *= f5;
  1050.             renderBlocks.colorGreenBottomRight *= f5;
  1051.             renderBlocks.colorBlueBottomRight *= f5;
  1052.             renderBlocks.colorRedTopRight *= f6;
  1053.             renderBlocks.colorGreenTopRight *= f6;
  1054.             renderBlocks.colorBlueTopRight *= f6;
  1055.             renderBlocks.renderFaceYPos(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 1));
  1056.             flag = true;
  1057.         }
  1058.  
  1059.         float f8;
  1060.         float f9;
  1061.         float f10;
  1062.         float f11;
  1063.         int j1;
  1064.         int k1;
  1065.         int l1;
  1066.         int i2;
  1067.         IIcon iicon;
  1068.  
  1069.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1, 2))
  1070.         {
  1071.             if (renderBlocks.renderMinZ <= 0.0D)
  1072.             {
  1073.                 --p_147808_4_;
  1074.             }
  1075.  
  1076.             renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1077.             renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1078.             renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1079.             renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1080.             renderBlocks.aoBrightnessXZNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_);
  1081.             renderBlocks.aoBrightnessYZNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_);
  1082.             renderBlocks.aoBrightnessYZPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_);
  1083.             renderBlocks.aoBrightnessXZPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_);
  1084.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1).getCanBlockGrass();
  1085.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1).getCanBlockGrass();
  1086.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1).getCanBlockGrass();
  1087.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1).getCanBlockGrass();
  1088.  
  1089.             if (!flag3 && !flag5)
  1090.             {
  1091.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
  1092.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
  1093.             }
  1094.             else
  1095.             {
  1096.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1097.                 renderBlocks.aoBrightnessXYZNNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_);
  1098.             }
  1099.  
  1100.             if (!flag3 && !flag4)
  1101.             {
  1102.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
  1103.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
  1104.             }
  1105.             else
  1106.             {
  1107.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1108.                 renderBlocks.aoBrightnessXYZNPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_);
  1109.             }
  1110.  
  1111.             if (!flag2 && !flag5)
  1112.             {
  1113.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
  1114.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
  1115.             }
  1116.             else
  1117.             {
  1118.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1119.                 renderBlocks.aoBrightnessXYZPNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_);
  1120.             }
  1121.  
  1122.             if (!flag2 && !flag4)
  1123.             {
  1124.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
  1125.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
  1126.             }
  1127.             else
  1128.             {
  1129.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1130.                 renderBlocks.aoBrightnessXYZPPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_);
  1131.             }
  1132.  
  1133.             if (renderBlocks.renderMinZ <= 0.0D)
  1134.             {
  1135.                 ++p_147808_4_;
  1136.             }
  1137.  
  1138.             i1 = l;
  1139.  
  1140.             if (renderBlocks.renderMinZ <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).isOpaqueCube())
  1141.             {
  1142.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1);
  1143.             }
  1144.  
  1145.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1146.             f8 = (renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchXYZNPN + f7 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
  1147.             f9 = (f7 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXZPN + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
  1148.             f10 = (renderBlocks.aoLightValueScratchYZNN + f7 + renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXZPN) / 4.0F;
  1149.             f11 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchYZNN + f7) / 4.0F;
  1150.             f3 = (float)((double)f8 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX) + (double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMinX + (double)f10 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX));
  1151.             f4 = (float)((double)f8 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX) + (double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMaxX + (double)f10 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX));
  1152.             f5 = (float)((double)f8 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX) + (double)f9 * renderBlocks.renderMinY * renderBlocks.renderMaxX + (double)f10 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX));
  1153.             f6 = (float)((double)f8 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX) + (double)f9 * renderBlocks.renderMinY * renderBlocks.renderMinX + (double)f10 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX));
  1154.             j1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessYZPN, i1);
  1155.             k1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPN, renderBlocks.aoBrightnessXZPN, renderBlocks.aoBrightnessXYZPPN, i1);
  1156.             l1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNN, renderBlocks.aoBrightnessXYZPNN, renderBlocks.aoBrightnessXZPN, i1);
  1157.             i2 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessYZNN, i1);
  1158.             renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness(j1, k1, l1, i2, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX), renderBlocks.renderMaxY * renderBlocks.renderMinX, (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX, (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX));
  1159.             renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness(j1, k1, l1, i2, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX), renderBlocks.renderMaxY * renderBlocks.renderMaxX, (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX, (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX));
  1160.             renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness(j1, k1, l1, i2, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX), renderBlocks.renderMinY * renderBlocks.renderMaxX, (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX, (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX));
  1161.             renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness(j1, k1, l1, i2, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX), renderBlocks.renderMinY * renderBlocks.renderMinX, (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX, (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX));
  1162.  
  1163.             if (flag1)
  1164.             {
  1165.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_ * 0.8F;
  1166.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_ * 0.8F;
  1167.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_ * 0.8F;
  1168.             }
  1169.             else
  1170.             {
  1171.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.8F;
  1172.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.8F;
  1173.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.8F;
  1174.             }
  1175.  
  1176.             renderBlocks.colorRedTopLeft *= f3;
  1177.             renderBlocks.colorGreenTopLeft *= f3;
  1178.             renderBlocks.colorBlueTopLeft *= f3;
  1179.             renderBlocks.colorRedBottomLeft *= f4;
  1180.             renderBlocks.colorGreenBottomLeft *= f4;
  1181.             renderBlocks.colorBlueBottomLeft *= f4;
  1182.             renderBlocks.colorRedBottomRight *= f5;
  1183.             renderBlocks.colorGreenBottomRight *= f5;
  1184.             renderBlocks.colorBlueBottomRight *= f5;
  1185.             renderBlocks.colorRedTopRight *= f6;
  1186.             renderBlocks.colorGreenTopRight *= f6;
  1187.             renderBlocks.colorBlueTopRight *= f6;
  1188.             iicon = renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 2);
  1189.             renderFaceZNeg(renderBlocks, p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, iicon);
  1190.  
  1191.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  1192.             {
  1193.                 renderBlocks.colorRedTopLeft *= p_147808_5_;
  1194.                 renderBlocks.colorRedBottomLeft *= p_147808_5_;
  1195.                 renderBlocks.colorRedBottomRight *= p_147808_5_;
  1196.                 renderBlocks.colorRedTopRight *= p_147808_5_;
  1197.                 renderBlocks.colorGreenTopLeft *= p_147808_6_;
  1198.                 renderBlocks.colorGreenBottomLeft *= p_147808_6_;
  1199.                 renderBlocks.colorGreenBottomRight *= p_147808_6_;
  1200.                 renderBlocks.colorGreenTopRight *= p_147808_6_;
  1201.                 renderBlocks.colorBlueTopLeft *= p_147808_7_;
  1202.                 renderBlocks.colorBlueBottomLeft *= p_147808_7_;
  1203.                 renderBlocks.colorBlueBottomRight *= p_147808_7_;
  1204.                 renderBlocks.colorBlueTopRight *= p_147808_7_;
  1205.                 renderFaceZNeg(renderBlocks, p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, BlockGrass.getIconSideOverlay());
  1206.             }
  1207.  
  1208.             flag = true;
  1209.         }
  1210.  
  1211.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1, 3))
  1212.         {
  1213.             if (renderBlocks.renderMaxZ >= 1.0D)
  1214.             {
  1215.                 ++p_147808_4_;
  1216.             }
  1217.  
  1218.             renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1219.             renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1220.             renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1221.             renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1222.             renderBlocks.aoBrightnessXZNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_);
  1223.             renderBlocks.aoBrightnessXZPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_);
  1224.             renderBlocks.aoBrightnessYZNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_);
  1225.             renderBlocks.aoBrightnessYZPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_);
  1226.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1).getCanBlockGrass();
  1227.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1).getCanBlockGrass();
  1228.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1).getCanBlockGrass();
  1229.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1).getCanBlockGrass();
  1230.  
  1231.             if (!flag3 && !flag5)
  1232.             {
  1233.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
  1234.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
  1235.             }
  1236.             else
  1237.             {
  1238.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1239.                 renderBlocks.aoBrightnessXYZNNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_);
  1240.             }
  1241.  
  1242.             if (!flag3 && !flag4)
  1243.             {
  1244.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
  1245.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
  1246.             }
  1247.             else
  1248.             {
  1249.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1250.                 renderBlocks.aoBrightnessXYZNPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_);
  1251.             }
  1252.  
  1253.             if (!flag2 && !flag5)
  1254.             {
  1255.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
  1256.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
  1257.             }
  1258.             else
  1259.             {
  1260.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1261.                 renderBlocks.aoBrightnessXYZPNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_);
  1262.             }
  1263.  
  1264.             if (!flag2 && !flag4)
  1265.             {
  1266.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
  1267.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
  1268.             }
  1269.             else
  1270.             {
  1271.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1272.                 renderBlocks.aoBrightnessXYZPPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_);
  1273.             }
  1274.  
  1275.             if (renderBlocks.renderMaxZ >= 1.0D)
  1276.             {
  1277.                 --p_147808_4_;
  1278.             }
  1279.  
  1280.             i1 = l;
  1281.  
  1282.             if (renderBlocks.renderMaxZ >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).isOpaqueCube())
  1283.             {
  1284.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1);
  1285.             }
  1286.  
  1287.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1288.             f8 = (renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYZNPP + f7 + renderBlocks.aoLightValueScratchYZPP) / 4.0F;
  1289.             f9 = (f7 + renderBlocks.aoLightValueScratchYZPP + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
  1290.             f10 = (renderBlocks.aoLightValueScratchYZNP + f7 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
  1291.             f11 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchYZNP + f7) / 4.0F;
  1292.             f3 = (float)((double)f8 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX) + (double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMinX + (double)f10 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX));
  1293.             f4 = (float)((double)f8 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX) + (double)f9 * renderBlocks.renderMinY * renderBlocks.renderMinX + (double)f10 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX));
  1294.             f5 = (float)((double)f8 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX) + (double)f9 * renderBlocks.renderMinY * renderBlocks.renderMaxX + (double)f10 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX));
  1295.             f6 = (float)((double)f8 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX) + (double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMaxX + (double)f10 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX));
  1296.             j1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessXYZNPP, renderBlocks.aoBrightnessYZPP, i1);
  1297.             k1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZPP, renderBlocks.aoBrightnessXZPP, renderBlocks.aoBrightnessXYZPPP, i1);
  1298.             l1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessYZNP, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXZPP, i1);
  1299.             i2 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessYZNP, i1);
  1300.             renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness(j1, i2, l1, k1, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinX), (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinX), (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinX, renderBlocks.renderMaxY * renderBlocks.renderMinX);
  1301.             renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness(j1, i2, l1, k1, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinX), (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinX), (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinX, renderBlocks.renderMinY * renderBlocks.renderMinX);
  1302.             renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness(j1, i2, l1, k1, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxX), (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxX), (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxX, renderBlocks.renderMinY * renderBlocks.renderMaxX);
  1303.             renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness(j1, i2, l1, k1, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxX), (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxX), (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxX, renderBlocks.renderMaxY * renderBlocks.renderMaxX);
  1304.  
  1305.             if (flag1)
  1306.             {
  1307.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_ * 0.8F;
  1308.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_ * 0.8F;
  1309.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_ * 0.8F;
  1310.             }
  1311.             else
  1312.             {
  1313.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.8F;
  1314.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.8F;
  1315.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.8F;
  1316.             }
  1317.  
  1318.             renderBlocks.colorRedTopLeft *= f3;
  1319.             renderBlocks.colorGreenTopLeft *= f3;
  1320.             renderBlocks.colorBlueTopLeft *= f3;
  1321.             renderBlocks.colorRedBottomLeft *= f4;
  1322.             renderBlocks.colorGreenBottomLeft *= f4;
  1323.             renderBlocks.colorBlueBottomLeft *= f4;
  1324.             renderBlocks.colorRedBottomRight *= f5;
  1325.             renderBlocks.colorGreenBottomRight *= f5;
  1326.             renderBlocks.colorBlueBottomRight *= f5;
  1327.             renderBlocks.colorRedTopRight *= f6;
  1328.             renderBlocks.colorGreenTopRight *= f6;
  1329.             renderBlocks.colorBlueTopRight *= f6;
  1330.             iicon = renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 3);
  1331.             renderBlocks.renderFaceZPos(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, iicon);
  1332.  
  1333.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  1334.             {
  1335.                 renderBlocks.colorRedTopLeft *= p_147808_5_;
  1336.                 renderBlocks.colorRedBottomLeft *= p_147808_5_;
  1337.                 renderBlocks.colorRedBottomRight *= p_147808_5_;
  1338.                 renderBlocks.colorRedTopRight *= p_147808_5_;
  1339.                 renderBlocks.colorGreenTopLeft *= p_147808_6_;
  1340.                 renderBlocks.colorGreenBottomLeft *= p_147808_6_;
  1341.                 renderBlocks.colorGreenBottomRight *= p_147808_6_;
  1342.                 renderBlocks.colorGreenTopRight *= p_147808_6_;
  1343.                 renderBlocks.colorBlueTopLeft *= p_147808_7_;
  1344.                 renderBlocks.colorBlueBottomLeft *= p_147808_7_;
  1345.                 renderBlocks.colorBlueBottomRight *= p_147808_7_;
  1346.                 renderBlocks.colorBlueTopRight *= p_147808_7_;
  1347.                 renderBlocks.renderFaceZPos(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, BlockGrass.getIconSideOverlay());
  1348.             }
  1349.  
  1350.             flag = true;
  1351.         }
  1352.  
  1353.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_, 4))
  1354.         {
  1355.             if (renderBlocks.renderMinX <= 0.0D)
  1356.             {
  1357.                 --p_147808_2_;
  1358.             }
  1359.  
  1360.             renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1361.             renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1362.             renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1363.             renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1364.             renderBlocks.aoBrightnessXYNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_);
  1365.             renderBlocks.aoBrightnessXZNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1);
  1366.             renderBlocks.aoBrightnessXZNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1);
  1367.             renderBlocks.aoBrightnessXYNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_);
  1368.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ + 1, p_147808_4_).getCanBlockGrass();
  1369.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_ - 1, p_147808_4_).getCanBlockGrass();
  1370.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ - 1).getCanBlockGrass();
  1371.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_ + 1).getCanBlockGrass();
  1372.  
  1373.             if (!flag4 && !flag3)
  1374.             {
  1375.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
  1376.                 renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
  1377.             }
  1378.             else
  1379.             {
  1380.                 renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1381.                 renderBlocks.aoBrightnessXYZNNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1);
  1382.             }
  1383.  
  1384.             if (!flag5 && !flag3)
  1385.             {
  1386.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
  1387.                 renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
  1388.             }
  1389.             else
  1390.             {
  1391.                 renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1392.                 renderBlocks.aoBrightnessXYZNNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1);
  1393.             }
  1394.  
  1395.             if (!flag4 && !flag2)
  1396.             {
  1397.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
  1398.                 renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
  1399.             }
  1400.             else
  1401.             {
  1402.                 renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1403.                 renderBlocks.aoBrightnessXYZNPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1);
  1404.             }
  1405.  
  1406.             if (!flag5 && !flag2)
  1407.             {
  1408.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
  1409.                 renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
  1410.             }
  1411.             else
  1412.             {
  1413.                 renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1414.                 renderBlocks.aoBrightnessXYZNPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1);
  1415.             }
  1416.  
  1417.             if (renderBlocks.renderMinX <= 0.0D)
  1418.             {
  1419.                 ++p_147808_2_;
  1420.             }
  1421.  
  1422.             i1 = l;
  1423.  
  1424.             if (renderBlocks.renderMinX <= 0.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).isOpaqueCube())
  1425.             {
  1426.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ - 1, p_147808_3_, p_147808_4_);
  1427.             }
  1428.  
  1429.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_ - 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1430.             f8 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNP + f7 + renderBlocks.aoLightValueScratchXZNP) / 4.0F;
  1431.             f9 = (f7 + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPP) / 4.0F;
  1432.             f10 = (renderBlocks.aoLightValueScratchXZNN + f7 + renderBlocks.aoLightValueScratchXYZNPN + renderBlocks.aoLightValueScratchXYNP) / 4.0F;
  1433.             f11 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXZNN + f7) / 4.0F;
  1434.             f3 = (float)((double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMaxZ + (double)f10 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ) + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ) + (double)f8 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ);
  1435.             f4 = (float)((double)f9 * renderBlocks.renderMaxY * renderBlocks.renderMinZ + (double)f10 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ) + (double)f11 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ) + (double)f8 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ);
  1436.             f5 = (float)((double)f9 * renderBlocks.renderMinY * renderBlocks.renderMinZ + (double)f10 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ) + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ) + (double)f8 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ);
  1437.             f6 = (float)((double)f9 * renderBlocks.renderMinY * renderBlocks.renderMaxZ + (double)f10 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ) + (double)f11 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ) + (double)f8 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ);
  1438.             j1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXYZNNP, renderBlocks.aoBrightnessXZNP, i1);
  1439.             k1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNP, renderBlocks.aoBrightnessXYNP, renderBlocks.aoBrightnessXYZNPP, i1);
  1440.             l1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZNN, renderBlocks.aoBrightnessXYZNPN, renderBlocks.aoBrightnessXYNP, i1);
  1441.             i2 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZNNN, renderBlocks.aoBrightnessXYNN, renderBlocks.aoBrightnessXZNN, i1);
  1442.             renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness(k1, l1, i2, j1, renderBlocks.renderMaxY * renderBlocks.renderMaxZ, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ), (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ), (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ);
  1443.             renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness(k1, l1, i2, j1, renderBlocks.renderMaxY * renderBlocks.renderMinZ, renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ), (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ), (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ);
  1444.             renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness(k1, l1, i2, j1, renderBlocks.renderMinY * renderBlocks.renderMinZ, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ), (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ), (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ);
  1445.             renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness(k1, l1, i2, j1, renderBlocks.renderMinY * renderBlocks.renderMaxZ, renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ), (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ), (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ);
  1446.  
  1447.             if (flag1)
  1448.             {
  1449.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_ * 0.6F;
  1450.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_ * 0.6F;
  1451.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_ * 0.6F;
  1452.             }
  1453.             else
  1454.             {
  1455.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.6F;
  1456.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.6F;
  1457.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.6F;
  1458.             }
  1459.  
  1460.             renderBlocks.colorRedTopLeft *= f3;
  1461.             renderBlocks.colorGreenTopLeft *= f3;
  1462.             renderBlocks.colorBlueTopLeft *= f3;
  1463.             renderBlocks.colorRedBottomLeft *= f4;
  1464.             renderBlocks.colorGreenBottomLeft *= f4;
  1465.             renderBlocks.colorBlueBottomLeft *= f4;
  1466.             renderBlocks.colorRedBottomRight *= f5;
  1467.             renderBlocks.colorGreenBottomRight *= f5;
  1468.             renderBlocks.colorBlueBottomRight *= f5;
  1469.             renderBlocks.colorRedTopRight *= f6;
  1470.             renderBlocks.colorGreenTopRight *= f6;
  1471.             renderBlocks.colorBlueTopRight *= f6;
  1472.             iicon = renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 4);
  1473.             renderBlocks.renderFaceXNeg(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, iicon);
  1474.  
  1475.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  1476.             {
  1477.                 renderBlocks.colorRedTopLeft *= p_147808_5_;
  1478.                 renderBlocks.colorRedBottomLeft *= p_147808_5_;
  1479.                 renderBlocks.colorRedBottomRight *= p_147808_5_;
  1480.                 renderBlocks.colorRedTopRight *= p_147808_5_;
  1481.                 renderBlocks.colorGreenTopLeft *= p_147808_6_;
  1482.                 renderBlocks.colorGreenBottomLeft *= p_147808_6_;
  1483.                 renderBlocks.colorGreenBottomRight *= p_147808_6_;
  1484.                 renderBlocks.colorGreenTopRight *= p_147808_6_;
  1485.                 renderBlocks.colorBlueTopLeft *= p_147808_7_;
  1486.                 renderBlocks.colorBlueBottomLeft *= p_147808_7_;
  1487.                 renderBlocks.colorBlueBottomRight *= p_147808_7_;
  1488.                 renderBlocks.colorBlueTopRight *= p_147808_7_;
  1489.                 renderBlocks.renderFaceXNeg(p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, BlockGrass.getIconSideOverlay());
  1490.             }
  1491.  
  1492.             flag = true;
  1493.         }
  1494.  
  1495.         if (renderBlocks.renderAllFaces || p_147808_1_.shouldSideBeRendered(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_, 5))
  1496.         {
  1497.             if (renderBlocks.renderMaxX >= 1.0D)
  1498.             {
  1499.                 ++p_147808_2_;
  1500.             }
  1501.  
  1502.             renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_).getAmbientOcclusionLightValue();
  1503.             renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1504.             renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1505.             renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_).getAmbientOcclusionLightValue();
  1506.             renderBlocks.aoBrightnessXYPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_);
  1507.             renderBlocks.aoBrightnessXZPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ - 1);
  1508.             renderBlocks.aoBrightnessXZPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_ + 1);
  1509.             renderBlocks.aoBrightnessXYPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_);
  1510.             flag2 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ + 1, p_147808_4_).getCanBlockGrass();
  1511.             flag3 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_ - 1, p_147808_4_).getCanBlockGrass();
  1512.             flag4 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ + 1).getCanBlockGrass();
  1513.             flag5 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_ - 1).getCanBlockGrass();
  1514.  
  1515.             if (!flag3 && !flag5)
  1516.             {
  1517.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
  1518.                 renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
  1519.             }
  1520.             else
  1521.             {
  1522.                 renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1523.                 renderBlocks.aoBrightnessXYZPNN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_ - 1);
  1524.             }
  1525.  
  1526.             if (!flag3 && !flag4)
  1527.             {
  1528.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
  1529.                 renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
  1530.             }
  1531.             else
  1532.             {
  1533.                 renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1534.                 renderBlocks.aoBrightnessXYZPNP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ - 1, p_147808_4_ + 1);
  1535.             }
  1536.  
  1537.             if (!flag2 && !flag5)
  1538.             {
  1539.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
  1540.                 renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
  1541.             }
  1542.             else
  1543.             {
  1544.                 renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1).getAmbientOcclusionLightValue();
  1545.                 renderBlocks.aoBrightnessXYZPPN = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_ - 1);
  1546.             }
  1547.  
  1548.             if (!flag2 && !flag4)
  1549.             {
  1550.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
  1551.                 renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
  1552.             }
  1553.             else
  1554.             {
  1555.                 renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1).getAmbientOcclusionLightValue();
  1556.                 renderBlocks.aoBrightnessXYZPPP = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_, p_147808_3_ + 1, p_147808_4_ + 1);
  1557.             }
  1558.  
  1559.             if (renderBlocks.renderMaxX >= 1.0D)
  1560.             {
  1561.                 --p_147808_2_;
  1562.             }
  1563.  
  1564.             i1 = l;
  1565.  
  1566.             if (renderBlocks.renderMaxX >= 1.0D || !renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).isOpaqueCube())
  1567.             {
  1568.                 i1 = p_147808_1_.getMixedBrightnessForBlock(renderBlocks.blockAccess, p_147808_2_ + 1, p_147808_3_, p_147808_4_);
  1569.             }
  1570.  
  1571.             f7 = renderBlocks.blockAccess.getBlock(p_147808_2_ + 1, p_147808_3_, p_147808_4_).getAmbientOcclusionLightValue();
  1572.             f8 = (renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNP + f7 + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
  1573.             f9 = (renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXZPN + f7) / 4.0F;
  1574.             f10 = (renderBlocks.aoLightValueScratchXZPN + f7 + renderBlocks.aoLightValueScratchXYZPPN + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
  1575.             f11 = (f7 + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
  1576.             f3 = (float)((double)f8 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ + (double)f9 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ) + (double)f10 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ) + (double)f11 * renderBlocks.renderMinY * renderBlocks.renderMaxZ);
  1577.             f4 = (float)((double)f8 * (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ + (double)f9 * (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ) + (double)f10 * renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ) + (double)f11 * renderBlocks.renderMinY * renderBlocks.renderMinZ);
  1578.             f5 = (float)((double)f8 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ + (double)f9 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ) + (double)f10 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ) + (double)f11 * renderBlocks.renderMaxY * renderBlocks.renderMinZ);
  1579.             f6 = (float)((double)f8 * (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ + (double)f9 * (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ) + (double)f10 * renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ) + (double)f11 * renderBlocks.renderMaxY * renderBlocks.renderMaxZ);
  1580.             j1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXYZPNP, renderBlocks.aoBrightnessXZPP, i1);
  1581.             k1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZPP, renderBlocks.aoBrightnessXYPP, renderBlocks.aoBrightnessXYZPPP, i1);
  1582.             l1 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXZPN, renderBlocks.aoBrightnessXYZPPN, renderBlocks.aoBrightnessXYPP, i1);
  1583.             i2 = renderBlocks.getAoBrightness(renderBlocks.aoBrightnessXYZPNN, renderBlocks.aoBrightnessXYPN, renderBlocks.aoBrightnessXZPN, i1);
  1584.             renderBlocks.brightnessTopLeft = renderBlocks.mixAoBrightness(j1, i2, l1, k1, (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMaxZ, (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMaxZ), renderBlocks.renderMinY * (1.0D - renderBlocks.renderMaxZ), renderBlocks.renderMinY * renderBlocks.renderMaxZ);
  1585.             renderBlocks.brightnessBottomLeft = renderBlocks.mixAoBrightness(j1, i2, l1, k1, (1.0D - renderBlocks.renderMinY) * renderBlocks.renderMinZ, (1.0D - renderBlocks.renderMinY) * (1.0D - renderBlocks.renderMinZ), renderBlocks.renderMinY * (1.0D - renderBlocks.renderMinZ), renderBlocks.renderMinY * renderBlocks.renderMinZ);
  1586.             renderBlocks.brightnessBottomRight = renderBlocks.mixAoBrightness(j1, i2, l1, k1, (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMinZ, (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMinZ), renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMinZ), renderBlocks.renderMaxY * renderBlocks.renderMinZ);
  1587.             renderBlocks.brightnessTopRight = renderBlocks.mixAoBrightness(j1, i2, l1, k1, (1.0D - renderBlocks.renderMaxY) * renderBlocks.renderMaxZ, (1.0D - renderBlocks.renderMaxY) * (1.0D - renderBlocks.renderMaxZ), renderBlocks.renderMaxY * (1.0D - renderBlocks.renderMaxZ), renderBlocks.renderMaxY * renderBlocks.renderMaxZ);
  1588.  
  1589.             if (flag1)
  1590.             {
  1591.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = p_147808_5_ * 0.6F;
  1592.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = p_147808_6_ * 0.6F;
  1593.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = p_147808_7_ * 0.6F;
  1594.             }
  1595.             else
  1596.             {
  1597.                 renderBlocks.colorRedTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorRedTopRight = 0.6F;
  1598.                 renderBlocks.colorGreenTopLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorGreenBottomRight = renderBlocks.colorGreenTopRight = 0.6F;
  1599.                 renderBlocks.colorBlueTopLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorBlueBottomRight = renderBlocks.colorBlueTopRight = 0.6F;
  1600.             }
  1601.  
  1602.             renderBlocks.colorRedTopLeft *= f3;
  1603.             renderBlocks.colorGreenTopLeft *= f3;
  1604.             renderBlocks.colorBlueTopLeft *= f3;
  1605.             renderBlocks.colorRedBottomLeft *= f4;
  1606.             renderBlocks.colorGreenBottomLeft *= f4;
  1607.             renderBlocks.colorBlueBottomLeft *= f4;
  1608.             renderBlocks.colorRedBottomRight *= f5;
  1609.             renderBlocks.colorGreenBottomRight *= f5;
  1610.             renderBlocks.colorBlueBottomRight *= f5;
  1611.             renderBlocks.colorRedTopRight *= f6;
  1612.             renderBlocks.colorGreenTopRight *= f6;
  1613.             renderBlocks.colorBlueTopRight *= f6;
  1614.             iicon = renderBlocks.getBlockIcon(p_147808_1_, renderBlocks.blockAccess, p_147808_2_, p_147808_3_, p_147808_4_, 5);
  1615.             renderFaceXPos(renderBlocks, p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, iicon);
  1616.  
  1617.             if (renderBlocks.fancyGrass && iicon.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture())
  1618.             {
  1619.                 renderBlocks.colorRedTopLeft *= p_147808_5_;
  1620.                 renderBlocks.colorRedBottomLeft *= p_147808_5_;
  1621.                 renderBlocks.colorRedBottomRight *= p_147808_5_;
  1622.                 renderBlocks.colorRedTopRight *= p_147808_5_;
  1623.                 renderBlocks.colorGreenTopLeft *= p_147808_6_;
  1624.                 renderBlocks.colorGreenBottomLeft *= p_147808_6_;
  1625.                 renderBlocks.colorGreenBottomRight *= p_147808_6_;
  1626.                 renderBlocks.colorGreenTopRight *= p_147808_6_;
  1627.                 renderBlocks.colorBlueTopLeft *= p_147808_7_;
  1628.                 renderBlocks.colorBlueBottomLeft *= p_147808_7_;
  1629.                 renderBlocks.colorBlueBottomRight *= p_147808_7_;
  1630.                 renderBlocks.colorBlueTopRight *= p_147808_7_;
  1631.                 renderFaceXPos(renderBlocks, p_147808_1_, (double)p_147808_2_, (double)p_147808_3_, (double)p_147808_4_, BlockGrass.getIconSideOverlay());
  1632.             }
  1633.  
  1634.             flag = true;
  1635.         }
  1636.  
  1637.         renderBlocks.enableAO = false;
  1638.         return flag;
  1639.     }
  1640.    
  1641.     public static void renderFaceZNeg(RenderBlocks renderBlocks, Block block, double x, double y, double z, IIcon icon)
  1642.     {
  1643.         renderBlocks.flipTexture = true;
  1644.         renderBlocks.renderFaceZNeg(block, x, y, z, icon);
  1645.         renderBlocks.flipTexture = false;
  1646.     }
  1647.    
  1648.     public static void renderFaceXPos(RenderBlocks renderBlocks, Block p_147764_1_, double p_147764_2_, double p_147764_4_, double p_147764_6_, IIcon p_147764_8_)
  1649.     {
  1650.         renderBlocks.flipTexture = true;
  1651.         renderBlocks.renderFaceXPos(p_147764_1_, p_147764_2_, p_147764_4_, p_147764_6_, p_147764_8_);
  1652.         renderBlocks.flipTexture = false;
  1653.     }
Advertisement
Add Comment
Please, Sign In to add comment