001    package net.minecraft.src;
002    
003    import java.util.Random;
004    
005    public abstract class WorldGenerator
006    {
007        /**
008         * Sets wither or not the generator should notify blocks of blocks it changes. When the world is first generated,
009         * this is false, when saplings grow, this is true.
010         */
011        private final boolean doBlockNotify;
012        private int field_82631_b = 1;
013    
014        public WorldGenerator()
015        {
016            this.doBlockNotify = false;
017        }
018    
019        public WorldGenerator(boolean par1)
020        {
021            this.doBlockNotify = par1;
022        }
023    
024        public abstract boolean generate(World var1, Random var2, int var3, int var4, int var5);
025    
026        /**
027         * Rescales the generator settings, only used in WorldGenBigTree
028         */
029        public void setScale(double par1, double par3, double par5) {}
030    
031        /**
032         * Sets the block without metadata in the world, notifying neighbors if enabled.
033         */
034        protected void setBlock(World par1World, int par2, int par3, int par4, int par5)
035        {
036            this.setBlockAndMetadata(par1World, par2, par3, par4, par5, 0);
037        }
038    
039        /**
040         * Sets the block in the world, notifying neighbors if enabled.
041         */
042        protected void setBlockAndMetadata(World par1World, int par2, int par3, int par4, int par5, int par6)
043        {
044            if (this.doBlockNotify)
045            {
046                par1World.setBlockAndMetadataWithNotify(par2, par3, par4, par5, par6);
047            }
048            else
049            {
050                par1World.setBlockAndMetadata(par2, par3, par4, par5, par6);
051            }
052        }
053    }