001 package net.minecraftforge.event;
002
003 import net.minecraft.block.Block;
004 import net.minecraft.entity.EntityLiving;
005 import net.minecraft.entity.player.EntityPlayer;
006 import net.minecraft.item.ItemStack;
007 import net.minecraft.world.World;
008 import net.minecraftforge.common.MinecraftForge;
009 import net.minecraftforge.event.Event.Result;
010 import net.minecraftforge.event.entity.living.LivingSpawnEvent;
011 import net.minecraftforge.event.entity.living.LivingSpecialSpawnEvent;
012 import net.minecraftforge.event.entity.player.*;
013 import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
014
015 @SuppressWarnings("deprecation")
016 public class ForgeEventFactory
017 {
018 public static boolean doPlayerHarvestCheck(EntityPlayer player, Block block, boolean success)
019 {
020 PlayerEvent.HarvestCheck event = new PlayerEvent.HarvestCheck(player, block, success);
021 MinecraftForge.EVENT_BUS.post(event);
022 return event.success;
023 }
024
025 public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original)
026 {
027 PlayerEvent.BreakSpeed event = new PlayerEvent.BreakSpeed(player, block, metadata, original);
028 return (MinecraftForge.EVENT_BUS.post(event) ? -1 : event.newSpeed);
029 }
030
031 public static PlayerInteractEvent onPlayerInteract(EntityPlayer player, Action action, int x, int y, int z, int face)
032 {
033 PlayerInteractEvent event = new PlayerInteractEvent(player, action, x, y, z, face);
034 MinecraftForge.EVENT_BUS.post(event);
035 return event;
036 }
037
038 public static void onPlayerDestroyItem(EntityPlayer player, ItemStack stack)
039 {
040 MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, stack));
041 }
042
043 public static Result canEntitySpawn(EntityLiving entity, World world, float x, float y, float z)
044 {
045 LivingSpawnEvent.CheckSpawn event = new LivingSpawnEvent.CheckSpawn(entity, world, x, y, z);
046 MinecraftForge.EVENT_BUS.post(event);
047 return event.getResult();
048 }
049
050 public static boolean doSpecialSpawn(EntityLiving entity, World world, float x, float y, float z)
051 {
052 boolean result = MinecraftForge.EVENT_BUS.post(new LivingSpecialSpawnEvent(entity, world, x, y, z));
053 LivingSpawnEvent.SpecialSpawn nEvent = new LivingSpawnEvent.SpecialSpawn(entity, world, x, y, z);
054
055 if (result) //For the time being, copy the canceled state from the old legacy event
056 { // Remove when we remove LivingSpecialSpawnEvent.
057 nEvent.setCanceled(true);
058 }
059
060 return MinecraftForge.EVENT_BUS.post(nEvent);
061 }
062 }