001package net.minecraftforge.event.terraingen;
002
003import java.util.Random;
004
005import net.minecraft.world.World;
006import net.minecraftforge.event.*;
007
008public class DecorateBiomeEvent extends Event
009{
010    public final World world;
011    public final Random rand;
012    public final int chunkX;
013    public final int chunkZ;
014    
015    public DecorateBiomeEvent(World world, Random rand, int worldX, int worldZ)
016    {
017        this.world = world;
018        this.rand = rand;
019        this.chunkX = worldX;
020        this.chunkZ = worldZ;
021    }
022    
023    public static class Pre extends DecorateBiomeEvent
024    {
025        public Pre(World world, Random rand, int worldX, int worldZ)
026        {
027            super(world, rand, worldX, worldZ);
028        }
029    }
030    
031    public static class Post extends DecorateBiomeEvent
032    {
033        public Post(World world, Random rand, int worldX, int worldZ)
034        {
035            super(world, rand, worldX, worldZ);
036        }
037    }
038
039    /**
040     * This event is fired when a chunk is decorated with a biome feature.
041     * 
042     * You can set the result to DENY to prevent the default biome decoration.
043     */
044    @HasResult
045    public static class Decorate extends DecorateBiomeEvent
046    {
047        /** Use CUSTOM to filter custom event types
048         */
049        public static enum EventType { BIG_SHROOM, CACTUS, CLAY, DEAD_BUSH, LILYPAD, FLOWERS, GRASS, LAKE, PUMPKIN, REED, SAND, SAND_PASS2, SHROOM, TREE, CUSTOM }
050        
051        public final EventType type;
052        
053        public Decorate(World world, Random rand, int worldX, int worldZ, EventType type)
054        {
055            super(world, rand, worldX, worldZ);
056            this.type = type;
057        }
058    }
059}