001    package net.minecraftforge.event.entity.player;
002    
003    import net.minecraft.entity.player.EntityPlayer;
004    import net.minecraft.world.World;
005    import net.minecraftforge.event.Cancelable;
006    import net.minecraftforge.event.Event;
007    import static net.minecraftforge.event.Event.Result;
008    import static net.minecraftforge.event.Event.Result.*;
009    
010    @Cancelable
011    public class PlayerInteractEvent extends PlayerEvent
012    {
013        public static enum Action
014        {
015            RIGHT_CLICK_AIR,
016            RIGHT_CLICK_BLOCK,
017            LEFT_CLICK_BLOCK
018        }
019        
020        public final Action action;
021        public final int x;
022        public final int y;
023        public final int z;
024        public final int face;
025        
026        public Result useBlock = DEFAULT;
027        public Result useItem = DEFAULT;
028        
029        public PlayerInteractEvent(EntityPlayer player, Action action, int x, int y, int z, int face)
030        {
031            super(player);
032            this.action = action;
033            this.x = x;
034            this.y = y;
035            this.z = z;
036            this.face = face;
037            if (face == -1) useBlock = DENY;
038        }
039        
040        @Override
041        public void setCanceled(boolean cancel)
042        {
043            super.setCanceled(cancel);
044            useBlock = (cancel ? DENY : useBlock == DENY ? DEFAULT : useBlock);
045            useItem = (cancel ? DENY : useItem == DENY ? DEFAULT : useItem);
046        }
047    }