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 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 world, Random random, int i, int j, int k); 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, 3); 047 } 048 else 049 { 050 par1World.setBlockAndMetadataWithNotify(par2, par3, par4, par5, par6, 2); 051 } 052 } 053}