Buggy code:
int z52 = world . getHeightValue ( j6 , k10 ) ; if ( ( z52 >= mintree ) && ( z52 <= maxtree ) ) { WorldGenerator worldgenerator ; if ( dis < 65.0 ) { worldgenerator = getRandomWorldGenForTrees ( rand , 2 ) ; } else if ( dis < 130.0 ) { worldgenerator = getRandomWorldGenForTrees ( rand , 1 ) ; } else { worldgenerator = getRandomWorldGenForTrees ( rand , 0 ) ; } worldgenerator . setScale ( 1.0 , 1.0 , 1.0 ) ; worldgenerator . generate ( world , rand , j6 , z52 , k10 ) ; } } for ( int yf = 0 ; yf < deco_flowerYellow ; ++ yf ) { int yf1 = ( var4 + ( rand . nextInt ( 16 ) ) ) + 8 ; int yf2 = rand . nextInt ( 128 ) ; int yf3 = ( var5 + ( rand . nextInt ( 16 ) ) ) + 8 ; new net . minecraft . world . gen . feature . WorldGenFlowers ( Blocks . yellow_flower ) . generate ( world , rand , yf1 , yf2 , yf3 ) ; } for ( int rf = 0 ; rf < deco_flowerRed ; ++ rf ) { int rf1 = ( var4 + ( rand . nextInt ( 16 ) ) ) + 8 ; int rf2 = rand . nextInt ( 128 ) ; int rf3 = ( var5 + ( rand . nextInt ( 16 ) ) ) + 8 ; new net . minecraft . world . gen . feature . WorldGenFlowers ( Blocks . red_flower ) . generate ( world , rand , rf1 , rf2 , rf3 ) ; } for ( int gr = 0 ; gr < deco_grass ; ++ gr ) { int gr1 = ( var4 + ( rand . nextInt ( 16 ) ) ) + 8 ; int gr2 = rand . nextInt ( 128 ) ; int gr3 = ( var5 + ( rand . nextInt ( 16 ) ) ) + 8 ; WorldGenerator grr = var6 . getRandomWorldGenForGrass ( rand ) ; grr . generate ( world , rand , gr1 , gr2 , gr3 ) ; } if ( ( rand . nextInt ( 4 ) ) == 0 ) { int nbm1 = ( var4 + ( rand . nextInt ( 16 ) ) ) + 8 ; int nbm2 = rand . nextInt ( 128 ) ; int nbm3 = ( var5 + ( rand . nextInt ( 16 ) ) ) + 8 ; new net . minecraft . world . gen . feature . WorldGenFlowers ( Blocks . brown_mushroom ) . generate ( world , rand , nbm1 , nbm2 , nbm3 ) ; } if ( ( rand . nextInt ( 8 ) ) == 0 ) { int nrm1 = ( var4 + ( rand . nextInt ( 16 ) ) ) + 8 ; int nrm2 = rand . nextInt ( 128 ) ; int nrm3 = ( var5 + ( rand . nextInt ( 16 ) ) ) + 8 ; new net . minecraft . world . gen . feature . WorldGenFlowers ( Blocks . red_mushroom ) . generate ( world , rand , nrm1 , nrm2 , nrm3 ) ; } if ( ( THEMEID ) == 4 ) { SpawnerAnimals . performWorldGenSpawning ( this . world , var6 , ( var4 + 8 ) , ( var5 + 8 ) , 16 , 16 , this . world . rand ) ; } int var7 = var4 + 8 ; int var8 = var5 + 8 ; for ( int var12 = 0 ; var12 < 16 ; ++ var12 ) { for ( int var13 = 0 ; var13 < 16 ; ++ var13 ) { int var14 = this . world . getPrecipitationHeight ( ( var7 + var12 ) , ( var8 + var13 ) ) ; if ( this . world . isBlockFreezable ( ( var12 + var7 ) , ( var14 - 1 ) , ( var13 + var8 ) ) ) { this . world . setBlock ( ( var12 + var7 ) , ( var14 - 1 ) , ( var13 + var8 ) , ice , 0 , 2 ) ; } Block b = world . getBlock ( ( var12 + var7 ) , ( var14 - 1 ) , ( var13 + var8 ) ) ; if ( ( ( this . world . func_147478_e ( ( var12 + var7 ) , var14 , ( var13 + var8 ) , false ) ) && ( b != ( Blocks . ice ) ) ) && ( b != ( Blocks . water ) ) ) { <START_BUG> this . world . setBlock ( ( var12 + var7 ) , var14 , ( var13 + var8 ) , snow , 0 , 2 ) ; <END_BUG> } } } EVENT_BUS . post ( new net . minecraftforge . event . terraingen . PopulateChunkEvent . Post ( par1IChunkProvider , world , rand , par2 , par3 , false ) ) ; BlockSand . fallInstantly = false ; } public WorldGenerator getRandomWorldGenForTrees ( Random par1Random , int distance ) { } public boolean saveChunks ( boolean par1 , IProgressUpdate par2IProgressUpdate ) { } public boolean unloadQueuedChunks ( ) { } public boolean unload100OldestChunks ( ) { } public boolean canSave ( ) { } public String makeString ( ) { } public List getPossibleCreatures ( EnumCreatureType par1EnumCreatureType , int par2 , int par3 , int par4 ) { } public ChunkPosition func_147416_a ( World par1World , String par2Str , int par3 , int par4 , int par5 ) { } public int getLoadedChunkCount ( ) { } public void saveExtraData ( ) { } public void recreateStructures ( int par1 , int par2 ) { } }

Fix:
this . world . setBlock ( ( var12 + var7 ) , var14 , ( var13 + var8 ) , snow_layer , 0 , 2 ) ;