    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    }