001package net.minecraftforge.event.terraingen;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.world.biome.BiomeDecorator;
006import net.minecraft.world.biome.BiomeGenBase;
007import net.minecraftforge.event.*;
008
009public class BiomeEvent extends Event
010{
011    public final BiomeGenBase biome;
012
013    public BiomeEvent(BiomeGenBase biome)
014    {
015        this.biome = biome;
016    }
017    
018    public static class CreateDecorator extends BiomeEvent
019    {
020        public final BiomeDecorator originalBiomeDecorator;
021        public BiomeDecorator newBiomeDecorator;
022        
023        public CreateDecorator(BiomeGenBase biome, BiomeDecorator original)
024        {
025            super(biome);
026            originalBiomeDecorator = original;
027            newBiomeDecorator = original;
028        }
029    }
030
031    public static class BlockReplacement extends BiomeEvent
032    {
033        public final int original;
034        public int replacement;
035
036        public BlockReplacement(BiomeGenBase biome, int original, int replacement)
037        {
038            super(biome);
039            this.original = original;
040            this.replacement = replacement;
041        }
042    }
043    
044
045    @SideOnly(Side.CLIENT)
046    public static class BiomeColor extends BiomeEvent
047    {
048        public final int originalColor;
049        public int newColor;
050        
051        public BiomeColor(BiomeGenBase biome, int original)
052        {
053            super(biome);
054            originalColor = original;
055            newColor = original;
056        }
057    }
058    
059    /**
060     * This event is fired when the village generator attempts to choose a block ID
061     * based on the village's biome.
062     * 
063     * You can set the result to DENY to prevent the default block ID selection.
064     */
065    @HasResult
066    public static class GetVillageBlockID extends BlockReplacement
067    {
068        public GetVillageBlockID(BiomeGenBase biome, int original, int replacement)
069        {
070            super(biome, original, replacement);
071        }
072    }
073    
074    /**
075     * This event is fired when the village generator attempts to choose a block
076     * metadata based on the village's biome.
077     * 
078     * You can set the result to DENY to prevent the default block metadata selection.
079     */
080    @HasResult
081    public static class GetVillageBlockMeta extends BlockReplacement
082    {
083        public GetVillageBlockMeta(BiomeGenBase biome, int original, int replacement)
084        {
085            super(biome, original, replacement);
086        }
087    }
088    
089    /**
090     * This event is fired when a biome is queried for its grass color. 
091     */
092
093    @SideOnly(Side.CLIENT)
094    public static class GetGrassColor extends BiomeColor
095    {
096        public GetGrassColor(BiomeGenBase biome, int original)
097        {
098            super(biome, original);
099        }
100    }
101    
102    /**
103     * This event is fired when a biome is queried for its grass color. 
104     */
105    @SideOnly(Side.CLIENT)
106    public static class GetFoliageColor extends BiomeColor
107    {
108        public GetFoliageColor(BiomeGenBase biome, int original)
109        {
110            super(biome, original);
111        }
112    }
113    
114    /**
115     * This event is fired when a biome is queried for its water color. 
116     */
117    @SideOnly(Side.CLIENT)
118    public static class GetWaterColor extends BiomeColor
119    {
120        public GetWaterColor(BiomeGenBase biome, int original)
121        {
122            super(biome, original);
123        }
124    }
125}