public void updateLightByType(EnumSkyBlock par1EnumSkyBlock, int par2, int par3, int par4)
    {
        if (this.doChunksNearChunkExist(par2, par3, par4, 17))
        {
            int var5 = 0;
            int var6 = 0;
            Profiler.startSection("getBrightness");
            int var7 = this.getSavedLightValue(par1EnumSkyBlock, par2, par3, par4);
            boolean var8 = false;
            int var10 = this.getBlockId(par2, par3, par4);
            int var11 = this.func_48462_d(par2, par3, par4);

            if (var11 == 0)
            {
                var11 = 1;
            }

            boolean var12 = false;
            int var25;

            if (par1EnumSkyBlock == EnumSkyBlock.Sky)
            {
                var25 = this.computeSkyLightValue(var7, par2, par3, par4, var10, var11);
            }
            else
            {
                var25 = this.computeBlockLightValue(var7, par2, par3, par4, var10, var11);
            }

            int var9;
            int var13;
            int var14;
            int var15;
            int var17;
            int var16;

            if (var25 > var7)
            {
                this.lightUpdateBlockList[var6++] = 133152;
            }
            else if (var25 < var7)
            {
                if (par1EnumSkyBlock != EnumSkyBlock.Block)
                {
                    ;
                }

                this.lightUpdateBlockList[var6++] = 133152 + (var7 << 18);

                while (var5 < var6)
                {
                    var9 = this.lightUpdateBlockList[var5++];
                    var10 = (var9 & 63) - 32 + par2;
                    var11 = (var9 >> 6 & 63) - 32 + par3;
                    var25 = (var9 >> 12 & 63) - 32 + par4;
                    var13 = var9 >> 18 & 15;
                    var14 = this.getSavedLightValue(par1EnumSkyBlock, var10, var11, var25);

                    if (var14 == var13)
                    {
                        this.setLightValue(par1EnumSkyBlock, var10, var11, var25, 0);

                        if (var13 > 0)
                        {
                            var15 = var10 - par2;
                            var16 = var11 - par3;
                            var17 = var25 - par4;

                            if (var15 < 0)
                            {
                                var15 = -var15;
                            }

                            if (var16 < 0)
                            {
                                var16 = -var16;
                            }

                            if (var17 < 0)
                            {
                                var17 = -var17;
                            }

                            if (var15 + var16 + var17 < 17)
                            {
                                for (int var18 = 0; var18 < 6; ++var18)
                                {
                                    int var19 = var18 % 2 * 2 - 1;
                                    int var20 = var10 + var18 / 2 % 3 / 2 * var19;
                                    int var21 = var11 + (var18 / 2 + 1) % 3 / 2 * var19;
                                    int var22 = var25 + (var18 / 2 + 2) % 3 / 2 * var19;
                                    var14 = this.getSavedLightValue(par1EnumSkyBlock, var20, var21, var22);
                                    int var23 = Block.lightOpacity[this.getBlockId(var20, var21, var22)];

                                    if (var23 == 0)
                                    {
                                        var23 = 1;
                                    }

                                    if (var14 == var13 - var23 && var6 < this.lightUpdateBlockList.length)
                                    {
                                        this.lightUpdateBlockList[var6++] = var20 - par2 + 32 + (var21 - par3 + 32 << 6) + (var22 - par4 + 32 << 12) + (var13 - var23 << 18);
                                    }
                                }
                            }
                        }
                    }
                }

                var5 = 0;
            }

            Profiler.endSection();
            Profiler.startSection("tcp < tcc");

            while (var5 < var6)
            {
                var7 = this.lightUpdateBlockList[var5++];
                int var24 = (var7 & 63) - 32 + par2;
                var9 = (var7 >> 6 & 63) - 32 + par3;
                var10 = (var7 >> 12 & 63) - 32 + par4;
                var11 = this.getSavedLightValue(par1EnumSkyBlock, var24, var9, var10);
                var25 = this.getBlockId(var24, var9, var10);
                var13 = Block.lightOpacity[var25];

                if (var13 == 0)
                {
                    var13 = 1;
                }

                boolean var26 = false;

                if (par1EnumSkyBlock == EnumSkyBlock.Sky)
                {
                    var14 = this.computeSkyLightValue(var11, var24, var9, var10, var25, var13);
                }
                else
                {
                    var14 = this.computeBlockLightValue(var11, var24, var9, var10, var25, var13);
                }

                if (var14 != var11)
                {
                    this.setLightValue(par1EnumSkyBlock, var24, var9, var10, var14);

                    if (var14 > var11)
                    {
                        var15 = var24 - par2;
                        var16 = var9 - par3;
                        var17 = var10 - par4;

                        if (var15 < 0)
                        {
                            var15 = -var15;
                        }

                        if (var16 < 0)
                        {
                            var16 = -var16;
                        }

                        if (var17 < 0)
                        {
                            var17 = -var17;
                        }

                        if (var15 + var16 + var17 < 17 && var6 < this.lightUpdateBlockList.length - 6)
                        {
                            if (this.getSavedLightValue(par1EnumSkyBlock, var24 - 1, var9, var10) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 - 1 - par2 + 32 + (var9 - par3 + 32 << 6) + (var10 - par4 + 32 << 12);
                            }

                            if (this.getSavedLightValue(par1EnumSkyBlock, var24 + 1, var9, var10) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 + 1 - par2 + 32 + (var9 - par3 + 32 << 6) + (var10 - par4 + 32 << 12);
                            }

                            if (this.getSavedLightValue(par1EnumSkyBlock, var24, var9 - 1, var10) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 - par2 + 32 + (var9 - 1 - par3 + 32 << 6) + (var10 - par4 + 32 << 12);
                            }

                            if (this.getSavedLightValue(par1EnumSkyBlock, var24, var9 + 1, var10) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 - par2 + 32 + (var9 + 1 - par3 + 32 << 6) + (var10 - par4 + 32 << 12);
                            }

                            if (this.getSavedLightValue(par1EnumSkyBlock, var24, var9, var10 - 1) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 - par2 + 32 + (var9 - par3 + 32 << 6) + (var10 - 1 - par4 + 32 << 12);
                            }

                            if (this.getSavedLightValue(par1EnumSkyBlock, var24, var9, var10 + 1) < var14)
                            {
                                this.lightUpdateBlockList[var6++] = var24 - par2 + 32 + (var9 - par3 + 32 << 6) + (var10 + 1 - par4 + 32 << 12);
                            }
                        }
                    }
                }
            }

            Profiler.endSection();
        }
    }