    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    }