001 package net.minecraft.world.gen.feature;
002
003 import java.util.Random;
004 import net.minecraft.world.World;
005
006 public 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 }