001    package net.minecraftforge.event.terraingen;
002    
003    import net.minecraft.world.biome.BiomeGenBase;
004    import net.minecraft.world.chunk.IChunkProvider;
005    import net.minecraftforge.event.*;
006    
007    public 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    }