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 }