    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}