001    package net.minecraft.src;
002    
003    import java.util.Random;
004    
005    public class WorldGenDesertWells extends WorldGenerator
006    {
007        public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
008        {
009            while (par1World.isAirBlock(par3, par4, par5) && par4 > 2)
010            {
011                --par4;
012            }
013    
014            int var6 = par1World.getBlockId(par3, par4, par5);
015    
016            if (var6 != Block.sand.blockID)
017            {
018                return false;
019            }
020            else
021            {
022                int var7;
023                int var8;
024    
025                for (var7 = -2; var7 <= 2; ++var7)
026                {
027                    for (var8 = -2; var8 <= 2; ++var8)
028                    {
029                        if (par1World.isAirBlock(par3 + var7, par4 - 1, par5 + var8) && par1World.isAirBlock(par3 + var7, par4 - 2, par5 + var8))
030                        {
031                            return false;
032                        }
033                    }
034                }
035    
036                for (var7 = -1; var7 <= 0; ++var7)
037                {
038                    for (var8 = -2; var8 <= 2; ++var8)
039                    {
040                        for (int var9 = -2; var9 <= 2; ++var9)
041                        {
042                            par1World.setBlock(par3 + var8, par4 + var7, par5 + var9, Block.sandStone.blockID);
043                        }
044                    }
045                }
046    
047                par1World.setBlock(par3, par4, par5, Block.waterMoving.blockID);
048                par1World.setBlock(par3 - 1, par4, par5, Block.waterMoving.blockID);
049                par1World.setBlock(par3 + 1, par4, par5, Block.waterMoving.blockID);
050                par1World.setBlock(par3, par4, par5 - 1, Block.waterMoving.blockID);
051                par1World.setBlock(par3, par4, par5 + 1, Block.waterMoving.blockID);
052    
053                for (var7 = -2; var7 <= 2; ++var7)
054                {
055                    for (var8 = -2; var8 <= 2; ++var8)
056                    {
057                        if (var7 == -2 || var7 == 2 || var8 == -2 || var8 == 2)
058                        {
059                            par1World.setBlock(par3 + var7, par4 + 1, par5 + var8, Block.sandStone.blockID);
060                        }
061                    }
062                }
063    
064                par1World.setBlockAndMetadata(par3 + 2, par4 + 1, par5, Block.stoneSingleSlab.blockID, 1);
065                par1World.setBlockAndMetadata(par3 - 2, par4 + 1, par5, Block.stoneSingleSlab.blockID, 1);
066                par1World.setBlockAndMetadata(par3, par4 + 1, par5 + 2, Block.stoneSingleSlab.blockID, 1);
067                par1World.setBlockAndMetadata(par3, par4 + 1, par5 - 2, Block.stoneSingleSlab.blockID, 1);
068    
069                for (var7 = -1; var7 <= 1; ++var7)
070                {
071                    for (var8 = -1; var8 <= 1; ++var8)
072                    {
073                        if (var7 == 0 && var8 == 0)
074                        {
075                            par1World.setBlock(par3 + var7, par4 + 4, par5 + var8, Block.sandStone.blockID);
076                        }
077                        else
078                        {
079                            par1World.setBlockAndMetadata(par3 + var7, par4 + 4, par5 + var8, Block.stoneSingleSlab.blockID, 1);
080                        }
081                    }
082                }
083    
084                for (var7 = 1; var7 <= 3; ++var7)
085                {
086                    par1World.setBlock(par3 - 1, par4 + var7, par5 - 1, Block.sandStone.blockID);
087                    par1World.setBlock(par3 - 1, par4 + var7, par5 + 1, Block.sandStone.blockID);
088                    par1World.setBlock(par3 + 1, par4 + var7, par5 - 1, Block.sandStone.blockID);
089                    par1World.setBlock(par3 + 1, par4 + var7, par5 + 1, Block.sandStone.blockID);
090                }
091    
092                return true;
093            }
094        }
095    }