    001    package net.minecraftforge.event.terraingen;
    002
    003    import java.util.Random;
    004
    005    import net.minecraft.world.World;
    006    import net.minecraft.world.gen.feature.WorldGenerator;
    007    import net.minecraftforge.event.*;
    008
    009    public class OreGenEvent extends Event
    010    {
    011        public final World world;
    012        public final Random rand;
    013        public final int worldX;
    014        public final int worldZ;
    015
    016        public OreGenEvent(World world, Random rand, int worldX, int worldZ)
    017        {
    018            this.world = world;
    019            this.rand = rand;
    020            this.worldX = worldX;
    021            this.worldZ = worldZ;
    022        }
    023
    024        public static class Pre extends OreGenEvent
    025        {
    026            public Pre(World world, Random rand, int worldX, int worldZ)
    027            {
    028                super(world, rand, worldX, worldZ);
    029            }
    030        }
    031
    032        public static class Post extends OreGenEvent
    033        {
    034            public Post(World world, Random rand, int worldX, int worldZ)
    035            {
    036                super(world, rand, worldX, worldZ);
    037            }
    038        }
    039
    040        /**
    041         * This event is fired when an ore is generated in a chunk.
    042         *
    043         * You can set the result to DENY to prevent the default ore generation.
    044         */
    045        @HasResult
    046        public static class GenerateMinable extends OreGenEvent
    047        {
    048            public static enum EventType { COAL, DIAMOND, DIRT, GOLD, GRAVEL, IRON, LAPIS, REDSTONE, CUSTOM }
    049
    050            public final EventType type;
    051            public final WorldGenerator generator;
    052
    053            public GenerateMinable(World world, Random rand, WorldGenerator generator, int worldX, int worldZ, EventType type)
    054            {
    055                super(world, rand, worldX, worldZ);
    056                this.generator = generator;
    057                this.type = type;
    058            }
    059        }
    060    }