From 325dae0d06bbce001d246884b3724f8df3d0eb65 Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 3 Mar 2016 19:20:28 +1100 Subject: SPIGOT-1608: Add a way to get the hand used in PlayerInteract*Events --- .../event/player/PlayerInteractAtEntityEvent.java | 9 +++++++-- .../bukkit/event/player/PlayerInteractEntityEvent.java | 16 ++++++++++++++++ .../org/bukkit/event/player/PlayerInteractEvent.java | 17 +++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java index 3293b115..15f9624a 100644 --- a/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java @@ -3,6 +3,7 @@ package org.bukkit.event.player; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.util.Vector; /** @@ -14,10 +15,14 @@ public class PlayerInteractAtEntityEvent extends PlayerInteractEntityEvent { private final Vector position; public PlayerInteractAtEntityEvent(Player who, Entity clickedEntity, Vector position) { - super(who, clickedEntity); + this(who, clickedEntity, position, EquipmentSlot.HAND); + } + + public PlayerInteractAtEntityEvent(Player who, Entity clickedEntity, Vector position, EquipmentSlot hand) { + super(who, clickedEntity, hand); this.position = position; } - + public Vector getClickedPosition() { return position.clone(); } diff --git a/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java index 935211df..94609579 100644 --- a/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java @@ -4,6 +4,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; +import org.bukkit.inventory.EquipmentSlot; /** * Represents an event that is called when a player right clicks an entity. @@ -12,10 +13,16 @@ public class PlayerInteractEntityEvent extends PlayerEvent implements Cancellabl private static final HandlerList handlers = new HandlerList(); protected Entity clickedEntity; boolean cancelled = false; + private EquipmentSlot hand; public PlayerInteractEntityEvent(final Player who, final Entity clickedEntity) { + this(who, clickedEntity, EquipmentSlot.HAND); + } + + public PlayerInteractEntityEvent(final Player who, final Entity clickedEntity, final EquipmentSlot hand) { super(who); this.clickedEntity = clickedEntity; + this.hand = hand; } public boolean isCancelled() { @@ -35,6 +42,15 @@ public class PlayerInteractEntityEvent extends PlayerEvent implements Cancellabl return this.clickedEntity; } + /** + * The hand used to perform this interaction. + * + * @return the hand used to interact + */ + public EquipmentSlot getHand() { + return hand; + } + @Override public HandlerList getHandlers() { return handlers; diff --git a/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java b/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java index b12382f4..818b4813 100644 --- a/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java @@ -8,6 +8,7 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.block.Action; +import org.bukkit.inventory.EquipmentSlot; /** * Called when a player interacts with an object or air. @@ -23,13 +24,19 @@ public class PlayerInteractEvent extends PlayerEvent implements Cancellable { protected BlockFace blockFace; private Result useClickedBlock; private Result useItemInHand; + private EquipmentSlot hand; public PlayerInteractEvent(final Player who, final Action action, final ItemStack item, final Block clickedBlock, final BlockFace clickedFace) { + this(who, action, item, clickedBlock, clickedFace, EquipmentSlot.HAND); + } + + public PlayerInteractEvent(final Player who, final Action action, final ItemStack item, final Block clickedBlock, final BlockFace clickedFace, final EquipmentSlot hand) { super(who); this.action = action; this.item = item; this.blockClicked = clickedBlock; this.blockFace = clickedFace; + this.hand = hand; useItemInHand = Result.DEFAULT; useClickedBlock = clickedBlock == null ? Result.DENY : Result.ALLOW; @@ -179,6 +186,16 @@ public class PlayerInteractEvent extends PlayerEvent implements Cancellable { this.useItemInHand = useItemInHand; } + /** + * The hand used to perform this interaction. May be null in the case of + * {@link Action#PHYSICAL}. + * + * @return the hand used to interact. May be null. + */ + public EquipmentSlot getHand() { + return hand; + } + @Override public HandlerList getHandlers() { return handlers; -- cgit v1.2.3