001    package net.minecraftforge.event.entity.living;
002    
003    import net.minecraft.entity.EntityLiving;
004    import net.minecraft.world.World;
005    import net.minecraftforge.event.Cancelable;
006    import net.minecraftforge.event.Event.HasResult;
007    
008    public class LivingSpawnEvent extends LivingEvent
009    {
010        public final World world;
011        public final float x;
012        public final float y;
013        public final float z;
014        
015        public LivingSpawnEvent(EntityLiving entity, World world, float x, float y, float z)
016        {
017            super(entity);
018            this.world = world;
019            this.x = x;
020            this.y = y;
021            this.z = z;
022        }
023    
024        /**
025         * Fires before mob spawn events.
026         * 
027         * Result is significant:
028         *    DEFAULT: use vanilla spawn rules
029         *    ALLOW:   allow the spawn
030         *    DENY:    deny the spawn
031         *
032         */
033        @HasResult
034        public static class CheckSpawn extends LivingSpawnEvent
035        {
036            public CheckSpawn(EntityLiving entity, World world, float x, float y, float z)
037            {
038                super(entity, world, x, y, z);
039            }
040        }
041    
042        @Cancelable
043        public static class SpecialSpawn extends LivingSpawnEvent
044        {
045            public SpecialSpawn(EntityLiving entity, World world, float x, float y, float z)
046            {
047                super(entity, world, x, y, z);
048            }
049        }
050    }