001    package net.minecraft.world.gen.feature;
002    
003    import java.util.Random;
004    import net.minecraft.block.Block;
005    import net.minecraft.world.World;
006    
007    public class WorldGenTallGrass extends WorldGenerator
008    {
009        /** Stores ID for WorldGenTallGrass */
010        private int tallGrassID;
011        private int tallGrassMetadata;
012    
013        public WorldGenTallGrass(int par1, int par2)
014        {
015            this.tallGrassID = par1;
016            this.tallGrassMetadata = par2;
017        }
018    
019        public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
020        {
021            int var11;
022    
023            Block block = null;
024            do 
025            {
026                block = Block.blocksList[par1World.getBlockId(par3,  par4, par5)];
027                if (block != null && !block.isLeaves(par1World, par3, par4, par5))
028                {
029                    break;
030                }
031                par4--;
032            } while (par4 > 0);
033    
034            for (int var7 = 0; var7 < 128; ++var7)
035            {
036                int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8);
037                int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4);
038                int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8);
039    
040                if (par1World.isAirBlock(var8, var9, var10) && Block.blocksList[this.tallGrassID].canBlockStay(par1World, var8, var9, var10))
041                {
042                    par1World.setBlockAndMetadata(var8, var9, var10, this.tallGrassID, this.tallGrassMetadata);
043                }
044            }
045    
046            return true;
047        }
048    }