001package net.minecraft.world.gen.feature;
002
003import java.util.Random;
004import net.minecraft.block.Block;
005import net.minecraft.world.World;
006
007public 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 l = 0;
034
035            if (par1World.getBlockId(par3 - 1, par4, par5) == Block.stone.blockID)
036            {
037                ++l;
038            }
039
040            if (par1World.getBlockId(par3 + 1, par4, par5) == Block.stone.blockID)
041            {
042                ++l;
043            }
044
045            if (par1World.getBlockId(par3, par4, par5 - 1) == Block.stone.blockID)
046            {
047                ++l;
048            }
049
050            if (par1World.getBlockId(par3, par4, par5 + 1) == Block.stone.blockID)
051            {
052                ++l;
053            }
054
055            int i1 = 0;
056
057            if (par1World.isAirBlock(par3 - 1, par4, par5))
058            {
059                ++i1;
060            }
061
062            if (par1World.isAirBlock(par3 + 1, par4, par5))
063            {
064                ++i1;
065            }
066
067            if (par1World.isAirBlock(par3, par4, par5 - 1))
068            {
069                ++i1;
070            }
071
072            if (par1World.isAirBlock(par3, par4, par5 + 1))
073            {
074                ++i1;
075            }
076
077            if (l == 3 && i1 == 1)
078            {
079                par1World.setBlockAndMetadataWithNotify(par3, par4, par5, this.liquidBlockId, 0, 2);
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}