001    package net.minecraftforge.event;
002    
003    import net.minecraft.block.Block;
004    import net.minecraft.entity.player.EntityPlayer;
005    import net.minecraft.item.ItemStack;
006    import net.minecraftforge.common.MinecraftForge;
007    import net.minecraftforge.event.entity.player.*;
008    import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
009    
010    public class ForgeEventFactory
011    {
012        public static boolean doPlayerHarvestCheck(EntityPlayer player, Block block, boolean success)
013        {
014            PlayerEvent.HarvestCheck event = new PlayerEvent.HarvestCheck(player, block, success);
015            MinecraftForge.EVENT_BUS.post(event);
016            return event.success;
017        }
018    
019        public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original)
020        {
021            PlayerEvent.BreakSpeed event = new PlayerEvent.BreakSpeed(player, block, metadata, original);
022            return (MinecraftForge.EVENT_BUS.post(event) ? -1 : event.newSpeed);
023        }
024    
025        public static PlayerInteractEvent onPlayerInteract(EntityPlayer player, Action action, int x, int y, int z, int face)
026        {
027            PlayerInteractEvent event = new PlayerInteractEvent(player, action, x, y, z, face);
028            MinecraftForge.EVENT_BUS.post(event);
029            return event;
030        }
031    
032        public static void onPlayerDestroyItem(EntityPlayer player, ItemStack stack)
033        {
034            MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, stack));
035        }
036    }