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 WorldGenLiquids extends WorldGenerator
008    {
009        /** The ID of the liquid block used in this liquid generator. */
010        private int liquidBlockId;
011    
012        public WorldGenLiquids(int par1)
013        {
014            this.liquidBlockId = par1;
015        }
016    
017        public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
018        {
019            if (par1World.getBlockId(par3, par4 + 1, par5) != Block.stone.blockID)
020            {
021                return false;
022            }
023            else if (par1World.getBlockId(par3, par4 - 1, par5) != Block.stone.blockID)
024            {
025                return false;
026            }
027            else if (par1World.getBlockId(par3, par4, par5) != 0 && par1World.getBlockId(par3, par4, par5) != Block.stone.blockID)
028            {
029                return false;
030            }
031            else
032            {
033                int var6 = 0;
034    
035                if (par1World.getBlockId(par3 - 1, par4, par5) == Block.stone.blockID)
036                {
037                    ++var6;
038                }
039    
040                if (par1World.getBlockId(par3 + 1, par4, par5) == Block.stone.blockID)
041                {
042                    ++var6;
043                }
044    
045                if (par1World.getBlockId(par3, par4, par5 - 1) == Block.stone.blockID)
046                {
047                    ++var6;
048                }
049    
050                if (par1World.getBlockId(par3, par4, par5 + 1) == Block.stone.blockID)
051                {
052                    ++var6;
053                }
054    
055                int var7 = 0;
056    
057                if (par1World.isAirBlock(par3 - 1, par4, par5))
058                {
059                    ++var7;
060                }
061    
062                if (par1World.isAirBlock(par3 + 1, par4, par5))
063                {
064                    ++var7;
065                }
066    
067                if (par1World.isAirBlock(par3, par4, par5 - 1))
068                {
069                    ++var7;
070                }
071    
072                if (par1World.isAirBlock(par3, par4, par5 + 1))
073                {
074                    ++var7;
075                }
076    
077                if (var6 == 3 && var7 == 1)
078                {
079                    par1World.setBlockWithNotify(par3, par4, par5, this.liquidBlockId);
080                    par1World.scheduledUpdatesAreImmediate = true;
081                    Block.blocksList[this.liquidBlockId].updateTick(par1World, par3, par4, par5, par2Random);
082                    par1World.scheduledUpdatesAreImmediate = false;
083                }
084    
085                return true;
086            }
087        }
088    }