001 package net.minecraftforge.event.terraingen;
002
003 import java.util.Random;
004
005 import net.minecraft.world.World;
006 import net.minecraft.world.chunk.IChunkProvider;
007 import net.minecraftforge.event.world.*;
008
009 public class PopulateChunkEvent extends ChunkProviderEvent
010 {
011 public final World world;
012 public final Random rand;
013 public final int chunkX;
014 public final int chunkZ;
015 public final boolean hasVillageGenerated;
016
017 public PopulateChunkEvent(IChunkProvider chunkProvider, World world, Random rand, int chunkX, int chunkZ, boolean hasVillageGenerated)
018 {
019 super(chunkProvider);
020 this.world = world;
021 this.rand = rand;
022 this.chunkX = chunkX;
023 this.chunkZ = chunkZ;
024 this.hasVillageGenerated = hasVillageGenerated;
025 }
026
027 public static class Pre extends PopulateChunkEvent
028 {
029 public Pre(IChunkProvider chunkProvider, World world, Random rand, int chunkX, int chunkZ, boolean hasVillageGenerated)
030 {
031 super(chunkProvider, world, rand, chunkX, chunkZ, hasVillageGenerated);
032 }
033 }
034
035 public static class Post extends PopulateChunkEvent
036 {
037 public Post(IChunkProvider chunkProvider, World world, Random rand, int chunkX, int chunkZ, boolean hasVillageGenerated)
038 {
039 super(chunkProvider, world, rand, chunkX, chunkZ, hasVillageGenerated);
040 }
041 }
042
043 /**
044 * This event is fired when a chunk is populated with a terrain feature.
045 *
046 * You can set the result to DENY to prevent the default generation
047 * of a terrain feature.
048 */
049 @HasResult
050 public static class Populate extends PopulateChunkEvent
051 {
052 /** Use CUSTOM to filter custom event types
053 */
054 public static enum EventType { DUNGEON, FIRE, GLOWSTONE, ICE, LAKE, LAVA, NETHER_LAVA, CUSTOM }
055
056 public final EventType type;
057
058 public Populate(IChunkProvider chunkProvider, World world, Random rand, int chunkX, int chunkZ, boolean hasVillageGenerated, EventType type)
059 {
060 super(chunkProvider, world, rand, chunkX, chunkZ, hasVillageGenerated);
061 this.type = type;
062 }
063 }
064 }