001package net.minecraftforge.event.terraingen;
002
003import net.minecraft.world.biome.BiomeGenBase;
004import net.minecraft.world.chunk.IChunkProvider;
005import net.minecraftforge.event.*;
006
007public class ChunkProviderEvent extends Event
008{
009
010    public final IChunkProvider chunkProvider;
011    
012    public ChunkProviderEvent(IChunkProvider chunkProvider)
013    {
014        this.chunkProvider = chunkProvider;
015    }
016    
017    /**
018     * This event is fired when a chunks blocks are replaced by a biomes top and
019     * filler blocks.
020     * 
021     * You can set the result to DENY to prevent the default replacement.
022     */
023    @HasResult
024    public static class ReplaceBiomeBlocks extends ChunkProviderEvent 
025    {
026        public final int chunkX;
027        public final int chunkZ;
028        public final byte[] blockArray;
029        public final BiomeGenBase[] biomeArray;
030        
031        public ReplaceBiomeBlocks(IChunkProvider chunkProvider, int chunkX, int chunkZ, byte[] blockArray, BiomeGenBase[] biomeArray)
032        {
033            super(chunkProvider);
034            this.chunkX = chunkX;
035            this.chunkZ = chunkZ;
036            this.blockArray = blockArray;
037            this.biomeArray = biomeArray;
038        }
039       
040    }
041    
042    /**
043     * This event is fired before a chunks terrain noise field is initialized.
044     * 
045     * You can set the result to DENY to substitute your own noise field.
046     */
047    @HasResult
048    public static class InitNoiseField extends ChunkProviderEvent 
049    {
050        public double[] noisefield;
051        public final int posX;
052        public final int posY;
053        public final int posZ;
054        public final int sizeX;
055        public final int sizeY;
056        public final int sizeZ;
057        
058        public InitNoiseField(IChunkProvider chunkProvider, double[] noisefield, int posX, int posY, int posZ, int sizeX, int sizeY, int sizeZ)
059        {
060            super(chunkProvider);
061            this.noisefield = noisefield;
062            this.posX = posX;
063            this.posY = posY;
064            this.posZ = posZ;
065            this.sizeX = sizeX;
066            this.sizeY = sizeY;
067            this.sizeZ = sizeZ;
068        }
069       
070    }
071}