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}