    001package net.minecraftforge.event.world;
    002
    003import java.util.ArrayList;
    004import java.util.List;
    005
    006import net.minecraft.entity.EnumCreatureType;
    007import net.minecraft.world.World;
    008import net.minecraft.world.biome.SpawnListEntry;
    009import net.minecraftforge.event.Cancelable;
    010import net.minecraftforge.event.Event;
    011
    012public class WorldEvent extends Event
    013{
    014    public final World world;
    015
    016    public WorldEvent(World world)
    017    {
    018        this.world = world;
    019    }
    020
    021    public static class Load extends WorldEvent
    022    {
    023        public Load(World world) { super(world); }
    024    }
    025
    026    public static class Unload extends WorldEvent
    027    {
    028        public Unload(World world) { super(world); }
    029    }
    030
    031    public static class Save extends WorldEvent
    032    {
    033        public Save(World world) { super(world); }
    034    }
    035
    036    /**
    037     * Called by WorldServer to gather a list of all possible entities that can spawn at the specified location.
    038     * Canceling the event will result in a empty list, meaning no entity will be spawned.
    039     */
    040    @Cancelable
    041    public static class PotentialSpawns extends WorldEvent
    042    {
    043        public final EnumCreatureType type;
    044        public final int x;
    045        public final int y;
    046        public final int z;
    047        public final List<SpawnListEntry> list;
    048
    049        public PotentialSpawns(World world, EnumCreatureType type, int x, int y, int z, List oldList)
    050        {
    051            super(world);
    052            this.x = x;
    053            this.y = y;
    054            this.z = z;
    055            this.type = type;
    056            if (oldList != null)
    057            {
    058                this.list = (List<SpawnListEntry>)oldList;
    059            }
    060            else
    061            {
    062                this.list = new ArrayList<SpawnListEntry>();
    063            }
    064        }
    065    }
    066}