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