001    package net.minecraft.src;
002    
003    import java.util.Random;
004    
005    public class WorldGeneratorBonusChest extends WorldGenerator
006    {
007        private final WeightedRandomChestContent[] field_76546_a;
008        private final int field_76545_b;
009    
010        public WorldGeneratorBonusChest(WeightedRandomChestContent[] par1ArrayOfWeightedRandomChestContent, int par2)
011        {
012            this.field_76546_a = par1ArrayOfWeightedRandomChestContent;
013            this.field_76545_b = par2;
014        }
015    
016        public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
017        {
018            int var12;
019    
020            for (boolean var6 = false; ((var12 = par1World.getBlockId(par3, par4, par5)) == 0 || var12 == Block.leaves.blockID) && par4 > 1; --par4)
021            {
022                ;
023            }
024    
025            if (par4 < 1)
026            {
027                return false;
028            }
029            else
030            {
031                ++par4;
032    
033                for (int var7 = 0; var7 < 4; ++var7)
034                {
035                    int var8 = par3 + par2Random.nextInt(4) - par2Random.nextInt(4);
036                    int var9 = par4 + par2Random.nextInt(3) - par2Random.nextInt(3);
037                    int var10 = par5 + par2Random.nextInt(4) - par2Random.nextInt(4);
038    
039                    if (par1World.isAirBlock(var8, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8, var9 - 1, var10))
040                    {
041                        par1World.setBlockWithNotify(var8, var9, var10, Block.chest.blockID);
042                        TileEntityChest var11 = (TileEntityChest)par1World.getBlockTileEntity(var8, var9, var10);
043    
044                        if (var11 != null && var11 != null)
045                        {
046                            WeightedRandomChestContent.func_76293_a(par2Random, this.field_76546_a, var11, this.field_76545_b);
047                        }
048    
049                        if (par1World.isAirBlock(var8 - 1, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10))
050                        {
051                            par1World.setBlockWithNotify(var8 - 1, var9, var10, Block.torchWood.blockID);
052                        }
053    
054                        if (par1World.isAirBlock(var8 + 1, var9, var10) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10))
055                        {
056                            par1World.setBlockWithNotify(var8 + 1, var9, var10, Block.torchWood.blockID);
057                        }
058    
059                        if (par1World.isAirBlock(var8, var9, var10 - 1) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10))
060                        {
061                            par1World.setBlockWithNotify(var8, var9, var10 - 1, Block.torchWood.blockID);
062                        }
063    
064                        if (par1World.isAirBlock(var8, var9, var10 + 1) && par1World.doesBlockHaveSolidTopSurface(var8 - 1, var9 - 1, var10))
065                        {
066                            par1World.setBlockWithNotify(var8, var9, var10 + 1, Block.torchWood.blockID);
067                        }
068    
069                        return true;
070                    }
071                }
072    
073                return false;
074            }
075        }
076    }